At mantıksal düzeyde , e-posta doğal anahtarıdır. at fizikselİlişkisel bir veritabanı kullandığınızda düzeyde, birincil anahtar birincil anahtarla iyi uyuşmaz. Bunun nedeni esas olarak başkaları tarafından belirtilen performans sorunlarıdır.
Bu nedenle tasarım uyarlanabilir. Doğal anahtar alternatif anahtar olur (EŞSİZ, BOŞ DEĞİL) ve birincil anahtar olarak sizin durumunuzda otomatik bir artış olabilecek bir yedek / yapay / teknik anahtar kullanırsınız .
systempuntoout sordu,
Birisi e-posta adresini değiştirmek isterse ne olur? Tüm yabancı anahtarları da değiştirecek misin?
Bunun için basamaklı .
Birincil anahtar olarak sayısal bir vekil anahtar kullanmanın başka bir nedeni, dizinlemenin platformunuzda nasıl çalıştığıyla ilgilidir. Örneğin, MySQL'in InnoDB'sinde, bir tablodaki tüm dizinler, kendilerine asılmış birincil anahtara sahiptir, bu nedenle PK'nın mümkün olduğunca küçük olmasını istersiniz (hız ve boyut değerleri için). Bununla ilgili olarak, birincil anahtar sırayla saklandığında InnoDB daha hızlıdır ve bir dize orada yardımcı olmaz.
Bir dizgiyi alternatif bir anahtar olarak kullanırken göz önünde bulundurulması gereken bir başka şey de, gerçek dizenin bir karmasını kullanarak, bazı harflerin büyük ve küçük harfleri gibi şeyleri atlayarak daha hızlı olabilmesidir. (Aslında söylediklerimi doğrulamak için referans ararken buraya indim; hala bakıyorum ...)