ในระดับตรรกะอีเมลเป็นกุญแจสำคัญตามธรรมชาติ ที่ทางกายภาพระดับเมื่อคุณใช้ฐานข้อมูลเชิงสัมพันธ์คีย์ธรรมชาติไม่เหมาะกับคีย์หลัก เหตุผลส่วนใหญ่เป็นปัญหาด้านประสิทธิภาพที่ผู้อื่นกล่าวถึง
ด้วยเหตุนี้จึงทำให้การออกแบบสามารถปรับเปลี่ยนได้ คีย์ธรรมชาติจะกลายเป็นคีย์สำรอง (UNIQUE ไม่ใช่ NULL) และคุณใช้คีย์ตัวแทน / ประดิษฐ์ / เทคนิคเป็นคีย์หลักซึ่งอาจเป็นการเพิ่มอัตโนมัติในกรณีของคุณ
systempuntoout ถาม
เกิดอะไรขึ้นถ้ามีคนต้องการเปลี่ยนที่อยู่อีเมลของเขา? คุณจะเปลี่ยนกุญแจต่างประเทศทั้งหมดด้วยหรือไม่
นั่นคือสิ่งที่ลดหลั่นกันมา
อีกเหตุผลที่ใช้คีย์ตัวแทนตัวเลขเป็นคีย์หลักเกี่ยวข้องกับการทำงานของการจัดทำดัชนีในแพลตฟอร์มของคุณ ยกตัวอย่างเช่นใน InnoDB ของ MySQL ดัชนีทั้งหมดในตารางจะมีคีย์หลักไว้ล่วงหน้าดังนั้นคุณต้องการให้ PK มีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้ (สำหรับความเร็วและขนาด) นอกจากนี้ยังเกี่ยวข้องกับสิ่งนี้ InnoDB เร็วขึ้นเมื่อเก็บคีย์หลักตามลำดับและสตริงจะไม่ช่วย
อีกสิ่งที่ควรคำนึงถึงเมื่อใช้สตริงเป็นคีย์สำรองคือการใช้แฮชของสตริงจริงที่คุณต้องการอาจเร็วกว่าการข้ามสิ่งต่าง ๆ เช่นตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก (ฉันลงจอดที่นี่จริง ๆ ในขณะที่กำลังค้นหาการอ้างอิงเพื่อยืนยันสิ่งที่ฉันเพิ่งพูดยังมอง ... )