Pada level logis , email adalah kunci alami. Di fisik tingkat , mengingat Anda menggunakan basis data relasional, kunci alami tidak cocok dengan kunci primer. Alasan utamanya adalah masalah kinerja yang disebutkan oleh orang lain.
Untuk alasan itu, desainnya bisa disesuaikan. Kunci alami menjadi kunci alternatif (UNIK, BUKAN NULL), dan Anda menggunakan kunci pengganti / buatan / teknis sebagai kunci utama, yang dapat menjadi peningkatan otomatis dalam kasing Anda.
systempuntoout bertanya,
Bagaimana jika seseorang ingin mengubah alamat emailnya? Apakah Anda akan mengubah semua kunci asing juga?
Itulah gunanya cascading .
Alasan lain untuk menggunakan kunci pengganti numerik sebagai kunci utama terkait dengan cara kerja pengindeksan di platform Anda. Dalam InnoDB MySQL, misalnya, semua indeks dalam sebuah tabel memiliki kunci primer yang sudah ditentukan sebelumnya, jadi Anda ingin PK sekecil mungkin (untuk kecepatan dan ukurannya). Juga terkait dengan ini, InnoDB lebih cepat ketika kunci primer disimpan secara berurutan, dan sebuah string tidak akan membantu di sana.
Hal lain yang perlu dipertimbangkan ketika menggunakan string sebagai kunci alternatif, adalah menggunakan hash string aktual yang Anda inginkan mungkin lebih cepat, melewatkan hal-hal seperti huruf besar dan kecil pada beberapa huruf. (Aku benar-benar mendarat di sini sambil mencari referensi untuk mengkonfirmasi apa yang baru saja aku katakan; masih mencari ...)