sql >> Base de Datos >  >> RDS >> Mysql

MySQL PRIMARY KEY vs Restricciones ÚNICAS

Como prefacio, tenga en cuenta que una clave principal no necesita ser una sola columna:puede estar compuesta por varias columnas:esto se conoce como clave compuesta. También tenga en cuenta que no todas las tablas tienen un AUTO_INCREMENT /IDENTITY columna, y puede tener un UNIQUE restricción en una sola columna dentro de una clave compuesta de todos modos.

  1. No hay ninguno, pero no tiene sentido que un DBMS prohiba tal redundancia porque necesitaría lógica y complejidad adicionales para manejar esa condición, mientras que no hay ningún daño real al tener ambos (además del impacto en el rendimiento de tener que mantener dos índices).

  2. Como se dijo anteriormente:porque el coste de oportunidad de detectar y prevenir esa redundancia no vale la pena.

Otra cosa a considerar es que la definición de clave principal de una tabla no es inmutable y, por lo tanto, está sujeta a cambios. Es posible que una tabla ya tenga columnas con un UNIQUE configuración de la restricción y luego el diseñador de la base de datos decide incluir eso en una nueva definición de la clave principal:no sería fácil para el usuario solicitar que se elimine primero la restricción anterior, especialmente si otras partes de su sistema de aplicación dependen de esa restricción ÚNICA está allí (por ejemplo, un 1:0..1 definición de relación).

(También, AUTO_INCREMENT no es mutuamente inclusivo con UNIQUE o PRIMARY KEY :puedes usar AUTO_INCREMENT con columnas no únicas (por ejemplo, si AUTO_INCREMENT se agrega después de que una tabla ya contiene datos) y, por el contrario, una PRIMARY KEY puede usar valores únicos obtenidos de otros lugares, como otra columna de identidad como clave externa (¡las claves primarias compuestas pueden contener claves externas!) o una fuente de datos "natural", como usar un número de seguro social de EE. deberías nunca hacer esto en realidad)).