@Matt Sheppard:
Katakanlah Anda memiliki tabel pelanggan. Tentunya Anda tidak ingin pelanggan ada di tabel lebih dari sekali, atau banyak kebingungan akan terjadi di seluruh departemen penjualan dan logistik Anda (terutama jika beberapa baris tentang pelanggan berisi informasi yang berbeda).
Jadi, Anda memiliki pengenal pelanggan yang secara unik mengidentifikasi pelanggan dan Anda memastikan bahwa pengenal tersebut diketahui oleh pelanggan (dalam faktur), sehingga pelanggan dan orang layanan pelanggan memiliki referensi umum jika mereka perlu berkomunikasi. Untuk menjamin tidak ada rekaman pelanggan yang digandakan, Anda menambahkan kendala keunikan ke tabel, baik melalui kunci utama pada pengidentifikasi pelanggan atau melalui batasan NOT NULL + UNIK pada kolom pengidentifikasi pelanggan.
Selanjutnya, untuk beberapa alasan (yang tidak dapat saya pikirkan), Anda diminta untuk menambahkan kolom GUID ke tabel pelanggan dan menjadikannya sebagai kunci utama. Jika kolom pengidentifikasi pelanggan sekarang dibiarkan tanpa jaminan keunikan, Anda meminta masalah di masa mendatang di seluruh organisasi karena GUID akan selalu unik.
Beberapa "arsitek" mungkin memberi tahu Anda bahwa "oh, tapi kami menangani kendala keunikan pelanggan nyata di tingkat aplikasi kami!". Baik. Mode mengenai bahasa pemrograman tujuan umum dan (terutama) kerangka kerja tingkat menengah berubah sepanjang waktu, dan umumnya tidak akan pernah menyiarkan database Anda. Dan ada peluang yang sangat bagus bahwa Anda pada suatu saat perlu mengakses database tanpa melalui aplikasi yang ada. == Masalah. (Tapi untungnya, Anda dan "arsitek" sudah lama pergi, jadi Anda tidak akan ada di sana untuk membersihkan kekacauan itu.) Dengan kata lain: Tetap menjaga batasan yang jelas dalam database (dan di tingkatan lain, juga, jika Anda memiliki waktu).
Dengan kata lain: Mungkin ada alasan bagus untuk menambahkan kolom GUID ke tabel, tapi tolong jangan tergoda untuk membuat itu menurunkan ambisi Anda untuk konsistensi dalam informasi nyata (== non-GUID).