Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL

โมเดลความสัมพันธ์แบบกลุ่มต่อกลุ่ม


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

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

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

โมเดลความสัมพันธ์แบบกลุ่มต่อกลุ่ม

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

คำสั่งซื้อมีหลายรายการใน OrderDetails รายการ OrderDetails เป็นของคำสั่งซื้อหนึ่งโดยเฉพาะ

ผลิตภัณฑ์อาจปรากฏใน OrderDetails จำนวนมาก แต่ละรายการ OrderDetails ระบุหนึ่งผลิตภัณฑ์