เท่าที่ฉันสามารถหา DBMSs จำนวนมาก (เช่น mysql, postgres, mssql) ใช้ชุดค่าผสม fk และ pk เพียงเพื่อ จำกัด การเปลี่ยนแปลงข้อมูล แต่ไม่ค่อยมีการใช้วิธีเลือกคอลัมน์เพื่อเข้าร่วมโดยอัตโนมัติ ทำไมถึงเป็นอย่างนั้น? หากคุณกำหนดความสัมพันธ์ระหว่าง 2 ตารางด้วย pk / fk แล้วทำไมฐานข้อมูลไม่สามารถระบุได้ว่าถ้าฉันเข้าร่วมตารางเหล่านั้นฉันต้องการเข้าร่วมในคอลัมน์ pk / fk
แก้ไข: เพื่อชี้แจงนี้เล็กน้อย:
สมมติว่าฉันมี table1 และ table2 ตารางที่ 1 มีคีย์ต่างประเทศในคอลัมน์ a ซึ่งอ้างอิงถึงคีย์หลักในตารางที่ 2 คอลัมน์ b ตอนนี้ถ้าฉันเข้าร่วมตารางเหล่านี้ฉันจะต้องทำสิ่งนี้:
SELECT * FROM table1
JOIN table2 ON table1.a = table2.b
อย่างไรก็ตามฉันได้กำหนดโดยใช้คีย์ของฉันที่ table1.a อ้างอิงถึง table2.b ดังนั้นฉันจึงไม่ควรยากที่จะทำให้ระบบ DBMS ใช้ table1.a และ table2.b เป็นคอลัมน์เข้าร่วมโดยอัตโนมัติ เช่นนั้นสามารถใช้:
SELECT * FROM table1
AUTO JOIN table2
อย่างไรก็ตาม DBMS จำนวนมากดูเหมือนจะไม่ใช้สิ่งนี้