5 puan yazan GN⁺ 2024-06-06 | 2 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2024-06-06
Hacker News görüşü
  • Benzersiz, kısa ve insan tarafından okunabilir ID'ler: Stripe'ın kullandığı cus_MJA953cFzEuO1z gibi ID'ler tercih ediliyor. Bunları JavaScript/TypeScript ile üretmenin yolları da var.
  • Kişisel kimlik numaraları: Danimarka'nın CPR numarası ile ABD'nin SSN'i karşılaştırılıyor. SSN benzersiz değildir, değiştirilebilir ve ABD vatandaşı olmayanlara da verilebilir. Veritabanı anahtarı olarak kullanılmaması öneriliyor.
  • Takma adlar ve denetim günlükleri: Danimarka CPR numarası gibi doğal anahtarlar kullanıldığında, değişiklikleri kaydeden ayrı bir tablo gerekir. URL'ler de doğal anahtar olarak kullanılabilir, ancak değiştiğinde bir yönlendirme tablosu oluşturmak gerekir.
  • Doğal anahtarların sınırları: Benzersiz tanımlayıcı değişirse, ilişkili tüm bilgilerin izlenmesi gerekir. Yapay bir anahtar eklenirse, izlenmesi gereken bilgi daha da artar. Veri modelleme gerçek dünyayı yansıtmalıdır.
  • Doğal anahtarlar ve gizlilik: Doğal anahtar kişisel bilgi içeriyorsa, yabancı anahtarlar aracılığıyla diğer tablolara da yayılabilir.
  • Oyun etiketi örneği: PlayStation Network oyun etiketinin doğal anahtar olarak kullanılması örneği. Oyun etiketi değişmiyorsa benzersiz tanımlayıcı olarak kullanılabilir.
  • Sağlık alanı örneği: Kayıt görevlisi yanlış bir kişisel sağlık numarası (PHN) girerse sorun çıkar. Yapay bir anahtar kullanılırsa daha sonra düzeltmek mümkün olur.
  • Doğal anahtarların kontrol edilemezliği: İsim, adres, resmî kayıt numarası gibi şeyler kontrol edilemediği için güvenilir değildir. Benzersiz anahtar sistemi kullanılmalıdır.
  • Yapay anahtar kullanımı: Tüm tablolarda benzersiz bir ID alanı kullanmak sorunları çözmeyi kolaylaştırır. Veriler ve ilişkiler sık değiştiği için doğal anahtarlara güvenmek zordur.
  • Değişebilirlik ve benzersiz ID: Değişebilirlik, zaman içinde ortak bir tanımlayıcı gerektirir. Veritabanı, şemada açık bir vekil anahtar içermelidir.
 
jsonobject 2024-06-07

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