ทั้ง SQL และตัวแบบเชิงสัมพันธ์จะถูกรบกวนโดย foreign key ที่อ้างอิงถึง natural key ในความเป็นจริงการอ้างอิงคีย์ธรรมชาติมักช่วยปรับปรุงประสิทธิภาพอย่างมาก คุณจะประหลาดใจที่ข้อมูลที่คุณต้องการมีอยู่ในคีย์ธรรมชาติอย่างสมบูรณ์ การอ้างอิงว่าคีย์แลกเปลี่ยนการเข้าร่วมสำหรับตารางที่กว้างขึ้น (และลดจำนวนแถวที่คุณสามารถจัดเก็บไว้ในหน้าเดียว)
ตามคำจำกัดความข้อมูลที่คุณต้องการจะมีอยู่ในคีย์ธรรมชาติของตาราง "ค้นหา" ทุกครั้ง ( ตารางการค้นหาคำว่าไม่เป็นทางการในโมเดลเชิงสัมพันธ์ตารางทั้งหมดเป็นเพียงตารางตารางรหัสไปรษณีย์ของสหรัฐฯอาจมีแถวที่มีลักษณะดังนี้: {AK, Alaska}, {AL, Alabama}, {AZ, Arizona} ฯลฯ คนส่วนใหญ่จะเรียกว่าตารางการค้นหา)
สำหรับระบบขนาดใหญ่การหาตารางที่มีคีย์ตัวเลือกมากกว่าหนึ่งตัวนั้นไม่ใช่เรื่องผิดปกติ นอกจากนี้ยังไม่ใช่เรื่องแปลกสำหรับตารางที่ให้บริการส่วนหนึ่งขององค์กรเพื่ออ้างอิงคีย์ตัวเลือกหนึ่งตัวและตารางที่ให้บริการส่วนอื่นขององค์กรเพื่ออ้างอิงรหัสตัวเลือกอื่น นี่เป็นหนึ่งในจุดแข็งของโมเดลเชิงสัมพันธ์และเป็นส่วนหนึ่งของโมเดลเชิงสัมพันธ์ที่ SQL รองรับได้ค่อนข้างดี
คุณจะพบปัญหาสองข้อเมื่อคุณอ้างอิงคีย์ธรรมชาติในตารางที่มีคีย์ตัวแทน
ขั้นแรกคุณจะแปลกใจที่ผู้คน แม้ว่าฉันมักจะล็อบบี้อย่างหนักเพื่อหลักการแห่งความประหลาดใจอย่างน้อยนี่เป็นสถานการณ์ที่ฉันไม่รังเกียจคนที่น่าแปลกใจ เมื่อปัญหาคือผู้พัฒนารู้สึกประหลาดใจกับการใช้กุญแจต่างประเทศอย่างมีเหตุผลการแก้ปัญหาคือการศึกษาไม่ใช่การออกแบบใหม่
ประการที่สอง ORMs ไม่ได้ถูกออกแบบโดยทั่วไปในแบบจำลองเชิงสัมพันธ์และบางครั้งพวกเขาก็รวมเอาสมมติฐานที่ไม่สะท้อนแนวปฏิบัติที่ดีที่สุด (อันที่จริงแล้วพวกเขามักจะดูเหมือนจะได้รับการออกแบบโดยไม่ต้องมีการป้อนข้อมูลจากฐานข้อมูลมืออาชีพ) การขอหมายเลขประจำตัวในทุกตารางเป็นหนึ่งในข้อสมมติเหล่านั้น อีกอันหนึ่งสมมติว่าแอปพลิเคชัน ORM "เป็นเจ้าของ" ฐานข้อมูล (ดังนั้นจึงเป็นอิสระในการสร้างวางและเปลี่ยนชื่อตารางและคอลัมน์)
ฉันทำงานบนระบบฐานข้อมูลที่ให้บริการข้อมูลไปยังโปรแกรมประยุกต์หลายร้อยโปรแกรมที่เขียนด้วยภาษาอย่างน้อยสองโหลในระยะเวลา 30 ปี ฐานข้อมูลนั้นเป็นขององค์กรไม่ใช่ของ ORM
ทางแยกที่จะนำเสนอการเปลี่ยนแปลงที่รุนแรงควรเป็น show-stopper
ฉันวัดประสิทธิภาพด้วยคีย์ธรรมชาติและคีย์ตัวแทนใน บริษัท ที่ฉันเคยทำงาน มีจุดเปลี่ยนที่ปุ่มตัวแทนเริ่มมีประสิทธิภาพเหนือกว่าคีย์ธรรมชาติ (สมมติว่าไม่มีความพยายามเพิ่มเติมเพื่อรักษาประสิทธิภาพของคีย์ตามธรรมชาติสูงเช่นการแบ่งส่วนดัชนีบางส่วนดัชนีตามฟังก์ชันตารางพื้นที่พิเศษโดยใช้โซลิดสเตตดิสก์ ฯลฯ ) โดยการประเมินของฉันสำหรับ บริษัท นั้นพวกเขาจะถึงจุดเปลี่ยนใน ประมาณ 2045 ในระหว่างนี้พวกเขาจะได้ประสิทธิภาพที่ดีขึ้นด้วยปุ่มธรรมชาติ
คำตอบที่เกี่ยวข้องอื่น ๆ : ใน Schema ของฐานข้อมูลเกิดความสับสน