una tablas tabla restricciones relacionar primary primaria por nonclustered modificar las index existentes ejemplos consultar constraint con columnas coinciden codigo clustered clave sql

tablas - ¿Puede la tabla SQL tener múltiples columnas con clave primaria?



nonclustered index (5)

¿Puede la tabla SQL tener múltiples columnas con clave primaria?


"Por lo general, una clave compuesta es una mala práctica".

Cuídate de los falsos profetas que tratan de venderte tanta mierda.

Una clave es una clave es una clave es una clave. Una clave es un conjunto de atributos. Nada más y nada menos. La cardinalidad de ese conjunto puede ser 1, o puede ser> 1, y ¡YA PUEDE SER CERO! Y una clave corresponde, una a una, a alguna restricción de unicidad.

El modelo relacional NO TIENE PRESCRIPCIÓN LO QUE NUNCA QUE una restricción de clave / unicidad solo puede involucrar un solo atributo.

Además, ni el modelo relacional tiene ninguna ventaja en absoluto de que haya más de una clave, y es un hecho que la teoría relacional ha abandonado el concepto (durante décadas ya) de "clave principal" (lo que implica que tal " la clave principal en cualquier sentido sería "más clave" que las otras), porque es completamente innecesaria e irrelevante. En cuanto a la singularidad que implican las claves, TODAS LAS CLAVES SON IGUALES (y NO es el caso de que una clave en particular sea más igual que las otras).


Por lo general, una clave compuesta es una mala práctica. Hará que las cosas sean más lentas cuando necesites unirte a ellas. También es más difícil cuando necesita actualizar uno o más de los campos en 27 tablas secundarias. Una mejor práctica es una clave sustituta y un índice único en los campos que normalmente conforman la clave compuesta. Luego tiene la velocidad de la unión de enteros y se mantiene el atributo único y cuando el valor de la clave cambia (como suele ocurrir en una clave compuesta), solo tiene que cambiar una tabla en lugar de todas las tablas secundarias.

Sin embargo, hay un lugar donde usaré una clave compuesta y esa es una tabla de mapeo que se usa para crear las relaciones para una relación de muchos a muchos. En este caso, normalmente solo tiene dos columnas y las dos son generalmente números enteros que normalmente no cambian. Entonces usualmente usaré una clave compuesta ya que este caso particular no tiene las desventajas que un compuesto tiene en una tabla normal.


Si está preguntando si una tabla puede tener varias columnas como clave principal, entonces para MS SQL Server, la respuesta es sí, y se llama clave compuesta (corregida).


Si quiere decir "¿ Puede una clave primaria en SQL tener varias columnas ", la respuesta es sí?


Una tabla puede tener solo una restricción de clave principal, pero puede estar compuesta de varias columnas, por ejemplo

create table my_table (col1 integer, col2 integer, col3 integer, primary key (col1, col2, col3) );

Además de la clave principal, una tabla también puede tener una o más restricciones ÚNICAS, por ejemplo,

create table my_table2 (col1 integer, col2 integer, col3 integer, primary key (col1, col2), unique (col2, col3) );