บทที่ 4 รูปแบบฐานข้อมูลเชิงสัมพันธ์ The Relational model
The Relational Model คิดค้นโดย Dr. Edgar Frank Codd (E.F. Codd) รู้จักกันดีในบทความที่ชื่อ “A Relational Model of Data for Large Shared Data Banks” ในปี ค.ศ. 1970 เป็นรูปแบบฐานข้อมูลที่เข้าใจง่าย มีพื้นฐานมาจากทฤษฎีทางคณิตศาสตร์(ทฤษฎี Set) มีวัตถุประสงค์หลักเพื่อรักษาความอิสระของข้อมูล(Data Independence) มีระบบจัดการฐานข้อมูลเชิงสัมพันธ์(Relational Database Management System : RDBMS) ที่สนับสนุนมากมาย เช่น DB2 , Oracle , Informix , MS SQL Server , MySQL , Ingres , MS Access ฯลฯ มีภาษา SQL สำหรับจัดการข้อมูล
รีเลชัน(Relation) หมายถึง ตารางข้อมูล(Table) 2 มิติ ที่ประกอบด้วยแอททริบิวต์(Attribute) หรือ คอลัมน์(Column) และ ทูเพิล(Tuple) หรือ แถว(Row) รีเลชัน เป็นตารางข้อมูลหลัก(Base Relation) ที่มีข้อมูลจัดเก็บไว้จริง ใช้คำสั่ง Create Table ของภาษา SQL ในการสร้างรีเลชันในฐานข้อมูล
แอททริบิวต์(Attribute) หมายถึง คอลัมน์หนึ่ง ๆ ในรีเลชันใด ๆ เป็นรายละเอียดข้อมูลที่จัดเก็บในรีเลชัน ตัวอย่างเช่น รีเลชัน “นักศึกษา” ประกอบด้วย แอททริบิวต์ รหัสนักศึกษา , ชื่อ , นามสกุล , ที่อยู่ เป็นต้น จำนวนแอททริบิวต์ในรีเลชันหนึ่ง ๆ เรียกว่า ดีกรี(Degree) เช่น รีเลชัน นักศึกษา มีดีกรี เท่ากับ 4
ทูเพิล(Tuple) หมายถึง ข้อมูลในแต่ละแถวของรีเลชัน ข้อมูลในแต่ละแถวของรีเลชัน อาจมีการเปลี่ยนแปลง เนื่องจากการ ลบ เพิ่มหรือ ปรับปรุงข้อมูล จำนวนทูเพิลในรีเลชันหนึ่ง ๆ เรียกว่า คาร์ดินัลลิตี้(Cardinality)
Relation name Attribute Cardinality Tuple Degree Student Std_ID Std_Fname Std_Lname Std_Address Std_Major Std_GPA Fac_ID 1234567801 Bob Norbert USA IT 3.00 Sc 1234567821 Wiliam Pilgrim AUS CS 2.50 1234567822 Luke Brazzi PHY 3.50 1234567840 Homer Wells 2345678910 Candy Kendall NZ FIN 2.75 Msc 2345678920 Roberto Morales 3.25 2345789015 Tess Dodge CAN ECON 3.75 4567890122 Joe Estrada Art En 4567890133 Cristopher Colan MUS 5678901235 Wally GSc Ed 5678901240 Mariah Gsc Cardinality Tuple Degree
โดเมน(Domain) ประกอบด้วย ค่าหรือเซตของข้อมูลที่แอททริบิวต์หนึ่งควรจะเป็น ค่าของข้อมูล มีความหมายครอบคลุมถึง ประเภทและขนาดของข้อมูล รวมถึง ขอบเขตค่าของข้อมูลที่แอททริบิวต์นั้น ๆ ควรจะเป็น เพื่อรักษาความคงสภาพ ของข้อมูล(Data Integrity)
โดเมน(Domain) Domain EmpID Name Sex Age Salary DeptID ตัวอย่างเช่น แอททริบิวต์ เพศ มีการกำหนดโดเมนให้เก็บค่าของข้อมูลเป็น ตัวอักษร มีขอบเขตค่าของข้อมูลเป็น F หรือ M Domain M,F EmpID Name Sex Age Salary DeptID E001 Peter M 24 55,000 D01 E002 Nicole F 30 12,000 D02
โดเมน(Domain) Domain EmpID Name Sex Age Salary DeptID ตัวอย่างเช่น แอททริบิวต์ อายุ มีการกำหนดโดเมนให้เก็บค่าของข้อมูลเป็นเลข จำนวนเต็ม มีขอบเขตค่าของข้อมูลไม่ต่ำกว่า 18 ปี >= 18 Domain EmpID Name Sex Age Salary DeptID E001 Peter M 24 55,000 D01 E002 Nicole F 30 12,000 D02
โดเมน(Domain) Domain EmpID Name Sex Age Salary DeptID ตัวอย่างเช่น แอททริบิวต์ เงินเดือน มีการกำหนดโดเมนให้เก็บค่าของข้อมูลเป็น ตัวเลข มีขอบเขตค่าของข้อมูลมากกว่า 0 > 0 Domain EmpID Name Sex Age Salary DeptID E001 Peter M 24 55,000 D01 E002 Nicole F 30 12,000 D02
คุณสมบัติของรีเลชัน มีชื่อรีเลชันไม่ซ้ำกัน ในแต่ละเซลล์(cell)ของรีชัน บรรจุข้อมูลได้ 1 ค่าเท่านั้น ในรีเลชันเดียวกันจะต้องไม่มีแอททริบิวต์ที่ชื่อซ้ำกัน ค่าข้อมูลที่อยู่ในแอททริบิวต์เดียวกันต้องอยู่ในขอบเขตโดเมน เดียวกัน ห้ามมีทูเพิลซ้ำกันในรีเลชันเดียวกัน การเรียงลำดับแอททริบิวท์ในรีเลชันไม่ถือเป็นสำคัญ การเรียงลำดับทูเพิลในรีเลชันไม่ถือเป็นสำคัญ
การสร้างรีเลชัน CREATE TABLE Student ( Std_ID CHAR(11), Std_FName VARCHAR(20), Std_LName VARCHAR(30), Std_Address VARCHAR(50), Std_Major VARCHAR(15), Std_GPA DECIMAL(3,2), Fac_ID CHAR(5) );
ตัวอย่าง Relation 100 Jerry Johnson Accounting JJ@somewhere.com EmployeeNumber FirstName LastName Department Email Phone 100 Jerry Johnson Accounting JJ@somewhere.com 236-9987 200 Mary Abernathy Finance MA@somewhere.com 444-8898 300 Liz Smarthers LS@somewhere.com 777-0098 400 Tom Caruthers TC@somewhere.com 500 Jackson Production TJ@somewhere.com 444-9980 600 Eleanore Caldera Legal EC@somewhere.com 767-09000 700 Richard Bandalone RB@somewhere.com 767-0900
ตัวอย่าง Table แต่ไม่ใช่ Relation EmployeeNumber FirstName LastName Department Email Phone 100 Jerry Johnson Accounting JJ@somewhere.com 236-9987 200 Mary Abernathy Finance MA@somewhere.com 444-8898 300 Liz Smarthers LS@somewhere.com 777-0098 400 Tom Caruthers TC@somewhere.com 236-9987 , 266-9987 , 555-7171 500 Jackson Production TJ@somewhere.com 444-9980 600 Eleanore Caldera Legal EC@somewhere.com 767-09000 700 Richard Bandalone RB@somewhere.com 767-0900 , 767-0011
ตัวอย่าง Table แต่ไม่ใช่ Relation EmployeeNumber FirstName LastName Department Email Phone 100 Jerry Johnson Accounting JJ@somewhere.com 236-9987 200 Mary Abernathy Finance MA@somewhere.com 444-8898 300 Liz Smarthers LS@somewhere.com 777-0098 400 Tom Caruthers TC@somewhere.com Fax : 266-9987 Home : 555-7171 500 Jackson Production TJ@somewhere.com 444-9980 600 Eleanore Caldera Legal EC@somewhere.com 767-09000 700 Richard Bandalone RB@somewhere.com 767-0900
ประเภทของคีย์ (Keys) Candidate Key Primary Key Composite Key Alternate key Foreign Key
Candidate Key หมายถึง แอททริบิวต์ หรือ กลุ่มของแอททริบิวต์ ที่มีค่าไม่ซ้ำและสามารถระบุทู เพิลในรีเลชันได้ 1 รายการ เช่น รหัสพนักงาน , ชื่อและนามสกุล
Candidate Key รหัสนักศึกษา ชื่อ นามสกุล บัตรประชาชน โปรแกรมวิชา 4804234207 สมศักดิ์ รักการดี 3120100755991 คณิตศาสตร์ 4804234208 วาสนา เรียนนา 3110211212005 4804234210 นฤทัย 3141901485662 4804234211 เรียบร้อย 3120233125447 วิทยาการคอมพิวเตอร์ 4804234215 จงจิต อินทชัย 3155002551549 4804234219 ปิยะพร สอนชัยดี 3112251445345 4804234222 ผ่องแผ้ว 3122234567657 บัญชี 4804234225 กัลยา นาคสมภพ 3122343231156
Primary Key หมายถึง Candidate Key ที่ถูกำหนดให้เป็นตัวแทนของทูเพิลในรีเลชัน ดังนั้น Primary key คือ แอททริบิวต์ หรือ กลุ่มของแอททริบิวต์ ที่มีค่าไม่ซ้ำและไม่เป็น ค่าว่าง และสามารถระบุค่าข้อมูลในแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกันได้
Primary Key Primary Key รหัสนักศึกษา ชื่อ นามสกุล บัตรประชาชน โปรแกรมวิชา 4804234207 สมศักดิ์ รักการดี 3120100755991 คณิตศาสตร์ 4804234208 วาสนา เรียนนา 3110211212005 4804234210 นฤทัย 3141901485662 4804234211 เรียบร้อย 3120233125447 วิทยาการคอมพิวเตอร์ 4804234215 จงจิต อินทชัย 3155002551549 4804234219 ปิยะพร สอนชัยดี 3112251445345 4804234222 ผ่องแผ้ว 3122234567657 บัญชี 4804234225 กัลยา นาคสมภพ 3122343231156 Primary Key
Composite Key หมายถึง คีย์ต่าง ๆ ที่ประกอบขึ้นจากแอททริบิวต์มากกว่า 1 แอททริบิวต์
Composite Key Composite Key รหัสนักศึกษา ชื่อ นามสกุล บัตรประชาชน โปรแกรมวิชา 4804234207 สมศักดิ์ รักการดี 3120100755991 คณิตศาสตร์ 4804234208 วาสนา เรียนนา 3110211212005 4804234210 นฤทัย 3141901485662 4804234211 เรียบร้อย 3120233125447 วิทยาการคอมพิวเตอร์ 4804234215 จงจิต อินทชัย 3155002551549 4804234219 ปิยะพร สอนชัยดี 3112251445345 4804234222 ผ่องแผ้ว 3122234567657 บัญชี 4804234225 กัลยา นาคสมภพ 3122343231156 Composite Key
Alternate Key หมายถึง คีย์คู่แข่ง(Candidate key) ที่ไม่ได้ถูกเลือกให้เป็นคีย์หลัก(Primary Key)
Alternate Key Primary Key Alternate Key รหัสนักศึกษา ชื่อ นามสกุล บัตรประชาชน โปรแกรมวิชา 4804234207 สมศักดิ์ รักการดี 3120100755991 คณิตศาสตร์ 4804234208 วาสนา เรียนนา 3110211212005 4804234210 นฤทัย 3141901485662 4804234211 เรียบร้อย 3120233125447 วิทยาการคอมพิวเตอร์ 4804234215 จงจิต อินทชัย 3155002551549 4804234219 ปิยะพร สอนชัยดี 3112251445345 4804234222 ผ่องแผ้ว 3122234567657 บัญชี 4804234225 กัลยา นาคสมภพ 3122343231156 Primary Key Alternate Key
Foreign Key หมายถึง แอททริบิวต์ในรีเลชันที่ใช้ในการเชื่อมโยงกับรีเลชันอื่น ๆ โดยแอททริบิวต์ที่เป็น Foreign key ใน child relation จะเชื่อมโยงไปยัง แอทท ริบิวต์ที่เป็น Primary key ใน Parent relation
Foreign Key Parent relation Child relation Primary key Foreign key Faculty Fac_ID Fac_Name Phone Sc Science 201 Msc Management Science 145 En Engineering 512 Ed Education 301 Foreign key Student Std_ID Std_Fname Std_Lname Std_Address Std_Major Std_GPA Fac_ID 1234567801 Bob Norbert USA IT 3.00 Sc 1234567821 Wiliam Pilgrim AUS CS 2.50 1234567822 Luke Brazzi PHY 3.50 1234567840 Homer Wells 2345678910 Candy Kendall NZ FIN 2.75 Msc 2345678920 Roberto Morales 3.25 2345789015 Tess Dodge CAN ECON 3.75 4567890122 Joe Estrada Art En 4567890133 Cristopher Colan MUS 5678901235 Wally GSc Ed 5678901240 Mariah Gsc Parent relation Child relation
คุณสมบัติของกุญแจนอก(Foreign Key) 1. สามารถกำหนดจากแอททริบิวท์เดียวหรือมากกว่า 2. ค่าของ FK ใน รีเลชัน หนึ่งจะต้องปรากฏใน กุญแจคู่แข่ง ของอีก รีเลชัน หนึ่งที่สัมพันธ์กัน แต่ในแง่กลับกัน ทุกค่าของ FK ใน รีเล ชัน หนึ่ง ไม่จำเป็นที่จะต้องปรากฎอยู่ใน FK ของอีก รีเลชัน หนึ่งที่สัมพันธ์กัน 3. จำนวนของ แอททริบิวท์ ที่มาประกอบเป็น FK ขึ้นอยู่กับจำนวน ของ แอททริบิวท์ ที่กำหนดเป็น CK ของ รีเลชัน ที่มี ความสัมพันธ์กับ รีเลชันนั้น ที่ถูกนำมาใช้เปรียบเทียบกับค่า ของ FK
คุณสมบัติของ Foreign Key 4. Domain ของ แอททริบิวท์ ที่กำหนดเป็น FK ต้องมีค่าเช่นเดียวกัน กับ Domain ของ แอททริบิวท์ ที่เป็น CK ของ รีเลชัน ที่สัมพันธ์ กัน 5. แอททริบิวท์ ที่ทำหน้าที่เป็น FK ไม่จำเป็นต้องเป็น CK ของ รีเลชัน นั้น 6. รีเลชัน ใดที่เป็นเจ้าของ FK จะถูกเรียกว่า “Referencing Relation” ส่วน รีเลชัน ที่เป็นเจ้าของ CK ที่สัมพันธ์กับ FK นั้นจะเรียกว่า “Referenced Relation” หรือ “Target Relation”
คุณสมบัติของ Foreign Key 7. รีเลชันใดๆ สามารถเป็นได้ทั้ง Referenced Relation และ Referencing Relation 8. รีเลชันใดๆ สามารถมีความสัมพันธ์ด้วย FK กับตัวมันเองได้ (Self- Referencing) EmpID Ename Esurname EMgr E001 Peter Corp E002 E002 Nicole Terio - E003 Willy Mac E002 FK PK FK
Alternate key Foreign key Primary key Candidate key Primary key สาขา รหัสพนักงาน ชื่อ นามสกุล ตำแหน่ง เพศ วันเกิด เงินเดือน รหัสสาขา SUD21 สมชาย เข็มกลัด ผู้จัดการ ช 1 ตค. 2516 30000 B005 SNK37 แอน ทองประสม พนักงาน ญ 10 พย. 2519 12000 B007 SNK14 ศรราม เทพพิทักษ์ หัวหน้าแผนก ช 24 มีค. 2517 20000 B007 SUB09 สุวนันท์ คงยิ่ง พนักงาน ญ 19 กพ. 2521 9000 B002 SUD04 ปนัดดา วงศ์ผู้ดี ผู้จัดการ ญ 3 กค. 2518 25000 B003 SNR41 เจนจิรา เกิดประสพ พนักงาน ญ 13 มิย. 2520 9000 B004 Candidate key 43000 นครราชสีมา 88/10 ถ.ราชสีมา B004 34000 อุบลราชธานี 30 ถ.ชยางกูร B002 44000 หนองคาย 16 ถ.โพนพิสัย B007 41000 อุดรธานี 55/5 ถ.นิตโย B005 44/3 ถ.อุดรดุษฎี B003 รหัสไปรษณีย์ จังหวัด ที่อยู่ รหัสสาขา สาขา Primary key
The End