Sigo algunas reglas:
- Las claves primarias deben ser tan pequeñas como sea necesario. Prefiera un tipo numérico porque los tipos numéricos se almacenan en un formato mucho más compacto que los formatos de caracteres. Esto se debe a que la mayoría de las claves principales serán claves externas en otra tabla y se usarán en múltiples índices. Cuanto menor sea su clave, menor será el índice, menos páginas en el caché utilizará.
- Las claves principales nunca deben cambiar. La actualización de una clave principal siempre debe estar fuera de cuestión. Esto se debe a que es más probable que se use en múltiples índices y se use como clave externa. La actualización de una sola clave principal podría provocar un efecto dominó de los cambios.
- NO utilice "la clave principal de su problema" como clave principal de su modelo lógico. Por ejemplo, número de pasaporte, número de seguro social o número de contrato de empleado, ya que estas "claves naturales" pueden cambiar en situaciones del mundo real. Asegúrese de agregar restricciones ÚNICAS para estos cuando sea necesario para hacer cumplir la coherencia.
En clave sustituta vs natural, me refiero a las reglas anteriores. Si la clave natural es pequeña y nunca cambiará, se puede usar como clave principal. Si la clave natural es grande o es probable que cambie, uso claves sustitutas. Si no hay una clave principal, sigo creando una clave sustituta porque la experiencia muestra que siempre agregará tablas a su esquema y desearía colocar una clave principal en su lugar.