@Matt Sheppard:
Diyelim ki bir müşteri tablonuz var. Elbette bir müşterinin masada birden fazla var olmasını istemezsiniz veya satış ve lojistik departmanlarınızda çok fazla karışıklık olur (özellikle müşteri hakkındaki birden çok satır farklı bilgiler içeriyorsa).
Böylece, müşteriyi benzersiz bir şekilde tanımlayan bir müşteri tanımlayıcınız vardır ve tanımlayıcının müşteri tarafından (faturalarda) bilindiğinden emin olursunuz, böylece iletişim kurmaları gerektiğinde müşteri ve müşteri hizmetleri çalışanları ortak bir referansa sahip olurlar. Yinelenen müşteri kaydı olmadığını garanti etmek için, müşteri tanımlayıcısındaki birincil anahtar veya müşteri tanımlayıcı sütunundaki NOT NULL + UNIQUE kısıtlaması aracılığıyla tabloya benzersiz bir kısıtlama eklersiniz.
Daha sonra, bazı nedenlerden dolayı (ki düşünemiyorum), müşteri tablosuna bir GUID sütunu eklemeniz ve bunu birincil anahtar yapmanız istenir. Müşteri tanımlayıcı sütunu artık benzersizlik garantisi olmadan bırakılırsa, GUID'ler her zaman benzersiz olacağından kuruluş genelinde gelecekte sorun olmasını istersiniz.
Bazı "mimar" size söyleyebilir "oh, ama biz uygulama katmanında gerçek müşteri benzersizlik kısıtlama ele !". Sağ. Genel amaçlı programlama dillerine ve (özellikle) orta kademe çerçevelere ilişkin moda her zaman değişir ve genellikle veritabanınızı asla dışarıda bırakmaz. Ve bir noktada mevcut uygulamadan geçmeden veritabanına erişmeniz için çok iyi bir şans var. == Sorun. (Ama neyse ki, siz ve "mimar" çoktan kayboldunuz, bu yüzden karışıklığı temizlemek için orada olmayacaksınız.) Başka bir deyişle: Veritabanında (ve diğer katmanlarda da) açık kısıtlamalar koruyun zaman).
Başka bir deyişle: Tablolara GUID sütunları eklemek için iyi nedenler olabilir, ancak gerçek (== GUID olmayan) bilgilerde tutarlılık konusundaki isteklerinizi düşürme cazibesine kapılmayın .