ในฐานข้อมูลเชิงสัมพันธ์ การขึ้นต่อกันเกิดขึ้นเมื่อข้อมูลที่เก็บไว้ในตารางฐานข้อมูลเดียวกันกำหนดข้อมูลอื่นที่จัดเก็บไว้ในตารางเดียวกันโดยไม่ซ้ำกัน การขึ้นต่อกันแบบหลายค่าเกิดขึ้นเมื่อการมีอยู่ของแถวอย่างน้อยหนึ่งแถวในตารางแสดงถึงการมีแถวอื่นอย่างน้อยหนึ่งแถวในตารางเดียวกันนั้น กล่าวอีกนัยหนึ่ง แอตทริบิวต์สองรายการ (หรือคอลัมน์) ในตารางไม่แยกจากกัน แต่ทั้งคู่ขึ้นอยู่กับแอตทริบิวต์ที่สาม
การพึ่งพาแบบหลายค่าป้องกันรูปแบบปกติที่สี่ของมาตรฐานการทำให้เป็นมาตรฐาน ฐานข้อมูลเชิงสัมพันธ์มีรูปแบบปกติห้ารูปแบบที่แสดงแนวทางในการออกแบบบันทึกป้องกันการอัปเดตผิดปกติและความไม่สอดคล้องกันในข้อมูล รูปแบบปกติที่สี่เกี่ยวข้องกับความสัมพันธ์แบบกลุ่มต่อหนึ่งในฐานข้อมูล
การพึ่งพาฟังก์ชันเทียบกับการพึ่งพาหลายค่า
เพื่อให้เข้าใจการขึ้นต่อกันแบบหลายค่า คุณควรทบทวนว่าการพึ่งพาฟังก์ชันคืออะไร
หากแอตทริบิวต์ X กำหนดแอตทริบิวต์ Y อย่างไม่ซ้ำกัน ดังนั้น Y จะขึ้นอยู่กับฟังก์ชันของ X ซึ่งเขียนเป็น X -> Y ตัวอย่างเช่น ในตารางนักเรียนด้านล่าง Student_Name จะกำหนดวิชาเอก:
Student_Name | เมเจอร์ |
---|---|
ราวี | ประวัติศาสตร์ศิลปะ |
เบธ | เคมี |
การพึ่งพาการทำงานนี้สามารถเขียนได้: Student_Name -> Major Student_Name แต่ละคนกำหนดหนึ่งวิชาเอกเท่านั้น
หากคุณต้องการให้ฐานข้อมูลติดตามกีฬาที่นักเรียนเหล่านี้ทำ คุณอาจคิดว่าวิธีที่ง่ายที่สุดในการทำเช่นนี้คือเพิ่มคอลัมน์อื่นชื่อ Sport:
Student_Name | เมเจอร์ | กีฬา |
---|---|---|
ราวี | ประวัติศาสตร์ศิลปะ | ฟุตบอล |
ราวี | ประวัติศาสตร์ศิลปะ | วอลเลย์บอล |
ราวี | ประวัติศาสตร์ศิลปะ | เทนนิส |
เบธ | เคมี | เทนนิส |
เบธ | เคมี | ฟุตบอล |
ปัญหาคือทั้งราวี่และเบธเล่นกีฬาหลายอย่าง จำเป็นต้องเพิ่มแถวใหม่สำหรับกีฬาเพิ่มเติมทุกประเภท
ตารางนี้แนะนำการพึ่งพาหลายค่าเนื่องจากวิชาเอกและกีฬาเป็นอิสระจากกัน แต่ทั้งคู่ขึ้นอยู่กับนักเรียน นี่เป็นตัวอย่างง่ายๆ และระบุได้ง่าย แต่การพึ่งพาหลายค่าอาจกลายเป็นปัญหาในฐานข้อมูลขนาดใหญ่ที่ซับซ้อนได้
การพึ่งพาแบบหลายค่าเขียน X ->-> Y. ในกรณีนี้:
Student_Name ->-> Major
Student_Name ->- > กีฬา
อ่านว่า "Student_Name multidetermines Major" และ "Student_Name multidetermines Sport"
การขึ้นต่อกันแบบหลายค่าต้องมีแอตทริบิวต์อย่างน้อย 3 อย่างเสมอ เพราะประกอบด้วยแอตทริบิวต์อย่างน้อย 2 รายการที่ต้องพึ่งพาหนึ่งในสาม
การพึ่งพาหลายค่าและการทำให้เป็นมาตรฐาน
ตารางที่มีการขึ้นต่อกันแบบหลายค่าละเมิดมาตรฐานการทำให้เป็นมาตรฐานของรูปแบบปกติที่สี่ เพราะมันสร้างความซ้ำซ้อนที่ไม่จำเป็น และสามารถนำไปสู่ข้อมูลที่ไม่สอดคล้องกัน ในการทำให้ถึง 4NF จำเป็นต้องแบ่งข้อมูลนี้ออกเป็นสองตาราง
ตอนนี้ตารางด้านล่างมีการพึ่งพาการใช้งานของ Student_Name -> Major และไม่มีการพึ่งพาหลายค่า:
Student_Name | เมเจอร์ |
---|---|
ราวี | ประวัติศาสตร์ศิลปะ |
ราวี | ประวัติศาสตร์ศิลปะ |
ราวี | ประวัติศาสตร์ศิลปะ |
เบธ | เคมี |
เบธ | เคมี |
ในขณะที่ตารางนี้มีการพึ่งพาการใช้งานเพียงรายการเดียวของ Student_Name -> Sport:
Student_Name | กีฬา |
---|---|
ราวี | ฟุตบอล |
ราวี | วอลเลย์บอล |
ราวี | เทนนิส |
เบธ | เทนนิส |
เบธ | ฟุตบอล |
การทำให้เป็นบรรทัดฐานมักจะทำได้โดยทำให้ตารางที่ซับซ้อนง่ายขึ้น เพื่อให้มีข้อมูลที่เกี่ยวข้องกับแนวคิดหรือธีมเดียว แทนที่จะพยายามทำให้ตารางเดียวมีข้อมูลที่แตกต่างกันมากเกินไป