140 likes | 234 Views
HO 343 -- Session 14: Database Design Principles. EK BUNCHUA ek@alpha.tu.ac.th Room # 528 Thammasat Business School. การออกแบบฐานข้อมูล. ตอบคำถามต่อไปนี้ก่อน ต้องการเก็บข้อมูลอะไร? จะใช้กี่ตาราง? แต่ละตารางมีความสัมพันธ์กันอย่างไร?. ตัวอย่าง - ต้องการเก็บข้อมูลอะไร?.
E N D
HO 343 -- Session 14:Database Design Principles EK BUNCHUA ek@alpha.tu.ac.th Room # 528 Thammasat Business School
การออกแบบฐานข้อมูล ... ตอบคำถามต่อไปนี้ก่อน • ต้องการเก็บข้อมูลอะไร? • จะใช้กี่ตาราง? • แต่ละตารางมีความสัมพันธ์กันอย่างไร?
ตัวอย่าง - ต้องการเก็บข้อมูลอะไร? • ข้อมูลพื้นฐานของพนักงาน ได้แก่ ชื่อ ที่อยู่แผนกและตำแหน่งที่ทำงานในปัจจุบัน เงินเดือนปัจจุบัน ฯลฯ • ข้อมูลการทำงาน ได้แก่ วันที่เปลี่ยนแปลง การย้ายแผนกและเลื่อนตำแหน่งแต่ละครั้ง เงินเดือนที่ได้รับในแต่ละตำแหน่ง ฯลฯ
ตัวอย่าง - จะใช้กี่ตาราง? • ใช้เพียง 1 ตารางได้หรือไม่? • อ้าว! แล้วจะเก็บประวัติการทำงานอย่างไร? Table: EMPLOYEE ID 101 102 103 NAME TOM JACK YING CITY BANGKOK PHUKET BANGKOK DATE 01-01-95 11-07-95 01-07-99 TITLE MANAGER TYPIST SECRETARY SALARY 20,000 7,500 12,000
ตัวอย่าง - จะใช้กี่ตาราง? • ถ้าบันทึกข้อมูลต่อกันไป จะดีหรือไม่? • ไม่ควร เพราะเกิดความซ้ำซ้อนของข้อมูล • ไม่ควร เพราะข้อมูลที่ซ้ำซ้อนอาจขัดแย้งกัน Table: EMPLOYEE ID 101 101 101 102 102 103 NAME TOM TOM TOM JACK JARK YING CITY BANGKOK BANGKOK BAGKOK PHUKET PHUKIT BANGKOK DATE 01-01-95 16-10-97 05-08-98 11-07-95 01-09-97 01-07-99 TITLE SALESMAN SUPERVISOR MANAGER TYPIST TYPIST SECRETARY SALARY 8,000 10,000 20,000 6,000 7,500 12,000
ตัวอย่าง - จะใช้กี่ตาราง? • ถ้าใช้มากกว่า 1 ตาราง ดีกว่าจริงหรือ? • ดีกว่าแน่นอน เพราะข้อมูลไม่ซ้ำซ้อน Table: EMPLOYEE Table: JOB ID 101 102 103 NAME TOM JACK YING CITY BKK PHUKET BKK ID 101 101 101 102 102 103 DATE 01-01-95 16-10-97 05-08-98 11-07-95 01-09-97 01-07-99 TITLE SALES SUP MGR TYPIST TYPIST SECRT SALARY 8,000 10,000 20,000 6,000 7,500 12,000 FLAG S X C S C N
ตัวอย่าง - ความสัมพันธ์ของตาราง • ถ้าใช้ 2 ตาราง แล้วใครชื่ออะไร? • ไม่มีปัญหา เราสามารถอ้างอิงได้จากตารางEMPLOYEE Table: JOB ID 101 101 101 102 102 103 DATE 01-01-95 16-10-97 05-08-98 11-07-95 01-09-97 01-07-99 TITLE SALES SUP MGR TYPIST TYPIST SECRT SALARY 8,000 10,000 20,000 6,000 7,500 12,000 FLAG S X C S C N เพราะนี่คือ คุณสมบัติของ Relational Database
ตัวอย่าง - ความสัมพันธ์ของตาราง PARENT TABLE สงสัยว่า Flag มีไว้ทำไม? Table: EMPLOYEE ID 101 102 103 NAME TOM JACK YING CITY BKK PHUKET BKK CHILD TABLE Table: JOB ID 101 101 101 102 102 103 DATE 01-01-95 16-10-97 05-08-98 11-07-95 01-09-97 01-07-99 TITLE SALES SUP MGR TYPIST TYPIST SECRT SALARY 8,000 10,000 20,000 6,000 7,500 12,000 FLAG S X C S C N Primary Key Foreign Key
ฐานข้อมูลเชิงสัมพันธ์ ... • Relational Database • จัดเก็บข้อมูลในลักษณะตารางสองมิติแบ่งเป็นแถวและคอลัมน์ • การออกแบบฐานข้อมูลผ่านกระบวนการทำให้เป็นบรรทัดฐาน (Normalization)เพื่อลดความซ้ำซ้อนของข้อมูล
แนวคิดของฐานข้อมูลเชิงสัมพันธ์ ... • ข้อมูลในแต่ละเรคอร์ดจะต้องไม่ซ้ำกัน • ลำดับของเรคอร์ดไม่เป็นสาระสำคัญ • ลำดับของฟีลด์ไม่เป็นสาระสำคัญ • แต่ละฟีลด์เก็บข้อมูลได้ครั้งละ 1 ค่า • แต่ละฟีลด์ต้องเก็บข้อมูลประเภทเดียวกัน
คีย์หลัก (Primary Key) ... • เป็นค่าเอกลักษณ์ (Unique Identifier) ซึ่งจะต้องมีค่าไม่ซ้ำกัน • อาจประกอบด้วยหลายฟีลด์รวมกัน เรียกว่า คีย์ร่วม (Composite Key) • เป็นไปตามกฎ Entity Integrity Rule กล่าวคือ ไม่เป็นค่าว่าง (Null Value)
คีย์นอก (Foreign Key) ... • ใช้สำหรับอ้างอิงข้อมูลระหว่างตาราง • เป็นไปตามกฎReferential Integrity Rule กล่าวคือ Foreign Key จะต้องอ้างอิงไปยัง Primary Key ของอีกตารางหนึ่ง • เป็นค่าว่างได้หรือไม่นั้น ขึ้นอยู่กับข้อจำกัดหรือกฎเกณฑ์ในทางปฏิบัติของหน่วยงาน
Referential Integrity Options ... • Restricted Update & Restricted Delete • Cascade Update & Cascade Delete • Nullify Update & Nullify Delete • Default Update & Default Delete กฎเกณฑ์ข้างต้นจะมีผลกับค่าของคีย์นอกเมื่อมีการเปลี่ยนแปลงค่าของคีย์หลัก หรือ เมื่อมีการลบเรคอร์ดที่ค่าของคีย์หลักนั้นถูกอ้างอิง
Referential Diagram ... • ใช้แสดงรายละเอียดของตารางต่าง ๆ • รวมทั้งความสัมพันธ์ระหว่างตาราง • ความสัมพันธ์แบบหนึ่งต่อหนึ่ง (1:1) • ความสัมพันธ์แบบหนึ่งต่อกลุ่ม (1:n) • ความสัมพันธ์แบบกลุ่มต่อกลุ่ม (m:n)