@ Matt Sheppard:
Digamos que tienes una mesa de clientes. Seguramente no desea que exista un cliente en la tabla más de una vez, o sucederá mucha confusión en sus departamentos de ventas y logística (especialmente si las múltiples filas sobre el cliente contienen información diferente).
Por lo tanto, tiene un identificador de cliente que identifica al cliente de forma exclusiva y se asegura de que el cliente lo conozca (en las facturas), de modo que el cliente y el personal de servicio al cliente tengan una referencia común en caso de que necesiten comunicarse. Para garantizar que no haya registros de clientes duplicados, agregue una restricción de unicidad a la tabla, ya sea a través de una clave primaria en el identificador del cliente o mediante una restricción NOT NULL + UNIQUE en la columna del identificador del cliente.
A continuación, por alguna razón (que no se me ocurre), se le pide que agregue una columna GUID a la tabla de clientes y que sea la clave principal. Si la columna de identificador de cliente ahora queda sin una garantía de unicidad, está solicitando problemas futuros en toda la organización porque los GUID siempre serán únicos.
Algún "arquitecto" podría decirle que "¡oh, pero manejamos la restricción de unicidad real del cliente en nuestro nivel de aplicación!". Correcto. La moda con respecto a los lenguajes de programación de propósito general y (especialmente) los marcos de nivel medio cambia todo el tiempo y, en general, nunca sobrevivirá a su base de datos. Y hay muchas posibilidades de que en algún momento necesite acceder a la base de datos sin pasar por la aplicación actual. == Problemas. (Pero afortunadamente, usted y el "arquitecto" se han ido hace mucho tiempo, por lo que no estará allí para limpiar el desorden). En otras palabras: mantenga restricciones obvias en la base de datos (y también en otros niveles, si tiene el tiempo).
En otras palabras: puede haber buenas razones para agregar columnas GUID a las tablas, pero no caiga en la tentación de reducir sus ambiciones de coherencia dentro de la información real (== no GUID).