- Doğal (Natural) anahtarlar, veritabanında benzersizliği garanti etmek için kullanılan anahtarlardır
- Doğal anahtarlar; isim, şehir, yıl gibi gerçek verileri temel alır
- Örneğin, dünyanın en iyi 50 restoranını içeren bir veritabanında
restaurantName, cityName, year alanları doğal anahtar olarak kullanılabilir
- Ancak doğal anahtarlar benzersizliği garanti etmeyebilir. Örneğin, aynı isimde restoranlar birden fazla şehirde bulunabilir
Kimlik
- Doğal anahtarlar, benzersizliği garanti etmenin ötesinde kimliği de garanti etmelidir
- Örneğin, bir otomobilin şasi numarası veya kişisel kimlik numarası (CPR numarası) doğal anahtar olarak kullanılabilir
- Ancak aynı kişi birden fazla kimlik numarasına sahip olabilir. Örneğin, Danimarka'da cinsiyet geçişi yapan kişiler yeni bir CPR numarası alabilir
Evrak hataları
- Doğal anahtarlar evrak hatalarına karşı savunmasızdır
- Veri giriş hataları, kullanıcı yazım hataları, veri dönüştürme hataları vb. ortaya çıkabilir
- Sistem bu hataları düzeltebilmelidir. Bu nedenle dış anahtarları veritabanı anahtarı olarak kullanmak uygun değildir
Sonuç
- Veritabanı tasarımında doğal anahtar kullanmak iyi bir fikir değildir
- Veri hataları oluşabilir ve bu hataların düzeltilebilmesi gerekir
- Bu nedenle veritabanı tablolarında her zaman yapay anahtarlar kullanmak daha iyidir
GN⁺ Görüşü
- Doğal anahtarların sorunları: Doğal anahtarlar benzersizliği ve kimliği garanti edemeyebilir; ayrıca veri giriş hatalarına karşı savunmasızdır.
- Yapay anahtarların avantajları: Yapay anahtarlar benzersizliği ve kimliği garanti eder; veri hatalarının kolayca düzeltilmesini sağlar.
- ORM kullanırken dikkat edilmesi gerekenler: ORM kütüphaneleri kullanılırken yapay anahtarları tercih etmek daha kolaydır. ORM, veritabanı yapısını kısmen belirlediği için yapay anahtar kullanımı daha verimlidir.
- Benzer işlevdeki ürünler: Diğer veritabanı tasarım araçları veya ORM kütüphaneleri de yapay anahtar kullanımını önerir. Örneğin Hibernate, Entity Framework gibi araçlar buna dahildir.
- Teknoloji benimsenirken dikkat edilmesi gerekenler: Yeni bir veritabanı tasarımı benimserken doğal anahtarların dezavantajları göz önünde bulundurulmalı ve yapay anahtarlar tercih edilmelidir. Yapay anahtarlar veri bütünlüğünü korur ve hataların kolayca düzeltilmesini sağlar.
2 yorum
Hacker News görüşü
cus_MJA953cFzEuO1zgibi ID'ler tercih ediliyor. Bunları JavaScript/TypeScript ile üretmenin yolları da var.Yapay anahtar için de global region gibi dağıtık ortamlara uyum sağlamaya hazır TSID kullanmanızı öneririm. Ben MySQL ve DynamoDB'de PK olarak TSID kullanıyorum.
https://jsonobject.hashnode.dev/using-tsid-as-database-pk