ความสัมพันธ์ของฐานข้อมูลคืออะไร?

สารบัญ:

ความสัมพันธ์ของฐานข้อมูลคืออะไร?
ความสัมพันธ์ของฐานข้อมูลคืออะไร?
Anonim

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

กุญแจต่างประเทศทำงานอย่างไรเพื่อสร้างความสัมพันธ์

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

ตัวอย่างเช่น พิจารณาตารางสองตารางนี้ที่ระบุว่าครูคนใดสอนหลักสูตรใด ที่นี่ คีย์หลักของตารางรายวิชาคือ Course_ID รหัสต่างประเทศของมันคือ Teacher_ID:

หลักสูตร_ID Course_Name ครู_ID
หลักสูตร_001 ชีววิทยา ครู_001
หลักสูตร_002 คณิตศาสตร์ ครู_002
หลักสูตร_003 ภาษาอังกฤษ ครู_003

คุณจะเห็นว่ารหัสต่างประเทศในหลักสูตรตรงกับรหัสหลักในครู:

ครู_ID Teacher_Name
ครู_001 คาร์เมน
ครู_002 เวโรนิก้า
ครู_003 จอร์เก้

เราสามารถพูดได้ว่าคีย์นอก Teacher_ID ช่วยสร้างความสัมพันธ์ระหว่างตารางรายวิชาและตารางผู้สอน

Image
Image

ประเภทของความสัมพันธ์ฐานข้อมูล

การใช้คีย์นอกหรือคีย์ตัวเลือกอื่นๆ คุณสามารถใช้ความสัมพันธ์สามประเภทระหว่างตาราง:

ตัวต่อตัว

ความสัมพันธ์ประเภทนี้อนุญาตให้มีระเบียนเดียวเท่านั้นในแต่ละด้านของความสัมพันธ์ คีย์หลักเกี่ยวข้องกับระเบียนเดียว (หรือไม่มีเลย) ในตารางอื่น ตัวอย่างเช่น ในการแต่งงาน คู่สมรสแต่ละคนมีคู่สมรสเพียงคนเดียว ความสัมพันธ์ประเภทนี้สามารถใช้ได้ในตารางเดียว ดังนั้นจึงไม่ใช้คีย์ต่างประเทศ

หนึ่งต่อหลายคน

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

ลูกค้ารายเดียวสามารถซื้อคำสั่งซื้อได้หลายรายการ แต่คำสั่งซื้อเดียวไม่สามารถเชื่อมโยงกับลูกค้าหลายรายได้ ดังนั้นตารางใบสั่งซื้อจะมีคีย์ต่างประเทศที่ตรงกับคีย์หลักของตารางลูกค้า ในขณะที่ตารางลูกค้าจะไม่มีคีย์ต่างประเทศที่ชี้ไปที่ตารางใบสั่งซื้อ

หลายต่อหลาย

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

อีกครั้ง ความสัมพันธ์ระหว่างตารางลูกค้าและใบสั่งซื้อเป็นแบบหนึ่งต่อกลุ่ม แต่ให้พิจารณาความสัมพันธ์ระหว่างตารางใบสั่งซื้อกับสินค้า คำสั่งซื้อสามารถมีสินค้าได้หลายรายการ และผลิตภัณฑ์สามารถเชื่อมโยงกับคำสั่งซื้อหลายรายการ เนื่องจากลูกค้าหลายรายอาจส่งคำสั่งซื้อที่มีผลิตภัณฑ์เดียวกันบางรายการ ความสัมพันธ์แบบนี้ต้องมีอย่างน้อยสามตาราง

เหตุใดความสัมพันธ์ของฐานข้อมูลจึงสำคัญ

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

ครู_ID Teacher_Name หลักสูตร
ครู_001 คาร์เมน ชีววิทยา คณิตศาสตร์
ครู_002 เวโรนิก้า คณิตศาสตร์
ครู_003 จอร์เก้ ภาษาอังกฤษ

การออกแบบนี้ไม่ยืดหยุ่นและละเมิดหลักการแรกของการทำให้ฐานข้อมูลเป็นมาตรฐาน First Normal Form ซึ่งระบุว่าแต่ละเซลล์ตารางควรมีข้อมูลเดียวที่ไม่ต่อเนื่อง

หรือบางทีเราตัดสินใจเพิ่มบันทึกที่สองสำหรับ Carmen เพื่อบังคับใช้ 1NF:

ครู_ID Teacher_Name หลักสูตร
ครู_001 คาร์เมน ชีววิทยา
ครู_001 คาร์เมน คณิตศาสตร์
ครู_002 เวโรนิก้า คณิตศาสตร์
ครู_003 จอร์เก้ ภาษาอังกฤษ

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

การแบ่งตารางนี้ออกเป็นสองตาราง คือ ครูและหลักสูตร สร้างความสัมพันธ์ที่เหมาะสมระหว่างข้อมูล ดังนั้นจึงช่วยให้มั่นใจถึงความสอดคล้องและความถูกต้องของข้อมูล