En SQL, s'agit-il de clés composites ou composées?

31

À propos de SQL (informatique / bases de données):

Lorsque nous avons deux champs ou plus dans une table qui, ensemble, identifient ses enregistrements de manière unique, quelle est la bonne façon de les appeler? Clés composites ou composées?

J'ai vu sur le Web les deux utilisations donc je ne suis pas vraiment sûr.

igordcard
la source
1
Découvrez ces deux tendances de recherche Google: goo.gl/5u4XdR .
igordcard

Réponses:

32

La clé composite et la clé composée décrivent une clé candidate avec plus d'un attribut. Selon le Dictionnaire de la base de données relationnelle (CJDate), ils signifient la même chose.

Dans la modélisation ER, le terme "clé composée" a également une signification plus spécifique. Cela signifie une clé dont les attributs constitutifs sont des références à des clés dans d'autres entités - c'est-à-dire qu'une clé composée forme une relation d'identification. Dans la plupart des cas, ce concept n'est pas particulièrement utile ou important, de sorte que les termes composite / composé sont souvent traités comme interchangeables. Il est probablement préférable de s'en tenir à la "clé composite", sauf si vous faites référence spécifiquement au concept de modélisation ER d'une clé composée.

nvogel
la source
3
"Dans la modélisation ER, le terme" clé composée "a également une signification plus spécifique" - Cela semble convaincant :) Mais avez-vous une citation?
onedaywhen
Ainsi, une clé composée serait la clé habituellement trouvée dans une table de jonction utilisée pour les relations plusieurs-plusieurs par exemple?
Josh P
19

Je ne sais toujours pas pourquoi http://en.wikipedia.org/wiki/Compound_key n'a pas été consulté. Il indique très clairement (et est correct):

Dans la conception d'une base de données, une clé composée est une clé composée de 2 attributs ou plus qui identifient de manière unique une occurrence d'entité. Chaque attribut qui compose la clé composée est une clé simple à part entière.

Cela est souvent confondu avec une clé composite , même si c'est également une clé qui se compose de 2 ou plusieurs attributs qui identifient de manière unique une occurrence d'entité, au moins un attribut qui compose la clé composite n'est pas une simple clé à part entière.

Une clé composite est composée d'éléments qui peuvent ou non être des clés étrangères. Exemple: dans un tableau de détails de transaction, la clé est (TransactionId, ItemNumber). Un détail de transaction est une sous-entité d'une transaction. TransactionId est une clé étrangère, faisant référence à la table Transactions. ItemNumber n'est pas une clé en soi. Il identifie uniquement un article de manière unique dans le contexte d'une seule transaction.

Une clé composée est une clé par laquelle n'importe quelle partie de la clé est une clé étrangère. Exemple: dans un système de réservation d'hôtel, une réservation a la clé composée, (GuestId, HotelId, ArrivalDate). GuestId identifie un invité et fait référence à la table des invités. HotelId identifie un hôtel et fait référence à la table Hotels. ArrivalDate identifie une date. Il peut y avoir ou non une table Dates à laquelle il fait référence, mais il identifie une Entité (une Date) de toute façon.

Il convient également de noter ce factoïde: une clé simple est une clé composée d'une colonne, tandis qu'une clé composite est composée de deux colonnes ou plus.

jcolebrand
la source
4
jcolebrand: "Une clé composée est une clé par laquelle n'importe quelle partie de la clé pourrait identifier l'enregistrement." C'est faux. Par définition, une clé doit être irréductible (une super-clé minimale). Si seuls certains des attributs sont nécessaires pour identifier de manière unique un tuple, par définition, il s'agit d'une super-clé et non d'une clé.
nvogel
a) Je citais la page wikipedia. b) J'ai tendance à être d'accord avec cela. Toute partie d'une clé composée est elle-même une clé simple. Cela ne me dérange pas si vous l'appelez aussi une super clé. Cependant, je ne pense pas que toutes les clés composées puissent être des super-clés. Ergo, je maintiens ce qui est dans l'article de wikipedia, et je maintiens la définition que j'ai citée. Je peux aller chercher mon livre de conception de base de données à couverture rigide publié si cela vous rendrait plus heureux.
jcolebrand
2
Je pense cependant que vous avez manqué le point pertinent, à savoir qu'une clé composée est composée de clés d'autres entités . Un sous-ensemble correct d'une clé ne peut pas être une clé. Comme je suis sûr que vous le savez, une clé doit être minimale (dans la table dont elle est une clé) - donc si vous en supprimez un attribut, ce ne sera plus une clé.
nvogel
2
"Clé" est juste l'abréviation de "clé candidate". La définition classique d'une clé candidate est et a toujours été une "super-clé minimale". Références: Date's Dictionary pg17 ou The Alice Book si vous avez un doute sur la définition d'une clé.
nvogel
1
Les définitions de « clé composée » et de « clé compsite » sur la page Wikipedia ont été modifiées le 13 juillet 2014 et ne correspondent plus aux définitions de cette réponse. (Je n'ai pas changé les définitions, soulignant simplement que les définitions ne correspondent pas maintenant.)
spencer7593
3

En anglais, il s'agit de "clés composites". Par exemple, jetez un œil au site Web MSDN (toute recherche contenant "clé composite sql" fera l'affaire).

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

En supposant que la question concerne les bases de données relationnelles, j'ai cherché une définition "neutre" dans Wikipedia :

Une clé composite est une clé composée de deux ou plusieurs attributs dans une table qui (ensemble) identifient de manière unique un enregistrement

Hemme
la source
1
Pas de source, pas de référence, pas de lien, pas rien… mauvaise réponse.
google.com/search?q=sql+composite+key+definition vous amènera à un million de sites parlant de clés composites SQL
Hemme
1
il en sera de même pour la recherche google de clé composée
jcolebrand
3
C'est scientifique: googlefight.com/…
Hemme
3

Une clé composite se compose de plusieurs attributs pour identifier de manière unique une occurrence d'entité. Cela diffère d'une clé composée en ce qu'un ou plusieurs des attributs qui composent la clé ne sont pas de simples clés à part entière.

Par exemple, vous avez une base de données contenant votre collection de CD. L'une des entités est appelée pistes, qui contient les détails des pistes sur un CD. Cela a une clé composite de nom de CD, numéro de piste.

dilbag koundal
la source
2

Il me semble qu'une clé composite est un sur-ensemble qui comprend des clés composées. Si nous acceptons qu'une clé composite est composée de plusieurs attributs (de toute nature), et qu'une clé composée est constituée de plusieurs clés simples. Une clé composée est un type de clé composite avec une signification plus spécifique, mais le terme clé "composite" est toujours approprié à utiliser.

Tom Gnade
la source