แบบจำลองเชิงสัมพันธ์ The Relational Model หัวข้ อ Relation และองค์ ประกอบ Key Integrity Constraints (IC) Relational Algebra.
Download ReportTranscript แบบจำลองเชิงสัมพันธ์ The Relational Model หัวข้ อ Relation และองค์ ประกอบ Key Integrity Constraints (IC) Relational Algebra.
แบบจำลองเชิงสัมพันธ์ The Relational Model หัวข้ อ Relation และองค์ ประกอบ Key Integrity Constraints (IC) Relational Algebra 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 Student Std_Fname Std_Lname Std_Address 1234567801 Bob Norbert USA IT 3.00 Sc 1234567821 Wiliam Pilgrim AUS CS 2.50 Sc 1234567822 Luke Brazzi USA PHY 3.50 Sc 1234567840 Homer Wells AUS CS 2.50 Sc 2345678910 Candy Kendall NZ FIN 2.75 Msc 2345678920 Roberto Morales AUS FIN 3.25 Msc 2345789015 Tess Dodge CAN ECON 3.75 Msc 4567890122 Joe Estrada CAN Art 3.25 En 4567890133 Cristopher Colan USA MUS 2.75 En 5678901235 Wally Kendall NZ GSc 3.50 Ed 5678901240 Mariah Dodge CAN Gsc 2.50 Ed Degree Std_Major Std_GPA Fac_ID Cardinality Tuple Std_ID โดเมน(Domain) ประกอบด้ วย ค่ ำหรื อเซตของข้ อมูลที่แอททริบวิ ต์ หนึ่งควรจะเป็ น ค่ ำของข้ อมูล มีควำมหมำยครอบคลุมถึง ประเภท และขนำดของข้ อมูล รวมถึงขอบเขตค่ ำของข้ อมูลที่ แอททริบวิ ต์ นัน้ ๆ ควรจะเป็ น เพื่อรั กษำควำมคง สภำพของข้ อมูล(Data Integrity) โดเมน(Domain) ตัวอย่ ำงเช่ น แอททริบวิ ต์ เพศ มีกำรกำหนดโดเมน ให้ เก็บค่ ำของข้ อมูลเป็ นตัวอักษร มีขอบเขตค่ ำของ ข้ อมูลเป็ น F หรื อ M Domain EmpID Name E001 Peter E002 Nicole M,F Sex M F Age Salary DeptID 24 55,000 D01 30 12,000 D02 โดเมน(Domain) ตัวอย่ ำงเช่ น แอททริบวิ ต์ อำยุ มีกำรกำหนดโดเมน ให้ เก็บค่ ำของข้ อมูลเป็ นเลขจำนวนเต็ม มีขอบเขต ค่ ำของข้ อมูลไม่ ต่ำกว่ ำ 18 ปี >= 18 Domain EmpID Name E001 Peter E002 Nicole Sex M F Age Salary DeptID 24 55,000 D01 30 12,000 D02 โดเมน(Domain) ตัวอย่ ำงเช่ น แอททริบวิ ต์ เงินเดือน มีกำรกำหนด โดเมนให้ เก็บค่ ำของข้ อมูลเป็ นตัวเลข มีขอบเขตค่ ำ ของข้ อมูลมำกกว่ ำ 0 >0 Domain EmpID Name E001 Peter E002 Nicole Sex M F Age Salary DeptID 24 55,000 D01 30 12,000 D02 คุณสมบัตขิ องรี เลชัน มีช่ อื รีเลชันไม่ ซำ้ กัน ในแต่ ละเซลล์ (cell)ของรี ชัน บรรจุข้อมูลได้ 1 ค่ ำเท่ ำนัน ้ ในรี เลชันเดียวกันจะต้ องไม่ มีแอททริ บว ิ ต์ ท่ ชี ่ ือซำ้ กัน ค่ ำข้ อมูลที่อยู่ในแอททริ บว ิ ต์ เดียวกันต้ องอยู่ในขอบเขต โดเมนเดียวกัน ห้ ำมมีทเู พิลซำ้ กันในรี เลชันเดียวกัน กำรเรี ยงลำดับแอททริ บว ิ ท์ ในรีเลชันไม่ ถือเป็ นสำคัญ กำรเรี ยงลำดับทูเพิลในรี เลชันไม่ ถือเป็ นสำคัญ กำรสร้ ำงรี เลชัน CREATE TABLE ( Std_ID Std_FName Std_LName Std_Address Std_Major Std_GPA Fac_ID ); Student CHAR(11), VARCHAR(20), VARCHAR(30), VARCHAR(50), VARCHAR(15), DECIMAL(3,2), CHAR(5) ตัวอย่ ำง Relation EmployeeNumber FirstName LastName Department Email Phone 100 Jerry Johnson Accounting [email protected] 236-9987 200 Mary Abernathy Finance [email protected] 444-8898 300 Liz Smarthers Finance [email protected] 777-0098 400 Tom Caruthers Accounting [email protected] 236-9987 500 Tom Jackson Production [email protected] 444-9980 600 Eleanore Caldera Legal [email protected] 767-09000 700 Richard Bandalone Legal [email protected] 767-0900 ตัวอย่ ำง Table แต่ ไม่ ใช่ Relation EmployeeNumbe r FirstName LastName Department Email Phone 100 Jerry Johnson Accounting [email protected] 236-9987 200 Mary Abernathy Finance [email protected] 444-8898 300 Liz Smarthers Finance [email protected] 777-0098 400 Tom Caruthers Accounting [email protected] 236-9987 , 266-9987 , 555-7171 500 Tom Jackson Production [email protected] 444-9980 600 Eleanore Caldera Legal [email protected] 767-09000 700 Richard Bandalon e Legal [email protected] 767-0900 , 767-0011 ตัวอย่ ำง Table แต่ ไม่ ใช่ Relation EmployeeNumbe r FirstName LastName Department Email Phone 100 Jerry Johnson Accounting [email protected] 236-9987 200 Mary Abernathy Finance [email protected] 444-8898 300 Liz Smarthers Finance [email protected] 777-0098 400 Tom Caruthers Accounting [email protected] 236-9987 Fax : 266-9987 Home : 555-7171 500 Tom Jackson Production [email protected] 444-9980 600 Eleanore Caldera Legal [email protected] 767-09000 700 Richard Bandalon e Legal Fax : 236-9987 Home : 555-7171 [email protected] 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 ึ ษา รห ัสน ักศก ื่ ชอ นามสกุล บ ัตรประชาชน โปรแกรมวิชา 4804234207 ั ์ สมศกดิ ร ักการดี 3120100755991 คณิตศาสตร์ 4804234208 วาสนา เรียนนา 3110211212005 คณิตศาสตร์ 4804234210 วาสนา นฤท ัย 3141901485662 คณิตศาสตร์ 4804234211 ั ์ สมศกดิ เรียบร้อย 3120233125447 วิทยาการคอมพิวเตอร์ 4804234215 จงจิต ั อินทชย 3155002551549 วิทยาการคอมพิวเตอร์ 4804234219 ปิ ยะพร ั สอนชยดี 3112251445345 วิทยาการคอมพิวเตอร์ 4804234222 วาสนา ผ่องแผ้ว 3122234567657 บ ัญช ี 4804234225 ก ัลยา นาคสมภพ 3122343231156 บ ัญช ี Primary Key Composite Key หมำยถึง คีย์ต่ำง ๆ ที่ประกอบขึน้ จำกแอททริบวิ ต์ มำกกว่ ำ 1 แอททริบวิ ต์ 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 ึ ษา รห ัสน ักศก ื่ ชอ นามสกุล บ ัตรประชาชน โปรแกรมวิชา 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 Primary key Faculty Fac_ID Foreign key Fac_Name Phone Sc Science 201 Msc Management Science 145 En Engineering 512 Ed Education 301 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 Sc 1234567822 Luke Brazzi USA PHY 3.50 Sc 1234567840 Homer Wells AUS CS 2.50 Sc 2345678910 Candy Kendall NZ FIN 2.75 Msc 2345678920 Roberto Morales AUS FIN 3.25 Msc 2345789015 Tess Dodge CAN ECON 3.75 Msc 4567890122 Joe Estrada CAN Art 3.25 En 4567890133 Cristopher Colan USA MUS 2.75 En 5678901235 Wally Kendall NZ GSc 3.50 Ed 5678901240 Mariah Dodge CAN Gsc 2.50 Ed 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 PK E001 E002 E003 Ename Peter Nicole Willy Esurname EMgr Corp E002 Terio Mac E002 FK FK Alternate key Primary key รห ัสพน ักงาน SUD21 SNK37 SNK14 SUB09 SUD04 SNR41 ื่ ชอ สมชาย แอน ศรราม สุวนันท์ ปนัดดา เจนจิรา นามสกุล เข็มกลัด ทองประสม ตาแหน่ง ผู ้จัดการ พนักงาน เทพพิทักษ์ หัวหน ้าแผนก คงยิง่ พนักงาน ผู ้จัดการ พนักงาน ์ ู ้ดี วงศผ เกิดประสพ Foreign key เพศ ช ญ ช ญ ญ ญ ว ันเกิด 1 ตค. 2516 10 พย. 2519 24 มีค. 2517 19 กพ. 2521 3 กค. 2518 13 มิย. 2520 เงินเดือน 30000 12000 20000 9000 25000 9000 Candidate key สาขา รห ัสสาขา ทีอ ่ ยู่ B003 B005 B007 B002 B004 44/3 ถ.อุดรดุษฎี Primary key 55/5 ถ.นิตโย ั 16 ถ.โพนพิสย จ ังหว ัด อุดรธานี อุดรธานี หนองคาย 30 ถ.ชยางกูร อุบลราชธานี ี า 88/10 ถ.ราชสม ี า นครราชสม รห ัสไปรษณีย ์ 41000 41000 44000 34000 43000 รห ัสสาขา B005 B007 B007 B002 B003 B004 ควำมคงสภำพของข้ อมูล Data Integrity ควำมคงสภำพ (Integrity Constraints) ควำมคงสภำพของข้ อมูล หมำยถึงข้ อบังคับ หรือ ข้ อกำหนด ที่บังคับใช้ กับข้ อมูลใน ฐำนข้ อมูล มีข้อกำหนดที่สำคัญ คือ Domain Constraints Entity Integrity Referential Integrity Domain Constraints นิยำม “ค่ ำข้ อมูลที่ปรำกฏอยู่ในแอททริบวิ ต์ เดียวกัน ในรี เลชันหนึ่ง จะต้ องอยู่ภำยในโดเมนเดียวกัน” กำรนิยำมโดเมนจะประกอบด้ วย : ชื่อโดเมน , ควำมหมำย , ชนิดข้ อมูล , ขนำด และค่ ำหรื อช่ วง ของข้ อมูลที่สำมำรถจัดเก็บได้ Entity Integrity กฎควำมคงสภำพของเอนทิต(ี ้ Entity Integrity Rule) กล่ ำวว่ ำ “ค่ ำข้ อมูลของแอททริบวิ ต์ ท่ เี ป็ นกุญแจหลัก (Primary key) จะต้ องไม่ เป็ นค่ ำว่ ำง(not null)” ค่ ำว่ ำง(Null value) คือ ค่ ำที่อำจจะกำหนดให้ แก่ แอททริบวิ ต์ เมื่อยังไม่ กำหนดค่ ำหรื อไม่ ทรำบค่ ำที่ แท้ จริงของแอททริบวิ ต์ นัน้ ๆ ค่ ำว่ ำงไม่ ใช่ ค่ำข้ อมูล แต่ เป็ นค่ ำข้ อมูลที่ขำดไป กำรสร้ ำงรี เลชันที่มีกุญแจหลัก CREATE TABLE CUSTOMER (Customer_ID Char(5) Not Null, Customer_Name Varchar(25), Customer_Address Varchar(100), Primary Key(Customer_ID)); Referential Integrity กฎควำมคงสภำพของกำรอ้ ำงอิง(Referential Integrity Rule) กล่ ำวว่ ำ “ค่ ำข้ อมูลของแอททริบวิ ต์ ท่ ี เป็ นกุญแจนอก(Foreign key) จะต้ องสอดคล้ องกับ ค่ ำในแอททริบวิ ต์ ท่ เี ป็ นกุญแจหลัก(Primary key) ใน อีกรี เลชันที่สัมพันธ์ กัน หรื อ ไม่ กอ็ ำจเป็ นค่ ำว่ ำง (Null value) ได้ ” Referential Integrity CUSTOMER Cumtomer_ID Cumtomer_Name Cumtomer_Address ORDERS Order_ID Order_Date Cumtomer_ID Product_ID Quantity ORDERLINE Order_ID PRODUCT Product_ID Product_Name Unit_Price On_Hand กำรสร้ ำงรี เลชันที่มีกุญแจนอก CUSTOMER Cumtomer_ID Cumtomer_Name Cumtomer_Address CREATE TABLE CUSTOMER (Customer_ID Char(5) Not Null, Customer_Name Varchar(25), Customer_Address Varchar(100), Primary Key(Customer_ID)); ORDERS Order_ID Order_Date Cumtomer_ID CREATE TABLE ORDERS (Order_ID Char(5) Not Null, Order_Date Date Not Null, Customer_ID Char(5) Not Null, Primary Key(Order_ID), Foreign Key(Customer_ID) References CUSTOMER(Customer_ID)); กำรรั กษำกฎ Referential Integrity กำรลบหรื อแก้ ไขค่ ำ Primary key ใน Parent relation ที่มีกำรอ้ ำงอิงจำก Foreign key ใน Child relation อำจส่ งผลทำให้ ควำมคงสภำพในกำรอ้ ำงอิงไม่ ถูกต้ อง ดังนัน ้ จึงมีข้อกำหนดในกำรปรั บปรุ งข้ อมูลสำหรั บ รำยกำรข้ อมูลที่มี Foreign key อ้ ำงอิง เพื่อคงควำม คงสภำพของกำรอ้ ำงอิงให้ ถูกต้ อง กำรรั กษำกฎ Referential Integrity ข้ อกำหนดในกำรกระทำกับข้ อมูล Restrict Cascade Nullify Default มีดังนี ้ Restrict จะไม่ อนุญำตให้ มีกำรลบรำยกำรข้ อมูล หรื อ แก้ ไข ค่ ำ Primary key ใน Parent relation หำกรำยกำร ข้ อมูลนัน้ มีกำรอ้ ำงอิงจำก Foreign key ใน Child relation บำง DBMS ใช้ คำว่ ำ NO ACTION ตัวอย่ ำง Resctrict Primary key •จะไม่อนุญาตให้ลบรายการข้อมูลใน Faculty หามีการอ้างอิงรายการนนใน ั้ Student •จะไม่อนุญาตให้แก้ไขค่าในแอททริบวิ ต์ Fac_ID ใน Faculty หากมีการอ้างอิงค่านนอยู ั้ ่ ใน Fac_ID ใน Student Faculty Fac_ID Foreign key Fac_Name Phone Sc Science 201 Msc Management Science 145 En Engineering 512 Ed Education 301 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 Sc 1234567822 Luke Brazzi USA PHY 3.50 Sc 1234567840 Homer Wells AUS CS 2.50 Sc 2345678910 Candy Kendall NZ FIN 2.75 Msc 2345678920 Roberto Morales AUS FIN 3.25 Msc 2345789015 Tess Dodge CAN ECON 3.75 Msc 4567890122 Joe Estrada CAN Art 3.25 En 4567890133 Cristopher Colan USA MUS 2.75 En 5678901235 Wally Kendall NZ GSc 3.50 Ed 5678901240 Mariah Dodge CAN Gsc 2.50 Ed Parent relation Child relation Cascade กำรลบรำยกำรข้ อมูล ใน Parent relation ที่มี รำยกำรข้ อมูลใน Child relation ที่อ้ำงอิงอยู่ จะมีผล ให้ รำยกำรข้ อมูลใน Child relation ที่อ้ำงอิงนัน้ ถูก ลบไปด้ วย ส่ วนกำรแก้ ไขค่ ำใน Primary key ของ Parent relation ที่มี Foreign key ใน Child relation อ้ ำงอิงถึง จะมีผลทำให้ ค่ำใน Foreign key เปลี่ยนค่ ำตำมค่ ำ Primary key ไปด้ วย ตัวอย่ ำง Cascade •ถ้าลบรายการใน Faculty จะทาให้รายการ ข้อมูลใน Student ทีอ ่ า้ งอิงค่าใน Faculty ถูก ลบตามไปด้วย •หากแก้ไขค่า Fac_ID ใน Faculty ค่าใน Fac_ID ใน Student ทีอ ่ า้ งอิงค่าเดิมเปลีย ่ น ตามค่าใหม่ Primary key Faculty Fac_ID Foreign key Fac_Name Phone Sc Science 201 Msc Management Science 145 En Engineering 512 Ed Education 301 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 Sc 1234567822 Luke Brazzi USA PHY 3.50 Sc 1234567840 Homer Wells AUS CS 2.50 Sc 2345678910 Candy Kendall NZ FIN 2.75 Msc 2345678920 Roberto Morales AUS FIN 3.25 Msc 2345789015 Tess Dodge CAN ECON 3.75 Msc 4567890122 Joe Estrada CAN Art 3.25 En 4567890133 Cristopher Colan USA MUS 2.75 En 5678901235 Wally Kendall NZ GSc 3.50 Ed 5678901240 Mariah Dodge CAN Gsc 2.50 Ed Parent relation Child relation Nullify กำรลบรำยกำรข้ อมูล หรื อ กำรแก้ ไขค่ ำใน Primary key ของ Parent relation ที่มี Foreign key ใน Child relation อ้ ำงอิงถึง จะมีผลทำให้ ค่ำใน Foreign key เปลี่ยนค่ ำเป็ น Null value ตัวอย่ ำง Nullify Primary key •ถ้าลบรายการใน Faculty หรือ แก้ไขค่า Fac_ID ใน Faculty ค่าใน Fac_ID ใน Student ทีอ ่ า้ งอิงค่าเดิมเปลีย ่ นค่าเป็น Null value Faculty Fac_ID Foreign key Fac_Name Phone Sc Science 201 Msc Management Science 145 En Engineering 512 Ed Education 301 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 Sc 1234567822 Luke Brazzi USA PHY 3.50 Sc 1234567840 Homer Wells AUS CS 2.50 Sc 2345678910 Candy Kendall NZ FIN 2.75 Msc 2345678920 Roberto Morales AUS FIN 3.25 Msc 2345789015 Tess Dodge CAN ECON 3.75 Msc 4567890122 Joe Estrada CAN Art 3.25 En 4567890133 Cristopher Colan USA MUS 2.75 En 5678901235 Wally Kendall NZ GSc 3.50 Ed 5678901240 Mariah Dodge CAN Gsc 2.50 Ed Parent relation Child relation Default กำรลบรำยกำรข้ อมูล หรื อ กำรแก้ ไขค่ ำใน Primary key ของ Parent relation ที่มี Foreign key ใน Child relation อ้ ำงอิงถึง จะมีผลทำให้ ค่ำใน Foreign key เปลี่ยนค่ ำเป็ นค่ ำเริ่มต้ น(Default) ตัวอย่ ำง Default Primary key •ถ้าลบรายการใน Faculty หรือ แก้ไขค่า Fac_ID ใน Faculty ค่าใน Fac_ID ใน Student ทีอ ่ า้ งอิงค่าเดิมเปลีย ่ นค่าเป็น Default value Faculty Fac_ID Foreign key Fac_Name Phone Sc Science 201 Msc Management Science 145 En Engineering 512 Ed Education 301 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 Sc 1234567822 Luke Brazzi USA PHY 3.50 Sc 1234567840 Homer Wells AUS CS 2.50 Sc 2345678910 Candy Kendall NZ FIN 2.75 Msc 2345678920 Roberto Morales AUS FIN 3.25 Msc 2345789015 Tess Dodge CAN ECON 3.75 Msc 4567890122 Joe Estrada CAN Art 3.25 En 4567890133 Cristopher Colan USA MUS 2.75 En 5678901235 Wally Kendall NZ GSc 3.50 Ed 5678901240 Mariah Dodge CAN Gsc 2.50 Ed Parent relation Child relation ตัวอย่ ำงกำรกำหนดค่ ำในกำรสร้ ำงรีเลชัน ด้ วยภำษำ SQL Fac_ID Fac_Name Std_ID Phone Std_Fname Create table Faculty ( Fac_ID Char(5) Not null, Fac_Name Varchar(50), Phone Varchar(5), Primary key(Fac_ID) ); Std_Lname Std_Address Create table Student ( Std_ID Char(11) Not null, Std_Fname Varchar(25), Std_LName Varchar(35), Std_Address Varchar(100), Std_Major Varchar(15) Std_GPA decimal, Fac_ID Char(5), Primary key(Fac_ID) Foreign key(Fac_ID) References Faculty(Fac_ID) On Update Cascade On Delete Restict); Std_Major Std_GPA Fac_ID Relational Algebra Restrict หรือ Selection Project Product Union Intersect Difference Join Divide Restrict หรื อ Select ตัวดำเนินกำร Selection จะกระทำกับรี เลชันเดียว เพื่อดึงข้ อมูลเฉพำะทูเพิลที่ตรงกับเงื่อนไขที่กำหนด ผลลัพธ์ จำกกำร Selection จะแสดงทุกแอททริบวิ ต์ แต่ จำนวนทูเพิลของผลลัพธ์ ขนึ ้ อยู่กับเงื่อนไขที่ กำหนด รู ปแบบคำสั่ง เงื่อนไข (ชื่อรี เลชัน) Restrict หรื อ Select กำรใช้ คำสั่ง Restrict จะทำให้ ได้ Relation หรื อ ตำรำงที่มีแถวหรื อรำยกำรข้ อมูลตรงกับเงื่อนไข Restrict หรื อ Select ให้ แสดงข้ อมูลพนักงำนที่มีเงินเดือนมำกกว่ ำ 10000 บำท สำมำรถเขียนคำสั่งได้ ดังนี ้ เงินเดือน > 10000(พนักงำน) รห ัสพน ักงาน ื่ ชอ นามสกุล ตาแหน่ง เพศ SUD21 สมชาย เข็มกล ัด ผูจ ้ ัดการ ช 1 ตค. 2516 30000 B005 SNK37 แอน ทองประสม พน ักงาน ญ 10 พย. 2519 12000 B007 SNK14 ศรราม เทพพิท ักษ์ ห ัวหน้าแผนก ช 24 มีค. 2517 20000 B007 SUD04 ปน ัดดา ์ ด วงศผ ู้ ี ผูจ ้ ัดการ ญ 3 กค. 2518 25000 B003 ว ันเกิด เงินเดือ น รห ัสสาขา Project ตัวดำเนินกำร Projection จะกระทำกับข้ อมูลในรี เล ชันเดียว เป็ นกำรดึงข้ อมูลในรี เลชันมำแสดงเฉพำะ บำงแอททริบวิ ต์ ท่ กี ำหนดไว้ ในเงื่อนไข โดยผลลัพธ์ ที่ได้ จะแสดงรำยกำรที่ไม่ ซำ้ รำยกำรกัน รู ปแบบคำสั่ง แอททริบวิ ท์1 ,….., แอททริบวิ ท์n (ชื่อรี เลชัน) Project กำรใช้ คำสั่ง Project จะเป็ นกำรเลือกข้ อมูลทุกแถว หรื อทุกรำยกำร โดยเลือกมำเพียงบำงคอลัมน์ เท่ ำนัน้ Project แสดงข้ อมูล รหัสพนักงำน , ชื่อ , นำมสกุล และ เงินเดือน ของพนักงำน สำมำรถเขียนคำสั่งได้ ดังนี ้ รหัสพนักงำน , ชื่อ , นำมสกุล , เงินเดือน(พนักงำน) รห ัสพน ักงาน ื่ ชอ นามสกุล SUD21 สมชาย เข็มกล ัด 30000 SNK37 แอน ทองประสม 12000 SNK14 ศรราม เทพพิท ักษ์ 20000 SUB09 สุวน ันท์ คงยิง่ SUD04 ปน ัดดา ์ ด วงศผ ู้ ี SNR41 เจนจิรา เกิดประสพ เงินเดือน 9000 25000 9000 Union เป็ นกำรกระทำเพื่อแสดงข้ อมูลของทุกทูเพิล ที่เกิด จำกกำรรวมกันของข้ อมูลของรี เลชันที่นำมำ Union กัน ซึ่งรี เลชันที่จะนำมำ Union ต้ องมีคุณสมบัตขิ อง รี ชันแบบเดียวกัน(มีจำนวนแอททริบวิ ท์ เท่ ำกันและ มีโดเมนเดียวกัน) รู ปแบบคำสั่ง ชื่อรี เลชัน1 ชื่อรี เลชัน2 Union ผลของคำสั่งนี ้ จะทำให้ ได้ แถวทัง้ หมดที่ปรำกฏอยู่ ใน 2 Relation Union แสดงชื่อจังหวัดทัง้ หมด ที่สำขำตัง้ อยู่ หรื อมีส่ งิ ปลูก สร้ ำงตัง้ อยู่ จังหวัด(สำขำ) จังหวัด(สิ่งปลูกสร้ ำง) จ ังหว ัด จังหวัด จ ังหว ัด อุดรธานี อุดรธานี อุบลราชธานี หนองคาย หนองคาย หนองคาย อุบลราชธานี อุบลราชธานี อุดรธานี ี า นครราชสม ี า นครราชสม Intersect เป็ นกำรกระทำเพื่อแสดงข้ อมูลของทุกทูเพิล ที่ ปรำกฏอยู่ในทัง้ 2 รี เลชัน ที่นำมำรวมกันในรู ปแบบ ของ Intersection ซึ่งรี เลชันที่จะนำมำ Union ต้ องมี คุณสมบัตขิ องรี ชันแบบเดียวกัน(มีจำนวนแอททริ บิวท์ เท่ ำกันและมีโดเมนเดียวกัน) รู ปแบบคำสั่ง ชื่อรี เลชัน1 ชื่อรี เลชัน2 Intersect ผลของคำสั่งนี ้ จะทำให้ ได้ แถวที่ปรำกฏอยู่ในทัง้ Relation 2 Intersection Operation ให้ แสดง ชื่อจังหวัดทุกจังหวัด ที่มีทงั ้ สำขำของ บริษัท และมีส่ งิ ปลูกสร้ ำงที่ให้ เช่ ำ ตัง้ อยู่ด้วย จังหวัด(สำขำ) จังหวัด(สิ่งปลูกสร้ ำง) จ ังหว ัด จ ังหว ัด จ ังหว ัด อุดรธานี อุดรธานี อุบลราชธานี หนองคาย หนองคาย หนองคาย อุบลราชธานี ี า นครราชสม อุบลราชธานี อุดรธานี Difference กำรกระทำเพื่อแสดงข้ อมูลของทุกทูเพิล ปรำกฏอยู่ในรีเลชันหนึ่ง แต่ ไม่ ปรำกฏใน อีกรีเลชัน รู ปแบบคำสั่ง ชื่อรีเลชัน1 - ชื่อรี เลชัน2 ที่ Difference ผลของคำสั่งนี ้ จะทำให้ ได้ แถวที่ปรำกฏอยู่เฉพำะใน Relation แรก Difference แสดงชื่อจังหวัดที่มีสำขำตัง้ อยู่แต่ ในจังหวัด ดังกล่ ำวไม่ มีส่ งิ ปลูกสร้ ำงที่ให้ เช่ ำตัง้ อยู่ เขียนคำสั่ง ได้ ดังนี ้ จังหวัด(สำขำ) - จังหวัด(สิ่งปลูกสร้ ำง) จ ังหว ัด จ ังหว ัด จ ังหว ัด อุดรธานี ี า นครราชสม อุบลราชธานี หนองคาย หนองคาย อุบลราชธานี อุดรธานี ี า นครราชสม Cartesian Product ตัวดำเนินกำร Cartesian Product เป็ นกำร กระทำกับรีเลชัน 2 รีเลชัน โดยกำรจับคู่ทุกทู เพิลในรีเลชันหนึ่งกับทุกทูเพิลในอีกรี เลชัน R S a b 1 2 3 RXS = a a a b b b 1 2 3 1 2 3 Cartesian Product ผลของคำสั่งนี ้ จะทำให้ ได้ Relation ที่ข้อมูลคือค่ ำที่ เป็ นไปได้ ทงั ้ หมดจำกกำรนำข้ อมูลของแต่ ละแถวใน 2 Relation มำรวมกัน Product a b c x y a a b b c c x y x y x y จงหาผลล ัพธ์ ของสมการ ต่อไปนี้ ( รห ัสลูกค้า , ชอื่ , นามสกุล (ลูกค้า)) x ( รห ัสลูกค้า , รห ัสสงิ่ ปลูกสร้างทีใ่ ห้เชา่ ,ความคิดเห็น (การเข้าชม)) ( รหัสลูกค้ ำ , ชื่อ , นำมสกุล (ลูกค้ ำ)) ( รหัสลูกค้ ำ , รหัสสิ่งปลูกสร้ ำงที่ให้ เช่ ำ,ควำมคิดเห็น (กำรเข้ ำชม)) รห ัส ลูกค้า ื่ ชอ นามสกุล รห ัสลูกค้า รห ัสสงิ่ ปลูก สร้าง ความคิดเห็น CR76 นิพล ั ทธิ สงสุ CR56 UD36 หล ังเล็ กเกินไป CR56 อารีร ัตน์ บุญทอง CR76 UD16 ไกลเกินไป CR74 ปราการ พิพ ัฒน์ CR56 UD16 CR62 ราไพ ทองอ่อน CR62 UD36 CR56 UB15 X ไม่มห ี อ ้ งกินข้าว ( รห ัสลูกค้า , ชอื่ , นามสกุล (ลูกค้า)) x ( รห ัสลูกค้า , รห ัสสงิ่ ปลูกสร้างทีใ่ ห้เชา่ ,ความคิดเห็น (การเข้าชม)) ลูกค้า.รห ัสลูกค้า ื่ ชอ นามสกุล การเข้าชม.รห ัสลูกค้า รห ัสสงิ่ ปลูกสร้าง ความคิดเห็น CR76 นิพล ั ทธิ สงสุ CR56 UD36 หล ังเล็กเกินไป CR76 นิพล ั ทธิ สงสุ CR76 UD16 ไกลเกินไป CR76 นิพล ั ทธิ สงสุ CR56 UD16 CR76 นิพล ั ทธิ สงสุ CR62 UD36 CR76 นิพล ั ทธิ สงสุ CR56 UB15 CR56 อารีร ัตน์ บุญทอง CR56 UD36 หล ังเล็กเกินไป CR56 อารีร ัตน์ บุญทอง CR76 UD16 ไกลเกินไป CR56 อารีร ัตน์ บุญทอง CR56 UD16 CR56 อารีร ัตน์ บุญทอง CR62 UD36 CR56 อารีร ัตน์ บุญทอง CR56 UB15 CR74 ปราการ พิพ ัฒน์ CR56 UD36 หล ังเล็กเกินไป CR74 ปราการ พิพ ัฒน์ CR76 UD16 ไกลเกินไป CR74 ปราการ พิพ ัฒน์ CR56 UD16 CR74 ปราการ พิพ ัฒน์ CR62 UD36 CR74 ปราการ พิพ ัฒน์ CR56 UB15 CR62 ราไพ ทองอ่อน CR56 UD36 หล ังเล็กเกินไป CR62 ราไพ ทองอ่อน CR76 UD16 ไกลเกินไป CR62 ราไพ ทองอ่อน CR56 UD16 CR62 ราไพ ทองอ่อน CR62 UD36 CR62 ราไพ ทองอ่อน CR56 UB15 ไม่มห ี อ ้ งกินข้าว ไม่มห ี อ ้ งกินข้าว ไม่มห ี อ ้ งกินข้าว ไม่มห ี อ ้ งกินข้าว Join คล้ ำย Product แต่ ต่ำงกันที่จะได้ เฉพำะแถวที่สำมำรถ เชื่อมต่ อกันได้ ด้วย Attribute ที่ทงั ้ 2 Relation มี เหมือนกันเท่ ำนัน้ ประโยชน์ ของคำสั่ง Join คือใช้ เชื่อม ตำรำง 2 ตำรำงเพื่อหำข้ อมูลที่เกี่ยวข้ องกัน Join a1 b1 a2 b1 a3 b2 b1 c1 b2 c2 b3 c3 a1 b1 c1 a2 b1 c1 a3 b2 c2 Alternate key Primary key รห ัสพน ักงาน SUD21 SNK37 SNK14 SUB09 SUD04 SNR41 ื่ ชอ สมชาย แอน ศรราม สุวนันท์ ปนัดดา เจนจิรา นามสกุล เข็มกลัด ทองประสม ตาแหน่ง ผู ้จัดการ พนักงาน เทพพิทักษ์ หัวหน ้าแผนก คงยิง่ พนักงาน ผู ้จัดการ พนักงาน ์ ู ้ดี วงศผ เกิดประสพ Foreign key เพศ ช ญ ช ญ ญ ญ ว ันเกิด 1 ตค. 2516 10 พย. 2519 24 มีค. 2517 19 กพ. 2521 3 กค. 2518 13 มิย. 2520 เงินเดือน 30000 12000 20000 9000 25000 9000 Candidate key สาขา รห ัสสาขา ทีอ ่ ยู่ B003 B005 B007 B002 B004 44/3 ถ.อุดรดุษฎี Primary key 55/5 ถ.นิตโย ั 16 ถ.โพนพิสย จ ังหว ัด อุดรธานี อุดรธานี หนองคาย 30 ถ.ชยางกูร อุบลราชธานี ี า 88/10 ถ.ราชสม ี า นครราชสม รห ัสไปรษณีย ์ 41000 41000 44000 34000 43000 รห ัสสาขา B005 B007 B007 B002 B003 B004 Divide เป็ นกำรหำร Relation โดยนำ Relation ที่มี Attribute เพียงตัว เดียวมำหำร Relation ที่มี Attribute 2 ตัว ผลที่ได้ กค็ ือค่ ำของ Attribute ตัวแรกที่มี Attribute ตัวที่ 2 ตรงกับค่ ำของ Attribute ทัง้ หมดใน Relation ที่นำมำหำร Divide a a a b c x y z x y x y z a