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

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


ในฐานข้อมูล "บัญชีรายชื่อชั้นเรียน" ครูอาจสอนเป็นศูนย์หรือมากกว่า ในขณะที่ชั้นเรียนสอนโดยครูคนเดียว (และเพียงคนเดียว) ในฐานข้อมูล "บริษัท" ผู้จัดการจะจัดการพนักงานตั้งแต่ 0 คนขึ้นไป ในขณะที่พนักงานจะได้รับการจัดการโดยผู้จัดการเพียงคนเดียว (และมีเพียงคนเดียว) ในฐานข้อมูล "การขายผลิตภัณฑ์" ลูกค้าสามารถสั่งซื้อได้หลายรายการ ในขณะที่มีการสั่งซื้อโดยลูกค้ารายใดรายหนึ่ง ความสัมพันธ์แบบนี้เรียกว่า one-to-many

ความสัมพันธ์แบบหนึ่งต่อกลุ่มไม่สามารถแสดงในตารางเดียว ตัวอย่างเช่น ในฐานข้อมูล "รายชื่อชั้นเรียน" เราอาจเริ่มต้นด้วยตารางชื่อครู ซึ่งเก็บข้อมูลเกี่ยวกับครู (เช่น ชื่อ สำนักงาน โทรศัพท์ และอีเมล) ในการจัดเก็บชั้นเรียนที่ครูแต่ละคนสอน เราสามารถสร้างคอลัมน์ class1, class2, class3 แต่ประสบปัญหาทันทีเกี่ยวกับจำนวนคอลัมน์ที่จะสร้าง ในทางกลับกัน หากเราเริ่มต้นด้วยตารางที่เรียกว่า Classes ซึ่งเก็บข้อมูลเกี่ยวกับชั้นเรียน เราสามารถสร้างคอลัมน์เพิ่มเติมเพื่อเก็บข้อมูลเกี่ยวกับ (หนึ่ง) ครู (เช่น ชื่อ สำนักงาน โทรศัพท์ และอีเมล) อย่างไรก็ตาม เนื่องจากครูอาจสอนหลายชั้นเรียน ข้อมูลของครูจึงซ้ำกันในหลายแถวในชั้นเรียนแบบตาราง

เพื่อรองรับความสัมพันธ์แบบหนึ่งต่อกลุ่ม เราจำเป็นต้องออกแบบสองตาราง:สำหรับเช่น ตารางคลาสเพื่อเก็บข้อมูลเกี่ยวกับคลาสที่มี classID เป็นคีย์หลัก และตารางครูเพื่อเก็บข้อมูลเกี่ยวกับครูที่มีรหัสครูเป็นคีย์หลัก จากนั้น เราสามารถสร้างความสัมพันธ์แบบหนึ่งต่อกลุ่มโดยการจัดเก็บคีย์หลักของตาราง Teacher (เช่น รหัสครู) (ปลาย "หนึ่ง" หรือตารางหลัก) ในคลาสของตาราง (ส่วน "กลุ่ม" หรือ ตารางลูก) ดังภาพประกอบด้านล่าง

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

คอลัมน์ครูIDในตารางลูก คลาสเรียกว่าคีย์ต่างประเทศ คีย์นอกของตารางลูกคือคีย์หลักของตารางหลัก ใช้เพื่ออ้างอิงตารางหลัก