ความสัมพันธ์ถูกสร้างขึ้นระหว่างตารางฐานข้อมูลสองตารางเมื่อตารางหนึ่งใช้คีย์ภายนอกที่อ้างอิงคีย์หลักของตารางอื่น นี่คือแนวคิดพื้นฐานเบื้องหลังคำว่าฐานข้อมูลเชิงสัมพันธ์
กุญแจต่างประเทศทำงานอย่างไรเพื่อสร้างความสัมพันธ์
คีย์หลักจะระบุแต่ละระเบียนในตารางโดยไม่ซ้ำกัน เป็นชนิดของคีย์ตัวเลือกที่มักจะเป็นคอลัมน์แรกในตาราง และฐานข้อมูลสามารถสร้างโดยอัตโนมัติเพื่อให้แน่ใจว่าไม่ซ้ำกัน คีย์นอกเป็นคีย์ตัวเลือกอื่น (ไม่ใช่คีย์หลัก) ที่ใช้เชื่อมโยงระเบียนกับข้อมูลในตารางอื่น
ตัวอย่างเช่น พิจารณาตารางสองตารางนี้ที่ระบุว่าครูคนใดสอนหลักสูตรใด ที่นี่ คีย์หลักของตารางรายวิชาคือ Course_ID รหัสต่างประเทศของมันคือ Teacher_ID:
หลักสูตร_ID | Course_Name | ครู_ID |
---|---|---|
หลักสูตร_001 | ชีววิทยา | ครู_001 |
หลักสูตร_002 | คณิตศาสตร์ | ครู_002 |
หลักสูตร_003 | ภาษาอังกฤษ | ครู_003 |
คุณจะเห็นว่ารหัสต่างประเทศในหลักสูตรตรงกับรหัสหลักในครู:
ครู_ID | Teacher_Name |
---|---|
ครู_001 | คาร์เมน |
ครู_002 | เวโรนิก้า |
ครู_003 | จอร์เก้ |
เราสามารถพูดได้ว่าคีย์นอก Teacher_ID ช่วยสร้างความสัมพันธ์ระหว่างตารางรายวิชาและตารางผู้สอน
ประเภทของความสัมพันธ์ฐานข้อมูล
การใช้คีย์นอกหรือคีย์ตัวเลือกอื่นๆ คุณสามารถใช้ความสัมพันธ์สามประเภทระหว่างตาราง:
ตัวต่อตัว
ความสัมพันธ์ประเภทนี้อนุญาตให้มีระเบียนเดียวเท่านั้นในแต่ละด้านของความสัมพันธ์ คีย์หลักเกี่ยวข้องกับระเบียนเดียว (หรือไม่มีเลย) ในตารางอื่น ตัวอย่างเช่น ในการแต่งงาน คู่สมรสแต่ละคนมีคู่สมรสเพียงคนเดียว ความสัมพันธ์ประเภทนี้สามารถใช้ได้ในตารางเดียว ดังนั้นจึงไม่ใช้คีย์ต่างประเทศ
หนึ่งต่อหลายคน
ความสัมพันธ์แบบหนึ่งต่อกลุ่มช่วยให้ระเบียนเดียวในตารางหนึ่งเชื่อมโยงกับหลายระเบียนในอีกตารางหนึ่ง พิจารณาธุรกิจที่มีฐานข้อมูลที่มีตารางลูกค้าและใบสั่งซื้อ
ลูกค้ารายเดียวสามารถซื้อคำสั่งซื้อได้หลายรายการ แต่คำสั่งซื้อเดียวไม่สามารถเชื่อมโยงกับลูกค้าหลายรายได้ ดังนั้นตารางใบสั่งซื้อจะมีคีย์ต่างประเทศที่ตรงกับคีย์หลักของตารางลูกค้า ในขณะที่ตารางลูกค้าจะไม่มีคีย์ต่างประเทศที่ชี้ไปที่ตารางใบสั่งซื้อ
หลายต่อหลาย
นี่คือความสัมพันธ์ที่ซับซ้อนซึ่งระเบียนจำนวนมากในตารางหนึ่งสามารถเชื่อมโยงไปยังระเบียนจำนวนมากในอีกตารางหนึ่งได้ ตัวอย่างเช่น ธุรกิจของเราอาจต้องการตารางลูกค้าและใบสั่งซื้อ และมีแนวโน้มว่าจะต้องมีตารางสินค้าด้วย
อีกครั้ง ความสัมพันธ์ระหว่างตารางลูกค้าและใบสั่งซื้อเป็นแบบหนึ่งต่อกลุ่ม แต่ให้พิจารณาความสัมพันธ์ระหว่างตารางใบสั่งซื้อกับสินค้า คำสั่งซื้อสามารถมีสินค้าได้หลายรายการ และผลิตภัณฑ์สามารถเชื่อมโยงกับคำสั่งซื้อหลายรายการ เนื่องจากลูกค้าหลายรายอาจส่งคำสั่งซื้อที่มีผลิตภัณฑ์เดียวกันบางรายการ ความสัมพันธ์แบบนี้ต้องมีอย่างน้อยสามตาราง
เหตุใดความสัมพันธ์ของฐานข้อมูลจึงสำคัญ
การสร้างความสัมพันธ์ที่สอดคล้องกันระหว่างตารางฐานข้อมูลช่วยให้มั่นใจถึงความสมบูรณ์ของข้อมูล ซึ่งมีส่วนช่วยในการปรับฐานข้อมูลให้เป็นมาตรฐาน ตัวอย่างเช่น จะเกิดอะไรขึ้นถ้าเราไม่ได้เชื่อมโยงตารางใดๆ ผ่านคีย์ต่างประเทศ และแทนที่จะรวมข้อมูลในตารางหลักสูตรและครู เช่น:
ครู_ID | Teacher_Name | หลักสูตร |
---|---|---|
ครู_001 | คาร์เมน | ชีววิทยา คณิตศาสตร์ |
ครู_002 | เวโรนิก้า | คณิตศาสตร์ |
ครู_003 | จอร์เก้ | ภาษาอังกฤษ |
การออกแบบนี้ไม่ยืดหยุ่นและละเมิดหลักการแรกของการทำให้ฐานข้อมูลเป็นมาตรฐาน First Normal Form ซึ่งระบุว่าแต่ละเซลล์ตารางควรมีข้อมูลเดียวที่ไม่ต่อเนื่อง
หรือบางทีเราตัดสินใจเพิ่มบันทึกที่สองสำหรับ Carmen เพื่อบังคับใช้ 1NF:
ครู_ID | Teacher_Name | หลักสูตร |
---|---|---|
ครู_001 | คาร์เมน | ชีววิทยา |
ครู_001 | คาร์เมน | คณิตศาสตร์ |
ครู_002 | เวโรนิก้า | คณิตศาสตร์ |
ครู_003 | จอร์เก้ | ภาษาอังกฤษ |
นี่ยังเป็นการออกแบบที่อ่อนแอ ทำให้เกิดความซ้ำซ้อนที่ไม่จำเป็นและสิ่งที่เรียกว่าการแทรกข้อมูลที่ผิดปกติ ซึ่งหมายความว่าอาจมีส่วนทำให้ข้อมูลไม่สอดคล้องกันตัวอย่างเช่น ถ้าครูมีหลายระเบียน จะเกิดอะไรขึ้นถ้าข้อมูลบางอย่างจำเป็นต้องแก้ไข แต่ผู้ดำเนินการแก้ไขข้อมูลไม่ทราบว่ามีระเบียนหลายรายการอยู่ จากนั้นตารางจะมีข้อมูลที่แตกต่างกันสำหรับบุคคลเดียวกัน โดยไม่มีวิธีที่ชัดเจนในการระบุหรือหลีกเลี่ยง
การแบ่งตารางนี้ออกเป็นสองตาราง คือ ครูและหลักสูตร สร้างความสัมพันธ์ที่เหมาะสมระหว่างข้อมูล ดังนั้นจึงช่วยให้มั่นใจถึงความสอดคล้องและความถูกต้องของข้อมูล