คุณเขียนในความคิดเห็นด้านบน:
หนังสือ "ความรู้พื้นฐานของระบบฐานข้อมูล" [... ] บอกว่า [... ] แนะนำให้ใช้ตารางจุดแยกหากมีค่า NULL จำนวนมากในคอลัมน์คีย์ต่างประเทศ (เช่น: ถ้าพนักงาน 98% ไม่ได้จัดการแผนก)
เมื่อมีค่า NULL จำนวนมากในคอลัมน์ foreign key โปรแกรมของคุณจะต้องจัดการกับคอลัมน์ที่ว่างเปล่าส่วนใหญ่นี้สำหรับแต่ละระเบียนที่ประมวลผล คอลัมน์อาจใช้พื้นที่ดิสก์บางส่วนแม้ว่าใน 98% ของทุกกรณีจะว่างเปล่าการสืบค้นความสัมพันธ์หมายถึงการสืบค้นคอลัมน์นั้นซึ่งให้ปริมาณการใช้เครือข่ายมากขึ้นและถ้าคุณใช้ ORM ซึ่งสร้างคลาสจากตารางโปรแกรมของคุณ จะต้องการพื้นที่เพิ่มเติมที่ฝั่งไคลเอ็นต์เกินความจำเป็น การใช้ตารางการตัดกันจะหลีกเลี่ยงสิ่งนี้จะมีเพียงบันทึกการเชื่อมโยงที่จำเป็นซึ่งคีย์ foreign ที่เทียบเท่าจะไม่เป็น NULL
ตรงข้ามกับที่ถ้าคุณมีค่า NULL เพียงไม่กี่ค่าให้บอกว่าความสัมพันธ์ 50% หรือมากกว่านั้นไม่ใช่ NULL การใช้ตารางการแยกจะให้ผลตรงกันข้าม - เนื้อที่ดิสก์มากขึ้นความซับซ้อนที่สูงขึ้นทำให้เครือข่ายมีปริมาณมากขึ้นเป็นต้น
ดังนั้นการใช้ตารางจุดตัดจึงเป็นเพียงการเพิ่มประสิทธิภาพเพียงอย่างเดียวสำหรับกรณีเฉพาะและโดยเฉพาะอย่างยิ่งในปัจจุบันที่พื้นที่ดิสก์และหน่วยความจำมีราคาถูกลง โปรดทราบว่าเดิมที "ความรู้พื้นฐานของระบบฐานข้อมูล" ถูกเขียนมานานกว่า 20 ปีแล้ว (ฉันพบการอ้างอิงถึงรุ่นที่สองจากปี 1994) และฉันเดาว่าคำแนะนำนั้นมีอยู่แล้วในเวลานั้น ก่อนปี 1994 การเพิ่มประสิทธิภาพของพื้นที่อาจมีความสำคัญมากกว่าวันนี้เนื่องจากพื้นที่เก็บข้อมูลขนาดใหญ่ยังมีราคาแพงกว่าและคอมพิวเตอร์และเครือข่ายช้ากว่าวันนี้มาก
ในฐานะที่เป็นหมายเหตุด้านข้างสำหรับความคิดเห็นที่พิถีพิถัน: ข้อความข้างต้นเป็นเพียงการพยายามคาดการณ์สิ่งที่ผู้เขียน "ความรู้พื้นฐานของระบบฐานข้อมูล" มีอยู่ในใจกับคำแนะนำของเขาฉันคิดว่าเขาทำคำหยาบทั่วไปใช้ได้กับระบบส่วนใหญ่ ในบางฐานข้อมูลมีการเพิ่มประสิทธิภาพที่เป็นไปได้อื่น ๆ เช่น "คอลัมน์กระจัดกระจาย" ซึ่งทำให้การใช้ตารางสี่แยกที่ล้าสมัยมากขึ้น
ดังนั้นอย่าเข้าใจผิดว่า หนังสือเล่มนี้ไม่ได้บอกให้คุณชอบตารางจุดตัดสำหรับ{0,1}:n
ความสัมพันธ์โดยทั่วไปหรือ - ตามที่คุณเขียน - ว่านี่เป็น "วิธีที่ถูกต้อง" ใช้การปรับให้เหมาะสมเช่นนี้ซึ่งจะทำให้โปรแกรมของคุณซับซ้อนยิ่งขึ้นเมื่อคุณต้องการจริงๆเท่านั้น