ฉันคิดว่าคุณกำลังพูดคุยเกี่ยวกับข้อ จำกัด ที่สำคัญต่างประเทศบังคับใช้โดยฐานข้อมูล คุณอาจใช้คีย์ต่างประเทศอยู่แล้ว แต่คุณยังไม่ได้บอกฐานข้อมูลเกี่ยวกับเรื่องนี้
สมมติว่าโปรแกรมเมอร์กำลังทำสิ่งนี้ในลักษณะที่ถูกต้องอยู่แล้วเราต้องการแนวคิดของคีย์ต่างประเทศหรือไม่?
ในทางทฤษฎีไม่ อย่างไรก็ตามไม่เคยมีซอฟต์แวร์ชิ้นใดที่ไม่มีจุดบกพร่อง
โดยทั่วไปแล้วข้อบกพร่องในรหัสแอปพลิเคชันจะไม่เป็นอันตรายคุณระบุข้อบกพร่องและแก้ไขและหลังจากนั้นแอปพลิเคชันจะทำงานได้อย่างราบรื่นอีกครั้ง แต่ถ้าข้อผิดพลาดอนุญาตให้ข้อมูล currupt เข้าสู่ฐานข้อมูลแสดงว่าคุณติดอยู่กับมัน! การกู้คืนจากข้อมูลที่เสียหายในฐานข้อมูลนั้นยากมาก
พิจารณาว่าจุดบกพร่องเล็กน้อยในFogBugzอนุญาตให้เขียน Foreign Key ที่เสียหายในฐานข้อมูลหรือไม่ อาจเป็นเรื่องง่ายที่จะแก้ไขข้อบกพร่องและส่งการแก้ไขไปยังลูกค้าอย่างรวดเร็วในรุ่นแก้ไขข้อบกพร่อง อย่างไรก็ตามข้อมูลที่เสียหายในหลายสิบฐานข้อมูลควรได้รับการแก้ไขอย่างไร? ตอนนี้โค้ดที่ถูกต้องอาจพังทันทีเนื่องจากสมมติฐานเกี่ยวกับความสมบูรณ์ของคีย์ต่างประเทศไม่ได้รับการระงับอีกต่อไป
ในเว็บแอปพลิเคชันโดยทั่วไปคุณจะมีเพียงโปรแกรมเดียวที่พูดกับฐานข้อมูลดังนั้นจึงมีเพียงที่เดียวที่ข้อบกพร่องสามารถทำให้ข้อมูลเสียหายได้ ในแอปพลิเคชันระดับองค์กรอาจมีแอปพลิเคชันอิสระหลายตัวที่พูดกับฐานข้อมูลเดียวกัน (ไม่ต้องพูดถึงคนที่ทำงานกับเชลล์ฐานข้อมูลโดยตรง) ไม่มีทางที่จะแน่ใจได้ว่าแอปพลิเคชันทั้งหมดเป็นไปตามสมมติฐานเดียวกันโดยไม่มีข้อบกพร่องตลอดไปและตลอดไป
หากมีการเข้ารหัสข้อ จำกัด ในฐานข้อมูลสิ่งที่เลวร้ายที่สุดที่อาจเกิดขึ้นกับข้อบกพร่องคือผู้ใช้จะแสดงข้อความแสดงข้อผิดพลาดที่น่าเกลียดเกี่ยวกับข้อ จำกัด ของSQL ที่ไม่เป็นที่พอใจ วิธีนี้ดีกว่าที่จะปล่อยให้ข้อมูลที่เสียหายไปยังฐานข้อมูลองค์กรของคุณซึ่งจะทำให้แอปพลิเคชันทั้งหมดของคุณเสียหายหรือเพียงแค่นำไปสู่ผลลัพธ์ที่ผิดพลาดหรือทำให้เข้าใจผิดทุกประเภท
นอกจากนี้ข้อ จำกัด ของคีย์ต่างประเทศยังช่วยเพิ่มประสิทธิภาพเนื่องจากมีการจัดทำดัชนีตามค่าเริ่มต้น ฉันไม่สามารถนึกถึงเหตุผลใด ๆ ที่จะไม่ใช้ข้อ จำกัด ของคีย์ต่างประเทศ