En SQL, ¿son claves compuestas o compuestas?

31

Acerca de SQL (Computación / Bases de datos):

Cuando tenemos dos o más campos en una tabla que, juntos, identifican sus registros de manera única, ¿cuál es la forma correcta de llamarlos? Teclas compuestas o compuestas?

He visto en la web ambos usos, así que no estoy realmente seguro.

igordcard
fuente
1
Echa un vistazo a estas dos tendencias de búsqueda de Google: goo.gl/5u4XdR .
igordcard

Respuestas:

32

Tanto la clave compuesta como la clave compuesta describen una clave candidata con más de un atributo. Según el Diccionario de bases de datos relacionales (CJDate) significan lo mismo.

En el modelado ER, el término "clave compuesta" también tiene un significado más específico. Significa una clave cuyos atributos constituyentes son referencias a claves en otras entidades, es decir, una clave compuesta forma una relación de identificación. Para la mayoría de los propósitos, este no es un concepto especialmente útil o importante, por lo que los términos compuesto / compuesto a menudo se tratan como intercambiables. Probablemente sea mejor atenerse a la "clave compuesta" a menos que se refiera específicamente al concepto de modelado ER de una clave compuesta.

nvogel
fuente
3
"En el modelado ER, el término" clave compuesta "también tiene un significado más específico" - Suena convincente :) ¿Pero tiene alguna cita?
cuando el
Entonces, ¿una clave compuesta sería la clave que generalmente se encuentra en una tabla de unión utilizada para muchas relaciones, por ejemplo?
Josh P
19

Todavía no estoy seguro de por qué no se consultó http://en.wikipedia.org/wiki/Compound_key . Establece muy claramente (y es correcto):

En el diseño de la base de datos, una clave compuesta es una clave que consta de 2 o más atributos que identifican de manera exclusiva una ocurrencia de entidad. Cada atributo que constituye la clave compuesta es una clave simple en sí misma.

Esto a menudo se confunde con una clave compuesta por la cual, aunque también es una clave que consta de 2 o más atributos que identifican de manera única una ocurrencia de entidad, al menos un atributo que constituye la clave compuesta no es una clave simple en sí misma.

Una clave compuesta está compuesta de elementos que pueden o no ser claves foráneas. Ejemplo: en una tabla de detalles de la transacción, la clave es (TransactionId, ItemNumber). Un detalle de transacción es una subentidad de una transacción. TransactionId es una clave externa que hace referencia a la tabla Transacciones. ItemNumber no es una clave en sí misma. Solo identifica de forma única un artículo dentro del contexto de una sola transacción.

Una clave compuesta es una clave por la cual cualquier parte de la clave es una clave foránea. Ejemplo: en un sistema de reserva de hotel, una reserva tiene la clave compuesta, (GuestId, HotelId, ArrivalDate). GuestId identifica un invitado y hace referencia a la tabla Invitados. HotelId identifica un hotel y hace referencia a la tabla Hoteles. ArrivalDate identifica una fecha. Puede haber o no una tabla de Fechas a las que hace referencia, pero identifica una Entidad (una Fecha) de cualquier manera.

También es notable este hecho: una clave simple es una clave compuesta por una columna, mientras que una clave compuesta está compuesta por dos o más columnas.

jcolebrand
fuente
44
jcolebrand: "Una clave compuesta es una clave por la cual cualquier parte de la clave podría identificar el registro". Eso es incorrecto Por definición, una clave debe ser irreducible (una superclave mínima). Si solo se requieren algunos de los atributos para identificar de forma exclusiva una tupla, entonces, por definición, es una superclave y no una clave.
nvogel
a) Estaba citando la página de wikipedia. b) Tiendo a estar de acuerdo con eso. Cualquier parte de una clave compuesta es en sí misma una clave simple. No me importa si también lo llamas superclave. Sin embargo, no creo que todas las claves compuestas puedan ser superclaves. Ergo, mantengo lo que está en el artículo de Wikipedia, y mantengo la definición que cité. Puedo ir a buscar mi libro de diseño de base de datos de tapa dura publicado si eso te hace más feliz.
jcolebrand
2
Sin embargo, creo que se perdió el punto relevante, que es que una clave compuesta está compuesta por claves de otras entidades . Un subconjunto adecuado de una clave no puede ser una clave. Como estoy seguro de que sabe, una clave debe ser mínima (dentro de la tabla de la cual es una clave), por lo que si elimina cualquier atributo, ya no sería una clave.
nvogel
2
"Clave" es la abreviatura de "clave candidata". La definición de libro de texto de una clave candidata es y siempre ha sido una "superclave mínima". Referencias: Date's Dictionary pg17 o The Alice Book si tiene alguna duda sobre la definición de una clave.
nvogel
1
Las definiciones de " clave compuesta " y " clave compuesta " en la página de Wikipedia se modificaron el 13 de julio de 2014, y ya no coinciden con las definiciones en esta respuesta. (No
cambié
3

En inglés es "claves compuestas". Por ejemplo, eche un vistazo al sitio web de MSDN (cualquier búsqueda que contenga "clave compuesta sql" servirá).

http://www.google.com/search?q=sql+composite+key+site:msdn.microsoft.com

Suponiendo que la pregunta se refiere a bases de datos relacionales, busqué una definición "neutral" en Wikipedia :

Una clave compuesta es una clave compuesta por dos o más atributos dentro de una tabla que (juntos) identifican de forma única un registro

Hemme
fuente
1
Sin fuente, sin referencia, sin enlace, sin nada ... mala respuesta.
google.com/search?q=sql+composite+key+definition solo lo llevará a una gran cantidad de sitios que hablan sobre las claves compuestas de SQL
Hemme
1
también lo hará una búsqueda en Google de clave compuesta
jcolebrand
3
Esto es científico: googlefight.com/…
Hemme
3

Una clave compuesta consta de más de un atributo para identificar de forma exclusiva una ocurrencia de entidad. Esto difiere de una clave compuesta en que uno o más de los atributos, que constituyen la clave, no son claves simples en sí mismas.

Por ejemplo, tiene una base de datos que contiene su colección de CD. Una de las entidades se llama pistas, que contiene detalles de las pistas en un CD. Esto tiene una clave compuesta de nombre de CD, número de pista.

dilbag koundal
fuente
2

Me parece que una clave compuesta es un superconjunto que incluye claves compuestas. Si aceptamos que una clave compuesta está compuesta por más de un atributo (de cualquier tipo), y una clave compuesta está compuesta por más de una clave simple. Una clave compuesta es un tipo de clave compuesta con un significado más específico, pero el término clave "compuesta" siempre es apropiado para usar.

Tom Gnade
fuente