ความสัมพันธ์ฐานข้อมูล

ความสัมพันธ์ฐานข้อมูลเป็นหัวใจสำคัญของฐานข้อมูลเชิงสัมพันธ์ทั้งหมด

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

วิธีการทำงานของคีย์ต่างประเทศเพื่อสร้างความสัมพันธ์

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

คีย์ต่างประเทศเป็นคีย์ผู้สมัครรายอื่น (ไม่ใช่คีย์หลัก) ที่ใช้ในการเชื่อมโยงระเบียนกับข้อมูลในตารางอื่น

ตัวอย่างเช่นพิจารณาทั้งสองตารางที่ระบุว่าครูสอนอะไรบ้าง

ที่นี่คีย์หลักของตารางของ 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 อังกฤษ

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

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

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