Skip to main content

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

สอน SQL: ความสัมพันธ์ระหว่างตาราง ตอนที่ 1 (Table relationship) (มิถุนายน 2025)

สอน SQL: ความสัมพันธ์ระหว่างตาราง ตอนที่ 1 (Table relationship) (มิถุนายน 2025)
Anonim

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

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

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

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

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

ที่นี่คีย์หลักของตารางของ Course_ID กุญแจต่างประเทศคือ Teacher_ID:

หลักสูตร
Course_IDCOURSE_NAMETeacher_ID
Course_001ชีววิทยาTeacher_001
Course_002คณิตศาสตร์Teacher_001
Course_003อังกฤษTeacher_003

คุณสามารถดูว่าคีย์ต่างประเทศในหลักสูตรตรงกับคีย์หลักในครู:

ครูผู้สอน
Teacher_IDTEACHER_NAME
Teacher_001คาร์เมน
Teacher_002เวโรนิก้า
Teacher_003Jorge

เราสามารถพูดได้ว่าคีย์ต่างประเทศของ Teacher_ID ช่วยในการสร้าง a ความสัมพันธ์ ระหว่างหลักสูตรกับตารางครู

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

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

หนึ่งต่อหนึ่ง: ความสัมพันธ์ประเภทนี้อนุญาตให้มีเพียงหนึ่งระเบียนในแต่ละด้านของความสัมพันธ์เท่านั้น

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

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

พิจารณาธุรกิจที่มีฐานข้อมูลที่มีตารางลูกค้าและใบสั่งซื้อ

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

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

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

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

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

ครูและหลักสูตร
Teacher_IDTEACHER_NAMEหลักสูตร
Teacher_001คาร์เมนชีววิทยาคณิตศาสตร์
Teacher_002เวโรนิก้าคณิตศาสตร์
Teacher_003Jorgeอังกฤษ

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

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

ครูและหลักสูตร
Teacher_IDTEACHER_NAMEหลักสูตร
Teacher_001คาร์เมนชีววิทยา
Teacher_001คาร์เมนคณิตศาสตร์
Teacher_002เวโรนิก้าคณิตศาสตร์
Teacher_003Jorgeอังกฤษ

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

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

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