Las claves sustitutas (típicamente enteros) tienen el valor agregado de hacer que la tabla se relacione más rápido y más económico en almacenamiento y velocidad de actualización (mejor aún, las claves externas no necesitan actualizarse al usar claves sustitutivas, en contraste con campos clave de negocios, que sí cambian de vez en cuando).
La clave principal de una tabla debe usarse para identificar únicamente la fila, principalmente para fines de unión. Piense en una tabla de Personas: los nombres pueden cambiar, y no están garantizados como únicos.
Think Companies: usted es una compañía feliz de Merkin que hace negocios con otras compañías en Merkia. Es lo suficientemente astuto como para no utilizar el nombre de la empresa como clave principal, por lo que utiliza la identificación de empresa única del gobierno de Merkia en su totalidad de 10 caracteres alfanuméricos. Luego Merkia cambia las identificaciones de la compañía porque pensaban que sería una buena idea. Está bien, utiliza la función de actualizaciones en cascada de su motor db, para un cambio que no debería involucrarlo en primer lugar. Más tarde, su negocio se expande y ahora trabaja con una empresa en Freedonia. La identificación de la empresa de Freedonian tiene hasta 16 caracteres. Necesita ampliar la clave principal de identificación de la compañía (también los campos de clave externa en Pedidos, Problemas, MoneyTransfers, etc.), agregando un campo País en la clave principal (también en las claves externas). ¡Ay! Guerra civil en Freedonia, está dividida en tres países. El nombre del país de su asociado debe cambiarse por el nuevo; actualizaciones en cascada para el rescate.Por cierto, ¿cuál es tu clave principal? (País, CompanyID) o (CompanyID, Country)? Este último ayuda a unirse, el anterior evita otro índice (o tal vez muchos, si desea que sus pedidos se agrupen por país también).
Todo esto no es una prueba, sino una indicación de que una clave sustituta para identificar de forma única una fila para todos los usos, incluidas las operaciones de unión, es preferible a una clave comercial.
@Joachim Sauer: Un argumento sobre si una cosa es subjetiva puede ser en sí misma subjetiva, sin que esto se relacione de ninguna manera con la objetividad o subjetividad de la cosa en cuestión. A menos que esté preparado para establecer los criterios objetivos exactos que hacen que algo sea objetivo. Hay cosas llamadas "conceptos abiertos", como cuántos pelos se necesitan para hacer una barba. Se puede decir objetivamente que una persona sin barba no tiene barba, y una con 5,000 pelos de una pulgada de largo tiene barba, pero en algún lugar en el medio se requiere un juicio subjetivo para tomar una determinación objetiva. – ErikE
@Emtucifor: Me temo que has tomado mi comentario mucho más en serio que yo, en aquel entonces. –
@Joachim Sauer: No, no hablaba en serio. Has derribado a IainMH (todo en diversión, por supuesto), y he derribado tu derribo (todo en diversión, por supuesto). Aunque admito que puso una cara sonriente y yo no. :) – ErikE