web-dev-qa-db-fra.com

Super Key, clé candidate et clé primaire

Une âme aimable peut-elle clarifier mes doutes avec un exemple simple ci-dessous et identifier la super-clé, la clé candidate et la clé primaire?

Je sais qu'il y a beaucoup de publications et de sites Web expliquant les différences entre eux. Mais il semble que toutes soient des définitions génériques.

Exemple:

Student (StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber)

Donc, à partir de l'exemple ci-dessus, je peux savoir que StudentNumber est une clé primaire.

Mais en ce qui concerne la super-clé, je suis un peu confus quelle combinaison d'attributs pourrait être regroupée dans la super-clé?

Quant à la clé candidate, je suis confus par la définition donnée car toute clé candidate peut être qualifiée de clé primaire.

Cela signifie-t-il que des attributs tels que PhoneNumber sont une clé candidate et peuvent être une clé primaire? (En supposant qu'un PhoneNumber n'appartient qu'à un seul étudiant)

Merci pour toute précision!

33
JLearner

Puisque vous ne voulez pas de définitions de manuels scolaires, en gros, une super clé est un ensemble de colonnes qui définit de manière unique une ligne.

Cet ensemble peut avoir un ou plusieurs éléments et il peut y avoir plusieurs super clés pour une table. Pour ce faire, vous utilisez généralement des dépendances fonctionnelles.

Dans votre exemple, je suppose:

StudentNumber    unique
FamilyName     not unique
Degree     not unique
Major      not unique
Grade      not unique
PhoneNumber    not unique

Dans ce cas, une super-clé est une combinaison contenant le numéro d'étudiant.

Donc, ce qui suit sont des super-clés

StudentNumber
StudentNumber, FamilyName
StudentNumber, FamilyName, Degree
StudentNumber, FamilyName, Degree, Major
StudentNumber, FamilyName, Degree, Major, Grade
StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber
StudentNumber, Degree
StudentNumber, Degree, Major
StudentNumber, Degree, Major, Grade
StudentNumber, Degree, Major, Grade, PhoneNumber
StudentNumber, Major
StudentNumber, Major, Grade
StudentNumber, Major, Grade, PhoneNumber
StudentNumber, Grade
StudentNumber, Grade, PhoneNumber
StudentNumber, PhoneNumber

Supposons maintenant que si PhoneNumber est unique (qui partage des téléphones de nos jours), les éléments suivants sont également des super-clés (en plus de ce que j'ai énuméré ci-dessus).

PhoneNumber
PhoneNumber, Grade, 
PhoneNumber, Major, Grade
PhoneNumber, Degree, Major, Grade
PhoneNumber, FamilyName, Degree, Major, Grade
PhoneNumber, Major
PhoneNumber, Degree, Major
PhoneNumber, FamilyName, Degree, Major
PhoneNumber, StudentNumber, FamilyName, Degree, Major
PhoneNumber, Degree
PhoneNumber, FamilyName, Degree
PhoneNumber, StudentNumber, FamilyName, Degree
PhoneNumber, FamilyName
PhoneNumber, StudentNumber, FamilyName

Une clé candidate est simplement la super-clé "la plus courte". Pour revenir à la 1ère liste de super-clés (c'est-à-dire que le numéro de téléphone n'est pas unique), la super-clé la plus courte est StudentNumber.

La clé primaire n'est généralement que la clé candidate.

52
Cambium

Une super-clé est tout ensemble d'attributs dont les valeurs sont garanties uniques pour tous les ensembles possibles de tuples dans une table à tout moment.

Une clé candidate est une super-clé "minimale" - c'est-à-dire le plus petit sous-ensemble d'attributs de super-clé uniques. La suppression d'un attribut d'une clé candidate le rendrait donc non unique.

Une clé primaire n'est qu'une clé candidate. Il n'y a aucune différence entre une clé primaire et toute autre clé candidate.

Il n'est pas vraiment utile de faire des hypothèses sur les clés basées uniquement sur une liste de noms d'attributs. Vous devez savoir quelles dépendances sont censées contenir entre les attributs. Cela dit, je suppose que vous avez raison - StudentNumber est probablement un candidat clé dans votre exemple.

13
nvogel

Etirement de la réponse de Cambium, si le PhoneNumber est également unique avec StudentNumber alors candidate keys serait:- {StudentNumber}, {PhoneNumber}.
Ici, nous ne pouvons pas supposer {StudentNumber,PhoneNumber} comme un seul candidate key parce que si nous omettons un attribut, disons StudentNumber nous obtenons toujours un attribut unique{PhoneNumber} donc, en violation de la définition de candidate key.

Primary key: Choisissez-en un candidate key parmi tous candidate keys. Il ya deux candidate keys afin que nous puissions choisir {StudentNumber} comme primary key.
Alternate keys: laissé pour compte candidate keys, après avoir choisi primary key de candidate keys, sont des touches alternatives, c'est-à-dire {PhoneNumber}.

compound key: une clé composée est une clé composée de deux ou plusieurs attributs qui identifient de manière unique une occurrence d'entité. Une clé simple est celle qui n'a qu'un seul attribut. Les clés composées peuvent être composées d'autres clés simples et d'attributs non clés uniques, mais ne peuvent pas inclure une autre clé composée.

composite key: Une clé composite contient au moins une clé composée et un autre attribut. Les clés composites peuvent également inclure des clés simples et des attributs non clés.

1
JerryGoyal