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