ความสัมพันธ์ฐานข้อมูลเป็นหัวใจสำคัญของฐานข้อมูลเชิงสัมพันธ์ทั้งหมด
มีการสร้างความสัมพันธ์ระหว่างสอง ตารางฐานข้อมูล เมื่อ ตาราง หนึ่งมีคีย์ต่างประเทศที่อ้างถึงคีย์หลักของตารางอื่น นี่เป็นแนวคิดพื้นฐานที่อยู่เบื้องหลังฐานข้อมูลเชิงสัมพันธ์ระยะ
วิธีการทำงานของคีย์ต่างประเทศเพื่อสร้างความสัมพันธ์
ขอทบทวนพื้นฐานของคีย์หลักและคีย์ต่างประเทศ คีย์หลักที่ ไม่ซ้ำกันระบุแต่ละระเบียนในตาราง เป็นประเภทของ คีย์ผู้สมัคร ที่มักจะเป็นคอลัมน์แรกในตารางและสามารถสร้างขึ้นโดยอัตโนมัติโดยฐานข้อมูลเพื่อให้แน่ใจว่าเป็นเอกลักษณ์
คีย์ต่างประเทศเป็นคีย์ผู้สมัครรายอื่น (ไม่ใช่คีย์หลัก) ที่ใช้ในการเชื่อมโยงระเบียนกับข้อมูลในตารางอื่น
ตัวอย่างเช่นพิจารณาทั้งสองตารางที่ระบุว่าครูสอนอะไรบ้าง
ที่นี่คีย์หลักของตารางของ Course_ID กุญแจต่างประเทศคือ Teacher_ID:
Course_ID | COURSE_NAME | Teacher_ID |
---|---|---|
Course_001 | ชีววิทยา | Teacher_001 |
Course_002 | คณิตศาสตร์ | Teacher_001 |
Course_003 | อังกฤษ | Teacher_003 |
คุณสามารถดูว่าคีย์ต่างประเทศในหลักสูตรตรงกับคีย์หลักในครู:
Teacher_ID | TEACHER_NAME |
---|---|
Teacher_001 | คาร์เมน |
Teacher_002 | เวโรนิก้า |
Teacher_003 | Jorge |
เราสามารถพูดได้ว่าคีย์คีย์ต่างประเทศของ Teacher_ID ช่วยในการสร้าง ความสัมพันธ์ ระหว่างตารางเรียนและตารางครู
ประเภทของความสัมพันธ์ฐานข้อมูล
การใช้คีย์ต่างประเทศหรือคีย์ผู้สมัครอื่น ๆ คุณสามารถใช้ความสัมพันธ์ระหว่างตารางได้สามประเภท:
แบบตัวต่อตัว : ความสัมพันธ์ประเภทนี้อนุญาตให้มีเพียงหนึ่งระเบียนในแต่ละด้านของความสัมพันธ์
คีย์หลักเกี่ยวข้องกับระเบียนเดียวหรือไม่มีเลยในตารางอื่น ตัวอย่างเช่นในการแต่งงานคู่สมรสแต่ละคนมีคู่สมรสเพียงคนเดียวเท่านั้น ความสัมพันธ์แบบนี้สามารถใช้งานได้ในตารางเดียวดังนั้นจึงไม่ใช้คีย์ต่างประเทศ
One-to-many : ความสัมพันธ์แบบหนึ่งต่อหลายช่วยให้เร็กคอร์ดเดียวในตารางเดียวที่เกี่ยวข้องกับระเบียนหลายรายการในตารางอื่น
พิจารณาธุรกิจที่มีฐานข้อมูลที่มีตารางลูกค้าและใบสั่งซื้อ
ลูกค้ารายเดียวสามารถสั่งซื้อได้หลายรายการ แต่คำสั่งซื้อเดียวไม่สามารถเชื่อมโยงกับลูกค้าหลายราย ตารางใบสั่งจะมีคีย์ต่างประเทศที่ตรงกับคีย์หลักของตารางลูกค้าในขณะที่ตารางลูกค้าจะไม่มีคีย์ต่างประเทศที่ชี้ไปยังตาราง Orders
หลายต่อหลายคน : นี่คือความสัมพันธ์ที่ซับซ้อนซึ่งระเบียนหลายรายการในตารางสามารถเชื่อมโยงไปยังระเบียนจำนวนมากในตารางอื่นได้ ตัวอย่างเช่นธุรกิจของเราอาจต้องการเฉพาะลูกค้าและตารางใบสั่งซื้อเท่านั้น แต่ยังต้องการตารางผลิตภัณฑ์
ความสัมพันธ์ระหว่างตารางลูกค้าและใบสั่งซื้ออีกครั้งหนึ่งคือความสัมพันธ์ระหว่างตารางคำสั่งซื้อและผลิตภัณฑ์ คำสั่งซื้อสามารถมีผลิตภัณฑ์ได้หลายรายการและสามารถเชื่อมโยงผลิตภัณฑ์กับคำสั่งซื้อหลายรายการได้: ลูกค้าหลายรายอาจส่งคำสั่งซื้อที่มีผลิตภัณฑ์บางอย่างเหมือนกัน ความสัมพันธ์แบบนี้ต้องใช้เวลาอย่างน้อยสามตาราง
อะไรคือความสัมพันธ์ฐานข้อมูลสำคัญ?
การสร้างความสัมพันธ์ระหว่างตารางฐานข้อมูลช่วยให้มั่นใจได้ว่าข้อมูลมีความสมบูรณ์มีส่วนช่วยในการฟื้นฟูฐานข้อมูล ตัวอย่างเช่นถ้าเราไม่ได้เชื่อมโยงตารางใด ๆ ผ่านคีย์ต่างประเทศและเพียงแค่รวมข้อมูลในตารางหลักสูตรและครูเช่น:
Teacher_ID | TEACHER_NAME | หลักสูตร |
---|---|---|
Teacher_001 | คาร์เมน | ชีววิทยาคณิตศาสตร์ |
Teacher_002 | เวโรนิก้า | คณิตศาสตร์ |
Teacher_003 | Jorge | อังกฤษ |
การออกแบบนี้ไม่ยืดหยุ่นและละเมิดหลักเกณฑ์แรกของการทำให้เป็นบรรทัดฐานของฐานข้อมูล First Normal Form (1NF) ซึ่งระบุว่าแต่ละเซลล์ในตารางควรมีข้อมูลชิ้นเดียวที่ไม่ต่อเนื่อง
หรือบางทีเราอาจตัดสินใจที่จะเพิ่มระเบียนที่สองสำหรับ Carmen เพื่อบังคับใช้ 1NF:
Teacher_ID | TEACHER_NAME | หลักสูตร |
---|---|---|
Teacher_001 | คาร์เมน | ชีววิทยา |
Teacher_001 | คาร์เมน | คณิตศาสตร์ |
Teacher_002 | เวโรนิก้า | คณิตศาสตร์ |
Teacher_003 | Jorge | อังกฤษ |
นี่ยังเป็นการออกแบบที่อ่อนแอแนะนำการทำซ้ำที่ไม่จำเป็นและสิ่งที่เรียกว่า ข้อมูลที่มีความผิดปกติในการแทรกข้อมูล ซึ่งหมายความว่าอาจส่งผลต่อข้อมูลที่ไม่สอดคล้องกัน
ตัวอย่างเช่นถ้าครูมีหลายเร็กคอร์ดจะทำอย่างไรถ้าจำเป็นต้องแก้ไขข้อมูลบางอย่าง แต่บุคคลที่ทำการแก้ไขข้อมูลไม่ทราบว่ามีระเบียนหลายรายการอยู่หรือไม่? ตารางจะมีข้อมูลที่แตกต่างกันสำหรับบุคคลรายเดียวกันโดยไม่มีวิธีชัดเจนในการระบุหรือหลีกเลี่ยง
การแบ่งตารางนี้ออกเป็นสองตารางครูและหลักสูตร (ดังที่ได้อธิบายไว้ข้างต้น) สร้างความสัมพันธ์ที่เหมาะสมระหว่างข้อมูลและช่วยให้มั่นใจได้ว่าข้อมูลมีความสอดคล้องและถูกต้อง