การพึ่งพาหลายค่าในฐานข้อมูล

สารบัญ:

การพึ่งพาหลายค่าในฐานข้อมูล
การพึ่งพาหลายค่าในฐานข้อมูล
Anonim

ในฐานข้อมูลเชิงสัมพันธ์ การขึ้นต่อกันเกิดขึ้นเมื่อข้อมูลที่เก็บไว้ในตารางฐานข้อมูลเดียวกันกำหนดข้อมูลอื่นที่จัดเก็บไว้ในตารางเดียวกันโดยไม่ซ้ำกัน การขึ้นต่อกันแบบหลายค่าเกิดขึ้นเมื่อการมีอยู่ของแถวอย่างน้อยหนึ่งแถวในตารางแสดงถึงการมีแถวอื่นอย่างน้อยหนึ่งแถวในตารางเดียวกันนั้น กล่าวอีกนัยหนึ่ง แอตทริบิวต์สองรายการ (หรือคอลัมน์) ในตารางไม่แยกจากกัน แต่ทั้งคู่ขึ้นอยู่กับแอตทริบิวต์ที่สาม

Image
Image

การพึ่งพาแบบหลายค่าป้องกันรูปแบบปกติที่สี่ของมาตรฐานการทำให้เป็นมาตรฐาน ฐานข้อมูลเชิงสัมพันธ์มีรูปแบบปกติห้ารูปแบบที่แสดงแนวทางในการออกแบบบันทึกป้องกันการอัปเดตผิดปกติและความไม่สอดคล้องกันในข้อมูล รูปแบบปกติที่สี่เกี่ยวข้องกับความสัมพันธ์แบบกลุ่มต่อหนึ่งในฐานข้อมูล

การพึ่งพาฟังก์ชันเทียบกับการพึ่งพาหลายค่า

เพื่อให้เข้าใจการขึ้นต่อกันแบบหลายค่า คุณควรทบทวนว่าการพึ่งพาฟังก์ชันคืออะไร

หากแอตทริบิวต์ 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 กีฬา
ราวี ฟุตบอล
ราวี วอลเลย์บอล
ราวี เทนนิส
เบธ เทนนิส
เบธ ฟุตบอล

การทำให้เป็นบรรทัดฐานมักจะทำได้โดยทำให้ตารางที่ซับซ้อนง่ายขึ้น เพื่อให้มีข้อมูลที่เกี่ยวข้องกับแนวคิดหรือธีมเดียว แทนที่จะพยายามทำให้ตารางเดียวมีข้อมูลที่แตกต่างกันมากเกินไป