แอททริบิวต์ (attribute) ในแต่ละรีเลชัน (relation) อาจมีความสัมพันธ์กันในลักษณะที่ เมื่อทราบค่าของแอททริบิวต์หนึ่งจะทำให้สามารถทราบค่าของแอททริบิวต์อื่น ๆ ในทูเพิล (tuple) เดียวกันของรีเลชันได้ ซึ่งความสัมพันธ์ระหว่างแอททริบิวต์ในแต่ละรีเลชันอาจจำแนกได้ 3 ลักษณะ คือ ความสัมพันธ์ระหว่าง แอททริบิวต์แบบฟังก์ชัน (functional dependency) ความสัมพันธ์ระหว่างแอททริบิวต์แบบหลายค่า (multivalued dependency) และความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join (join dependency)
1. ความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชัน
ความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชัน หรือ FD หมายถึง การที่ค่าของแอททริบิวต์หนึ่งหรือมากกว่าหนึ่งแอททริบิวต์ขึ้นไปที่ประกอบกันสามารถระบุค่าของแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกันของ รีเลชันนั้นได้ โดยแอททริบิวต์หรือกลุ่มของแอททริบิวต์ที่เป็นตัวระบุค่าของแอททริบิวต์อื่น ๆ เรียกว่า Determinant และแอททริบิวต์อื่น ๆ ที่ถูกระบุค่า เรียกว่า Dependent
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_1.gif)
ความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันสามารถใช้สัญลักษณ์ ในการสื่อความหมายได้ดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_2.gif)
ในแผนภาพความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชัน (functional dependency diagram) หรือ FD ไดอะแกรมใช้สัญลักษณ์ดังนี้
หมายความว่า หากทราบค่าของแอททริบิวต์ A จะสามารถทราบค่าของแอททริบิวต์ B ได้โดย A ซึ่งเรียกว่า Determinant อาจเป็นแอททริบิวต์หนึ่งหรือกลุ่มของแอททริบิวต์ที่นำมาประกอบกันก็ได้ และ B ซึ่งเรียกว่า Dependent จะเป็นแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกันของรีเลชันนั้น
เพื่อให้เข้าใจความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดียิ่งขึ้น ในที่นี้ขอนำตัวอย่างมาประกอบดังนี้
- กรณี Determinant และ Dependent มีเพียงหนึ่งแอททริบิวต์ ตัวอย่างเช่น รีเลชันอาจารย์ ที่ปรึกษาประกอบด้วย แอททริบิวต์รหัสนักศึกษา และชื่ออาจารย์ที่ปรึกษา โดยมีรายละเอียดดังนี้
รหัสนักศึกษา |
ชื่ออาจารย์ที่ปรึกษา |
41010703 |
สัมพันธ์ เย็นสำราญ |
41010943 |
ศิริภัทรา เหมือนมาลัย |
41012147 |
เมธี ปิยะคุณ |
41012451 |
ศิริชัย ศรีพรหม |
41013327 |
สัมพันธ์ เย็นสำราญ |
41013780 |
ศิริภัทรา เหมือนมาลัย |
ภาพที่ 1 รีเลชันอาจารย์ที่ปรึกษา
รีเลชันอาจารย์ที่ปรึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_3.gif)
เขียน FD ไดอะแกรมได้ดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_4.gif)
หมายความว่า หากระบุค่าของรหัสนักศึกษาคนใดก็จะสามารถทราบชื่ออาจารย์ที่ปรึกษาของ นักศึกษาคนนั้นได้ เช่น ถ้าระบุค่าของ Determinant หรือ รหัสนักศึกษา คือ 41012451 จะทำให้ทราบค่าของ Dependent หรือ ชื่ออาจารย์ที่ปรึกษา คือ ศิริชัย ศรีพรหม ได้
ในทางตรงกันข้าม หากทราบค่าของ Dependent อาจไม่สามารถระบุค่าของ Determinant ก็ได้ เช่น ถ้าระบุค่าของชื่ออาจารย์ที่ปรึกษา คือ ศิริภัทรา เหมือนมาลัย จะพบว่าค่าของรหัสนักศึกษามี 2 ค่า คือ 41010943 และ 41013780 เนื่องจากนักศึกษาทั้งสองคนมีอาจารย์ที่ปรึกษาคนเดียวกัน ดังนั้น จึงกล่าวได้ว่า ค่าของ Determinant สามารถระบุค่าของ Dependent ได้ แต่ค่าของ Dependent อาจไม่สามารถระบุค่าของ Determinant ที่ชัดเจนได้
หากต้องการให้แอททริบิวต์ชื่ออาจารย์ที่ปรึกษาเป็น Determinant เพื่อให้สามารถระบุค่าของ Dependent คือ รหัสนักศึกษา ได้ จะต้องกำหนดให้ชื่ออาจารย์ที่ปรึกษาของนักศึกษาแต่ละคนไม่ซ้ำกัน นั่นคือ หากระบุค่าของรหัสนักศึกษาคนใดก็จะสามารถทราบชื่ออาจารย์ที่ปรึกษาของนักศึกษาคนนั้นได้ และในทางตรงกันข้าม หากทราบค่าของชื่ออาจารย์ที่ปรึกษาคนใดก็จะสามารถระบุค่าของรหัสนักศึกษาใน การปรึกษาของอาจารย์คนนั้นได้ ซึ่งรูปแบบของความสัมพันธ์จะเป็นดังนี้
รีเลชันอาจารย์ที่ปรึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_5.gif)
หรืออาจเขียนได้ดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_6.gif)
เขียน FD ไดอะแกรมได้ดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_7.gif)
- กรณี Determinant มีเพียงหนึ่งแอททริบิวต์และ Dependent มีมากกว่าหนึ่งแอททริบิวต์ ตัวอย่างเช่น รีเลชันนักศึกษาประกอบด้วย แอททริบิวต์รหัสนักศึกษา ชื่อ นามสกุล และวัน/เดือน/ปีเกิด โดยมีรายละเอียดดังนี้
รหัสนักศึกษา |
ชื่อ |
นามสกุล |
วัน/เดือน/ปีเกิด |
41010703 |
สมชาย |
พลจันทร์ |
18 มิ.ย. 2527 |
41010943 |
สุทิศา |
พินิจไพฑูรย์ |
23 ก.ย. 2526 |
41012147 |
ณัฐพร |
ประคองเก็บ |
17 ธ.ค. 2528 |
41012451 |
นพดล |
ทับทิมทอง |
3 ก.พ. 2527 |
41013327 |
มัทนา |
พินิจไพฑูรย์ |
23 ก.ย. 2526 |
41013780 |
สมชาย |
พลจันทร์ |
17 ธ.ค. 2528 |
ภาพที่ 2 รีเลชันนักศึกษา
รีเลชันนักศึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_8.gif)
เขียน FD ไดอะแกรมได้ดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_9.gif)
หมายความว่า หากระบุรหัสนักศึกษาคนใดก็จะสามารถทราบชื่อ นามสกุล และวัน/เดือน/ปีเกิด ของนักศึกษาคนนั้นได้ เช่น ถ้าระบุค่าของ Determinant หรือ รหัสประจำตัว คือ 41012147 จะทำให้ทราบค่าของ Dependent หรือแอททริบิวต์อื่น ๆ ได้ดังนี้
รหัสนักศึกษา |
ชื่อ |
นามสกุล |
วัน/เดือน/ปีเกิด |
41012147 |
ณัฐพร |
ประคองเก็บ |
17 ธ.ค. 2528 |
- กรณี Determinant มีมากกว่าหนึ่งแอททริบิวต์และ Dependent มีเพียงหนึ่งแอททริบิวต์ ตัวอย่างเช่น รีเลชันอาจารย์ผู้สอนประกอบด้วย แอททริบิวต์รหัสชุดวิชา หมู่เรียน และชื่ออาจารย์ผู้สอน โดยมีรายละเอียดดังนี้
รหัสชุดวิชา |
หมู่เรียน |
ชื่ออาจารย์ผู้สอน |
729101 |
700 |
ศิริชัย ศรีพรหม |
729111 |
711 |
จันทนา พรหมศิริ |
729111 |
712 |
สัมพันธ์ เย็นสำราญ |
999211 |
711 |
ศิริภัทรา เหมือนมาลัย |
999211 |
712 |
ศิริชัย ศรีพรหม |
999211 |
713 |
สุพิมพ์ ศรีพันธ์วรสกุล |
ภาพที่ 3 รีเลชันอาจารย์ผู้สอน
รีเลชันอาจารย์ผู้สอนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_10.gif)
เขียน FD ไดอะแกรมได้ดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_11gif.gif)
หมายความว่า หากระบุค่าของรหัสชุดวิชาและหมู่เรียนใดก็จะสามารถทราบชื่ออาจารย์ผู้สอนในรหัสชุดวิชาและหมู่เรียนนั้น ๆ ได้ เช่น ถ้าระบุค่าของ Determinant หรือ รหัสชุดวิชา คือ 999211 และหมู่เรียน คือ 712 จะทำให้ทราบค่าของ Dependent หรือ ชื่ออาจารย์ผู้สอน คือ ศิริชัย ศรีพรหม
เมื่อกล่าวถึงความสัมพันธ์ระหว่างแอททริบิวต์มักจะเกี่ยวข้องกับคีย์ (key) เนื่องจากคุณสมบัติของคีย์หลัก (primary key) คือ แอททริบิวต์ที่มีค่าเป็นเอกลักษณ์หรือมีค่าไม่ซ้ำซ้อนกัน (unique) ทำให้สามารถระบุค่าของแอททริบิวต์อื่นในทูเพิลหนึ่ง ๆ ได้ โดยแอททริบิวต์ที่มีคุณสมบัติเป็นคีย์หลักอาจเป็นกลุ่มของ แอททริบิวต์ที่นำมาประกอบกันเพื่อให้มีค่าเป็นเอกลักษณ์ก็ได้ ซึ่งกลุ่มของแอททริบิวต์ดังกล่าวเรียกว่า คีย์ผสม (composite key)
จากภาพที่ 4.2 รีเลชันนักศึกษามีเพียงหนึ่งแอททริบิวต์ที่มีคุณสมบัติเป็นคีย์หลัก คือ รหัสนักศึกษา หากระบุรหัสนักศึกษาคนใดก็จะสามารถทราบชื่อ นามสกุล และวัน/เดือน/ปีเกิด ของนักศึกษาคนนั้นได้ และจากภาพที่ 4.3 รีเลชันอาจารย์ผู้สอนมีกลุ่มของแอททริบิวต์ที่ประกอบกันและมีคุณสมบัติเป็นคีย์หลัก คือ รหัสชุดวิชาและหมู่เรียน หากระบุค่าของรหัสชุดวิชาและหมู่เรียนใดก็จะสามารถทราบชื่ออาจารย์ผู้สอนในรหัส ชุดวิชาและหมู่เรียนนั้น ๆ ได้ ดังนั้น จึงกล่าวได้ว่า คีย์หลักและคีย์ผสมเป็น Determinant ที่สามารถระบุค่าของแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกันของรีเลชันนั้นได้
ทั้งนี้ ความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันสามารถจำแนกได้ 3 แบบ คือ ความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมด (fully functional dependency) ความสัมพันธ์ระหว่างแอททริบิวต์แบบ บางส่วน (partial dependency) และความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive (transitive dependency)
1. ความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมด
ความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมด หมายถึง การที่แอททริบิวต์ซึ่งเป็น Determinant มีขนาดเล็กที่สุด และสามารถระบุค่าของแอททริบิวต์อื่น ๆ ที่เป็น Dependent ได้อย่างชัดเจน ตัวอย่างเช่น
- กรณี Determinant มีเพียงหนึ่งแอททริบิวต์ ตัวอย่างเช่น รีเลชันนักศึกษาดังภาพที่ 4.2 ประกอบด้วย แอททริบิวต์รหัสนักศึกษา ชื่อ นามสกุล และวัน/เดือน/ปีเกิด โดยมีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก
รีเลชันนักศึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_12.gif)
หากทราบค่าของ Determinant คือ รหัสนักศึกษาคนใดก็จะสามารถทราบค่าของ Dependent หรือแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกัน คือ ชื่อ นามสกุล และวัน/เดือน/ปีเกิด ของนักศึกษาคนนั้นได้ ดังนั้น แอททริบิวต์ชื่อ นามสกุล และวัน/เดือน/ปีเกิด จึงมีความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมดกับ แอททริบิวต์รหัสนักศึกษา
- กรณี Determinant มีมากกว่าหนึ่งแอททริบิวต์ ตัวอย่างเช่น รีเลชันอาจารย์ผู้สอนดังภาพที่ 4.3 ประกอบด้วย แอททริบิวต์รหัสชุดวิชา หมู่เรียน และชื่ออาจารย์ผู้สอน โดยมีแอททริบิวต์รหัสชุดวิชาและหมู่เรียนประกอบกันเป็นคีย์หลัก
รีเลชันอาจารย์ผู้สอนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_13.gif)
หากทราบค่าของ Determinant คือ รหัสชุดวิชาและหมู่เรียนใดก็จะสามารถทราบค่าของ Dependent หรือแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกัน คือ ชื่ออาจารย์ผู้สอนในรหัสชุดวิชาและหมู่เรียนนั้นได้ ดังนั้น แอททริบิวต์ชื่ออาจารย์ผู้สอนจึงมีความสัมพันธ์ระหว่างแอททริบิวต์แบบทั้งหมดกับแอททริบิวต์รหัส ชุดวิชาและหมู่เรียน
2. ความสัมพันธ์ระหว่างแอททริบิวต์แบบบางส่วน
ความสัมพันธ์ระหว่างแอททริบิวต์แบบบางส่วน จะเกิดขึ้นได้เมื่อรีเลชันหนึ่ง ๆ มีคีย์หลักเป็นคีย์ผสม และแอททริบิวต์บางส่วนของคีย์หลักสามารถระบุค่าของแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกันที่ไม่ใช่คีย์หลัก (non-key attribute) ของรีเลชันได้ นั่นคือ หากทราบค่าใดค่าหนึ่งของบางแอททริบิวต์ที่เป็น Determinant ก็จะทำให้ทราบค่าของแอททริบิวต์อื่น ๆ ที่เป็น Dependent ได้
ตัวอย่างเช่น รีเลชันการลงทะเบียนประกอบด้วย แอททริบิวต์รหัสนักศึกษา รหัสชุดวิชา ชื่อชุดวิชา และหมู่เรียน โดยมีแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาประกอบกันเป็นคีย์หลัก
รหัสนักศึกษา |
รหัสชุดวิชา |
ชื่อชุดวิชา |
หมู่เรียน |
41010703 |
729101 |
เศรษฐศาสตร์เบื้องต้น |
700 |
41010703 |
729111 |
คณิตศาสตร์และสถิติ |
711 |
41010703 |
999211 |
คอมพิวเตอร์เบื้องต้น |
713 |
41010943 |
729111 |
คณิตศาสตร์และสถิติ |
712 |
41010943 |
999211 |
คอมพิวเตอร์เบื้องต้น |
711 |
41010943 |
729104 |
การจัดการการเงิน |
700 |
ภาพที่ 4 รีเลชันการลงทะเบียน
รีเลชันการลงทะเบียนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชันดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_14.gif)
เขียน FD ไดอะแกรมได้ดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_15.gif)
จากภาพ รีเลชันการลงทะเบียนมีแอททริบิวต์รหัสนักศึกษาและรหัสชุดวิชาประกอบกันเป็นคีย์หลักหรือ Determinant ที่สามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกัน คือ ชื่อชุดวิชาและหมู่เรียน ได้ ขณะเดียวกัน รีเลชันการลงทะเบียนมีความสัมพันธ์ระหว่างแอททริบิวต์แบบบางส่วนเกิดขึ้น เนื่องจากแอททริบิวต์รหัสชุดวิชาซึ่งเป็นส่วนประกอบหนึ่งของคีย์หลักสามารถระบุค่าของชื่อชุดวิชาซึ่งเป็นแอททริบิวต์ที่ไม่ใช่คีย์หลักของรีเลชันได้ ซึ่งความสัมพันธ์ในลักษณะดังกล่าวนี้อาจก่อให้เกิดปัญหาเรื่องความซ้ำซ้อนในการปรับปรุงข้อมูลได้
3. ความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive
แม้ว่าแอททริบิวต์ที่มีคุณสมบัติเป็นคีย์หลักจะสามารถระบุค่าของแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกันของรีเลชันได้ แต่ทว่าในบางรีเลชันที่มีการออกแบบไม่เหมาะสม อาจมีแอททริบิวต์อื่นที่ไม่ใช่คีย์หลักแต่สามารถระบุค่าของแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกันของรีเลชันได้เช่นกัน ลักษณะของความสัมพันธ์ดังกล่าวนี้เรียกว่า ความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive
รหัสนักศึกษา |
ชื่อนักศึกษา |
รหัสอาจารย์ |
ชื่ออาจารย์ที่ปรึกษา |
41010703 |
สมชาย พลจันทร์ |
Q1059 |
สัมพันธ์ เย็นสำราญ |
41010943 |
สุทิศา พินิจไพฑูรย์ |
Q1011 |
ศิริภัทรา เหมือนมาลัย |
41012147 |
ณัฐพร ประคองเก็บ |
Q1061 |
เมธี ปิยะคุณ |
41012451 |
นพดล ทับทิมทอง |
Q1035 |
ศิริชัย ศรีพรหม |
41013327 |
มัทนา พินิจไพฑูรย์ |
Q1059 |
สัมพันธ์ เย็นสำราญ |
41013780 |
สมชาย พลจันทร์ |
Q1011 |
ศิริภัทรา เหมือนมาลัย |
ภาพที่ 5 รีเลชันที่ปรึกษา
ตัวอย่างเช่น รีเลชันที่ปรึกษาประกอบด้วย แอททริบิวต์รหัสนักศึกษา ชื่อนักศึกษา รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษา โดยมีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก
รีเลชันที่ปรึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบฟังก์ชัน ดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_16.gif)
เขียน FD ไดอะแกรมได้ดังนี้
จากภาพ รีเลชันที่ปรึกษามีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลักหรือ Determinant ที่สามารถระบุค่าของ Dependent หรือแอททริบิวต์อื่น ๆ ในทูเพิลเดียวกัน คือ ชื่อนักศึกษา รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษาได้ ในขณะเดียวกัน รีเลชันที่ปรึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Transitive เกิดขึ้น เนื่องจากรหัสอาจารย์ซึ่งเป็นแอททริบิวต์ที่ไม่ใช่คีย์หลักสามารถระบุค่าของแอททริบิวต์อื่นๆ ในทูเพิล เดียวกัน คือ ชื่ออาจารย์ที่ปรึกษา ได้
2. ความสัมพันธ์ระหว่างแอททริบิวต์แบบหลายค่า
ความสัมพันธ์ระหว่างแอททริบิวต์แบบหลายค่า หรือ MVD จะเกิดขึ้นได้เมื่อรีเลชันหนึ่ง ๆ ประกอบด้วยสามแอททริบิวต์ขึ้นไป และแอททริบิวต์ที่เป็น Determinant สามารถระบุค่าของแอททริบิวต์อื่นที่เป็น Dependent ได้มากกว่าหนึ่งค่า หรือ ข้อมูลของแอททริบิวต์ที่เป็น Dependent จะเป็นกลุ่มของข้อมูล
ความสัมพันธ์ระหว่างแอททริบิวต์แบบหลายค่าสามารถใช้สัญลักษณ์ ในการสื่อความหมาย ได้ดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_18.gif)
หมายความว่า หากทราบค่าของแอททริบิวต์ A หนึ่งค่าจะสามารถทราบค่าของแอททริบิวต์ B ได้หลายค่า และเมื่อทราบค่าของแอททริบิวต์ A หนึ่งค่าจะสามารถทราบค่าของแอททริบิวต์ C ได้หลายค่า
เพื่อให้เข้าใจความสัมพันธ์ระหว่างแอททริบิวต์แบบหลายค่าดียิ่งขึ้น ในที่นี้ขอนำตัวอย่างมาประกอบดังนี้
ตัวอย่างเช่น รีเลชันการสอน-การปรึกษาประกอบด้วย แอททริบิวต์รหัสอาจารย์ รหัสชุดวิชาที่สอน และรหัสนักศึกษาในการปรึกษา โดยมีแอททริบิวต์รหัสอาจารย์ รหัสชุดวิชาที่สอน และรหัสนักศึกษาใน การปรึกษาประกอบกันเป็นคีย์หลัก
รหัสอาจารย์ |
รหัสชุดวิชาที่สอน |
รหัสนักศึกษาในการปรึกษา |
Q1011 |
999211 |
41010943 |
Q1011 |
999211 |
41013780 |
Q1035 |
729101 |
41012451 |
Q1035 |
729104 |
41012451 |
Q1035 |
999211 |
41012451 |
Q1059 |
729111 |
41010703 |
Q1059 |
729111 |
41013327 |
Q1061 |
729103 |
41012147 |
ภาพที่ 6 รีเลชันการสอน-การปรึกษา
จากภาพ รีเลชันการสอน-การปรึกษามีแอททริบิวต์รหัสอาจารย์ รหัสชุดวิชาที่สอน และรหัส นักศึกษาในการปรึกษาประกอบกันเป็นคีย์หลัก โดยอาจารย์แต่ละคนจะสอนอย่างน้อย 1 ชุดวิชา ซึ่งบางคนอาจสอนชุดวิชาเดียวกันก็ได้ ขณะเดียวกันอาจารย์บางคนอาจมีนักศึกษาในการปรึกษาได้มากกว่า 1 คน โดยรหัสนักศึกษาในการปรึกษากับรหัสชุดวิชาที่สอนไม่มีความสัมพันธ์กันเลย
รีเลชันการสอน-การปรึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบหลายค่า ดังนี้
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_19.gif)
จากรีเลชัน หมายความว่า หากระบุค่าของรหัสอาจารย์หนึ่งค่าก็จะสามารถทราบรหัสชุดวิชาที่สอนได้หลายค่า เช่น ถ้าระบุค่าของรหัสอาจารย์ คือ Q1035 จะทำให้ทราบค่าของรหัสชุดวิชาที่สอน คือ 729101, 729104 และ 999211 และในขณะเดียวกัน หากระบุค่าของรหัสอาจารย์หนึ่งค่าก็จะสามารถทราบรหัสนักศึกษาในการปรึกษาได้หลายค่า เช่น ถ้าระบุค่าของรหัสอาจารย์ คือ Q1059 จะทำให้ทราบค่าของรหัสนักศึกษาในการปรึกษา คือ 41010703 และ 41013327
การที่รีเลชันเกิดความสัมพันธ์ในลักษณะดังกล่าวนี้ได้ เนื่องจากมีการนำแอททริบิวต์สามแอททริบิวต์ คือ รหัสอาจารย์ รหัสชุดวิชาที่สอน และ รหัสนักศึกษาในการปรึกษา มาไว้ในรีเลชันเดียวกัน โดยแอททริบิวต์รหัสอาจารย์มีความสัมพันธ์กับแอททริบิวต์รหัสชุดวิชาที่สอนและรหัสนักศึกษาในการปรึกษาเท่านั้น หากทว่าแอททริบิวต์รหัสชุดวิชาที่สอนและรหัสนักศึกษาในการปรึกษาไม่มีความสัมพันธ์ต่อกันเลย เมื่อทั้งสามแอททริบิวต์มาปรากฏอยู่ในรีเลชันเดียวกัน จึงทำให้เกิดค่าของข้อมูลที่ซ้ำซ้อนกันเป็นปัญหาต่อการปรับปรุง การเพิ่ม หรือการลบข้อมูลได้
3. ความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join
ความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join เป็นกฎเกณฑ์ที่สำคัญประการหนึ่งในการจำแนกรีเลชัน โดยรีเลชันใด ๆ จะมีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join เกิดขึ้นได้ก็ต่อเมื่อ รีเลชันนั้น ๆ สามารถจำแนกออกเป็นรีเลชันย่อยได้ และเมื่อนำรีเลชันย่อยที่จำแนกออกมาเหล่านั้นมารวมกันจะต้องได้รีเลชันกลับไปเหมือนเดิมเสมอ
ตัวอย่างเช่น รีเลชันที่ปรึกษาประกอบด้วย แอททริบิวต์รหัสนักศึกษา ชื่อนักศึกษา รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษา โดยมีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก
![](http://sot.swu.ac.th/Portals/156/sot/CP342/lesson04/image4_1_1_20.gif)
ภาพที่ 7 ความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join ของรีเลชันที่ปรึกษา
รีเลชันที่ปรึกษาสามารถจำแนกเป็นรีเลชันย่อยได้ 3 รีเลชัน คือ รีเลชันนักศึกษา รีเลชันอาจารย์ ที่ปรึกษา และรีเลชันนักศึกษา-อาจารย์
- รีเลชันนักศึกษาประกอบด้วย แอททริบิวต์รหัสนักศึกษา และชื่อนักศึกษา โดยมีแอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก
- รีเลชันอาจารย์ที่ปรึกษาประกอบด้วย แอททริบิวต์รหัสอาจารย์ และชื่ออาจารย์ที่ปรึกษา โดยมีแอททริบิวต์รหัสอาจารย์เป็นคีย์หลัก
- รีเลชันนักศึกษา-อาจารย์ประกอบด้วย แอททริบิวต์รหัสนักศึกษา และรหัสอาจารย์ โดยมี แอททริบิวต์รหัสนักศึกษาเป็นคีย์หลัก
เมื่อนำรีเลชันย่อยทั้งสามมารวมกัน จะได้รีเลชันเหมือนรีเลชันที่ปรึกษาเช่นเดิม
ดังนั้น จึงกล่าวได้ว่า รีเลชันที่ปรึกษามีความสัมพันธ์ระหว่างแอททริบิวต์แบบ Join เนื่องจาก รีเลชันที่ปรึกษาสามารถจำแนกออกเป็นรีเลชันย่อยได้ และเมื่อนำรีเลชันย่อยที่จำแนกออกมาเหล่านั้นมารวมกันก็จะได้รีเลชันที่ปรึกษาเหมือนเดิม
|