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

โมเดลความสัมพันธ์ Many-to-Many


ในฐานข้อมูล "product sales" ออเดอร์ของลูกค้าอาจมีสินค้าหนึ่งหรือหลายชิ้น และสินค้าหนึ่งชิ้นสามารถปรากฏในออเดอร์หลายออเดอร์ ในฐานข้อมูล "bookstore" หนังสือหนึ่งเล่มเขียนโดยผู้แต่งหนึ่งหรือหลายคน ในขณะที่ผู้แต่งหนึ่งคนอาจเขียนหนังสือศูนย์หรือหลายเล่ม ประเภทความสัมพันธ์นี้เรียกว่า many-to-many

มาลองทำตัวอย่างด้วยฐานข้อมูล "product sales" เราเริ่มด้วย 2 ตาราง: Products และ Orders ตาราง products มีข้อมูลเกี่ยวกับสินค้า (เช่น ชื่อ คำอธิบาย และ quantityInStock) ด้วย productID เป็นคีย์หลัก ตาราง orders มีออเดอร์ของลูกค้า (customerID, dateOrdered, dateRequired และ status) อีกครั้ง เราไม่สามารถจัดเก็บรายการที่สั่งซื้อบนตาราง Orders ได้ เนื่องจากเราไม่รู้ว่าจะสำรองคอลัมน์กี่คอลัมน์สำหรับรายการ เรายังไม่สามารถจัดเก็บข้อมูลออเดอร์ในตาราง Products ได้

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

โมเดลความสัมพันธ์ Many-to-Many

ความสัมพันธ์ many-to-many จริงๆ แล้วถูกนำไปใช้เป็นความสัมพันธ์ one-to-many 2 ความสัมพันธ์ ด้วยการนำ junction table มาใช้

ออเดอร์หนึ่งมีรายการมากใน OrderDetails รายการ OrderDetails หนึ่งรายการเป็นของออเดอร์เฉพาะ

สินค้าหนึ่งชิ้นอาจปรากฏใน OrderDetails หลายรายการ แต่ละรายการ OrderDetails ระบุสินค้าหนึ่งชิ้น