Aksine, Hayır, her zaman bir sayısal AutoInc PK’ya sahip olmanıza gerek yok.
Verilerinizi dikkatli bir şekilde analiz ederseniz, verilerdeki doğal anahtarları genellikle belirlersiniz. Bu genellikle verinin işletme için kendine özgü bir anlamı olduğunda söz konusudur. Bazen PK'ler, işletme kullanıcılarının, sistem özelliklerini tanımlamak için ikinci bir dil olarak kullandıkları eski sistemlerden gelen eserlerdir. Örneğin filo yönetim sisteminde "Araç" masasının ana anahtarı olarak kullanılan araç VIN numaralarını gördüm.
Bununla birlikte, ortaya çıktıysa, zaten benzersiz bir tanımlayıcınız varsa kullanın. İkinci, anlamsız bir birincil anahtar oluşturmayın; israflıdır ve hatalara neden olabilir.
Bazen bir müşteriye anlamlı değer üretmek için bir AutoInc PK kullanabilirsiniz, örneğin Politika Numaraları. Başlangıç değerini anlamlı bir şeye ayarlamak ve önde gelen sıfırlar vb. İş kurallarını uygulamak. Bu muhtemelen "her iki dünyanın da en iyisi" yaklaşımıdır.
Göreceli olarak statik olan az sayıda değeriniz varsa, sistem kullanıcısına duyarlı olan değerleri kullanın. L, C, H'yi kullanabiliyorken neden 1,2,3 kullanmalı, burada L, H ve C sigorta, "Politika Türü" bağlamında Life, Car and Home'u temsil eder veya VIN örneğine dönersek, "TO" "Toyota için mi? Tüm Toyata otomobillerinin "TO" başlatan bir VIN'si var, kullanıcıların hatırlamaları için daha az şey var, programlama ve kullanıcı hatalarını ortaya koymalarını daha az olası kılıyor ve raporları daha basit hale getiren yönetim raporlarında tam bir açıklama için kullanılabilir bir destekleyici bile olabilir yazmak ve belki daha hızlı üretmek.
Bunun daha da gelişmesi, muhtemelen "çok uzak bir köprü" dür ve genel olarak bunu tavsiye etmiyorum, ancak bütünlüğünü dahil ediyorum ve bunun için iyi bir kullanım bulabilirsiniz. Başka bir deyişle, Açıklama'yı Ana Anahtar olarak kullanın. Hızla değişen veriler için bu bir istismardır. İçin çok üzerinde bildirilmektedir statik veriler Tüm Zamanların , belki de değil. Sadece söylüyorum ki orada bir olasılık olarak oturuyor.
AutoInc PK'ları kullanıyorum, sadece beynimi çalıştırıyorum ve önce daha iyi alternatifler arıyorum. Veri tabanı tasarımı sanatı hızlıca sorgulanabilecek anlamlı bir şeydir. Çok fazla birleşme olması bunu engelliyor.
EDIT Otomatikleştirilmiş bir PK'ye ihtiyaç duymadığınız diğer bir önemli durum, diğer iki tablonun kesişimini temsil eden tablolardır. Araba benzetmesine sadık kalabilmek için, Bir Arabada 0. Aksesuar var, Her Aksesuar birçok arabada bulunabilir. Bunu temsil etmek için, Araba ve Aksesuarlardan PK'leri ve bağlantı Tarihleri vb. İle ilgili diğer bilgileri içeren bir Car_Accessory tablosu oluşturursunuz.
İhtiyacınız olmayan (genellikle) bu masadaki bir AutoInc PK'dir - arabaya yalnızca "bu araçta hangi aksesuarların olduğunu söyle" veya Aksesuar "dan" hangi araçların bu aksesuara sahip olduğunu söyleyin "üzerinden erişilir