Bunun öznel olduğunu ve tasarımınıza bağlı olduğunu düşünüyorum.
Çoğunlukla bu, aktif bir kayıttan gelen bir tasarım gibi gözükse de . Aktif bir kayıtta, varlığınızın veritabanı işlemlerini yapma yöntemleri vardır ve bu nedenle veritabanı tanımlayıcısını da bilmesi gerekir.
Veri eşleyicisine sahip bir depo gibi başka desenler kullanırken bu verileri nesnede saklamak gereksiz ve belki de uygun olmaz.
Örneğin bir Person
nesneyi alın . Bana bir aile içinde benzersiz olabilecek ya da olmayabilecek bir isim verildi. Nüfus arttıkça, daha büyük isimler artık benzersiz değildir ve bu yüzden gittikçe daha geniş bir sistem için yedek tanımlayıcılar bulduk. Bunlara örnekler: ehliyetim ve sosyal güvenlik numaram. Bir kimlik tayinli doğmadım, bu kimliklerin tümü için başvuruda bulunulmalı.
Bunların çoğu, evrensel olmadıkları için yazılım için iyi birincil anahtarlar / ID'ler yapmazlar. En azından kendi sistemlerinin dışında değil, açıkçası bir SSN, Sosyal Güvenlik İdaresi için benzersiz ve tutarlı. Genel olarak bu bilgilerin sağlayıcıları olmadığımız için, onları bir id
değil, temsil ettikleri veriler olarak adlandırmazsınız SSN
. Bazen, DriversLicense
ehliyetin sahip olduğu bilgilerin tümünü içerebilecek olan tam nesneyi bile içerebilir .
Bu nedenle, tüm genel kimlikler sistemdeki yedek anahtarlardır ve kayıtları aramak ve kalıcı hale getirmek için yalnızca kimlik bilgileri içeren bellek referanslarıyla değiştirilebilir.
Bir yana id
kavramsal bir veri parçası değildir, bunun etki gelmez gibi (genellikle), nesne içinde ait olduğu şüphe. Aksine, benzersiz bir kimliği temsil etmenin başka yolu olmayan bir nesneyi tanımlamak olan amacı saklanmalıdır. Bu bir depoda / koleksiyonda kolay bir şekilde yapılabilir.
Yazılımda, nesneyi bir liste olarak göstermeniz veya devam ettirmeniz gerekirse, bunu basitçe depo / toplama nesnesinden veya bununla ilişkili başka bir nesneden yapabilirsiniz. Veri Eşleyici'ye (ayrıysa) geçerken, basitçe geçebilirsiniz .update( id, obj )
.
Sorumluluk reddi : Henüz kuruluş içinde kimliği içermeyen bir sistem oluşturmayı denemedim ve bu yüzden kendimi yanlış kanıtlayabilirim.