หากคุณมั่นใจอย่างแน่นอนว่าระบบฐานข้อมูลพื้นฐานจะไม่เปลี่ยนแปลงในอนาคตฉันจะใช้คีย์ต่างประเทศเพื่อรับรองความถูกต้องของข้อมูล
แต่นี่เป็นอีกเหตุผลในชีวิตจริงที่ดีมากที่จะไม่ใช้กุญแจต่างประเทศเลย:
คุณกำลังพัฒนาผลิตภัณฑ์ซึ่งควรสนับสนุนระบบฐานข้อมูลที่แตกต่างกัน
หากคุณกำลังทำงานกับ Entity Framework ซึ่งสามารถเชื่อมต่อกับระบบฐานข้อมูลที่แตกต่างกันมากมายคุณอาจต้องการสนับสนุนฐานข้อมูลเซิร์ฟเวอร์แบบไม่มีเซิร์ฟเวอร์ "โอเพ่นซอร์สฟรี" ฐานข้อมูลเหล่านี้บางอย่างอาจไม่สนับสนุนกฎกุญแจต่างประเทศของคุณ (อัปเดตลบแถว ... )
สิ่งนี้สามารถนำไปสู่ปัญหาต่าง ๆ :
1. ) คุณอาจพบข้อผิดพลาดเมื่อโครงสร้างฐานข้อมูลถูกสร้างหรืออัปเดต อาจจะมีเพียงข้อผิดพลาดที่เงียบเนื่องจากคีย์ต่างประเทศของคุณจะถูกละเว้นโดยระบบฐานข้อมูล
2. ) ถ้าคุณพึ่งพาคีย์ต่างประเทศคุณจะสามารถทำการตรวจสอบความสมบูรณ์ของข้อมูลในตรรกะทางธุรกิจของคุณได้น้อยลงหรือไม่มีเลย ตอนนี้หากระบบฐานข้อมูลใหม่ไม่สนับสนุนกฎกุญแจต่างประเทศเหล่านี้หรือเพียงแค่ทำงานในวิธีที่แตกต่างกันคุณต้องเขียนตรรกะทางธุรกิจของคุณใหม่
คุณอาจถามว่า: ใครต้องการระบบฐานข้อมูลที่แตกต่างกัน ไม่ใช่ทุกคนที่จะสามารถซื้อหรือต้องการ SQL-Server ที่ถูกเป่าเต็มในเครื่องของเขา นี่คือซอฟต์แวร์ที่ต้องได้รับการดูแลรักษา คนอื่นมีเวลาและเงินลงทุนไปแล้วในระบบฐานข้อมูลอื่น ฐานข้อมูลแบบไม่ใช้เซิร์ฟเวอร์เหมาะสำหรับลูกค้าขนาดเล็กในเครื่องเดียว
ไม่มีใครรู้ว่าระบบฐานข้อมูลเหล่านี้ทำงานอย่างไร แต่ตรรกะทางธุรกิจของคุณด้วยการตรวจสอบความสมบูรณ์ยังคงเหมือนเดิม