Solo para ser contrario, no, NO necesita tener siempre una PK de AutoInc numérica.
Si analiza sus datos cuidadosamente, a menudo identifica claves naturales en los datos. Este suele ser el caso cuando los datos tienen un significado intrínseco para el negocio. A veces, las PK son artefactos de sistemas antiguos que los usuarios comerciales utilizan como segundo idioma para describir los atributos de su sistema. He visto los números VIN del vehículo utilizados como la clave principal de una tabla "Vehículo" en un sistema de gestión de flota, por ejemplo.
Sin embargo, se originó, SI ya tiene un identificador único, úselo. No cree una segunda clave primaria sin sentido; Es un desperdicio y puede causar errores.
A veces puede usar un AutoInc PK para generar un valor significativo para el cliente, por ejemplo, Números de política. Establecer el valor inicial en algo sensato y aplicar reglas comerciales sobre ceros a la izquierda, etc. Este es probablemente el enfoque de "lo mejor de ambos mundos".
Cuando tenga un pequeño número de valores que son relativamente estáticos, use valores que tengan sentido para el usuario del sistema. ¿Por qué usar 1,2,3 cuando puede usar L, C, H donde L, H y C representan vida, automóvil y hogar en un contexto de "Tipo de póliza" de seguro o, volviendo al ejemplo de VIN, qué tal usar "TO "para Toyota? Todos los autos Toyata tienen un VIN que comienza "TO". Es una cosa menos para que los usuarios recuerden, hace que sea menos probable que introduzcan errores de programación y de usuario e incluso puede ser un sustituto utilizable para una descripción completa en los informes de administración que simplifica los informes. para escribir y tal vez más rápido para generar.
Un desarrollo adicional de esto es probablemente "un puente demasiado lejos" y generalmente no lo recomiendo, pero lo estoy incluyendo por completo y puede que le resulte útil. Es decir, use la Descripción como clave principal. Para los datos que cambian rápidamente, esto es una abominación. Para datos muy estáticos que se informan en todo el tiempo , tal vez no. Solo lo menciono para que esté allí como una posibilidad.
SÍ uso AutoInc PK, solo engancho mi cerebro y busco mejores alternativas primero. El arte del diseño de bases de datos está haciendo algo significativo que se puede consultar rápidamente. Tener demasiadas uniones dificulta esto.
EDITAR Otro caso crucial en el que no necesita una PK autogenerada es el caso de las tablas que representan la intersección de otras dos tablas. Para seguir con la analogía del automóvil, un automóvil tiene 0..n accesorios, cada accesorio se puede encontrar en muchos automóviles. Para representar esto, debe crear una tabla Car_Accessory que contenga las PK de Car and Accessory y otra información relevante sobre las fechas del enlace, etc.
Lo que no necesita (generalmente) es un AutoInc PK en esta tabla: solo se podrá acceder a través del automóvil "dígame qué accesorios hay en este automóvil" o desde el Accesorio "dígales qué automóviles tienen este accesorio"