Une clé candidate est un concept important dans la normalisation des bases de données. Lisez la suite pour découvrir ce qu'est une clé candidate et comment vérifier si un ensemble d'attributs est une clé candidate.
La clé du candidat, également appelé simplement une clé, est une partie importante de la conception de la base de données. C'est le fondement théorique des concepts techniques tels que les clés primaires et alternatives (uniques). Chaque concepteur de base de données doit savoir comment identifier les clés candidates et comment choisir la bonne pour sa table.
Le concept de clé candidate est enseigné dans tous les cours universitaires sur les bases de données dans le cadre de la théorie de la normalisation des bases de données. Les problèmes courants que vous rencontrerez lors de l'apprentissage des clés candidates sont de vérifier si un ensemble donné d'attributs est une clé candidate et de trouver toutes les clés candidates pour une relation.
Comprendre les clés candidates est important pour comprendre les formes normales dans les tables de base de données. Cette connaissance vous aidera à vous souvenir des règles des formes normales les plus courantes.
Dans cet article, nous expliquerons le concept de clés candidates en termes simples. De plus, nous vous montrerons comment vérifier si un ensemble d'attributs est une clé candidate.
Terminologie de base de la normalisation de base de données
Avant de vous renseigner sur les clés candidates, assurez-vous de bien connaître la terminologie de base de la normalisation. Passons brièvement en revue les termes les plus importants.
Une relation est le nom théorique d'une table de base de données. Une relation (table) a un nom et se compose d'attributs nommés (colonnes).
Une dépendance fonctionnelle dans une relation (A -> B ) vous indique que chaque fois que deux lignes ont les mêmes valeurs pour tous les attributs de l'ensemble A, elles auront également les mêmes valeurs pour tous les attributs de l'ensemble B.
La fermeture d'un ensemble d'attributs est l'ensemble des attributs qui peuvent être fonctionnellement déterminés à partir de cet ensemble. Vous pouvez revoir l'algorithme pour calculer la fermeture des attributs ici.
Super-clés
De manière informelle, une clé candidate est un ensemble d'attributs qui identifient de manière unique une ligne.
Par définition, une clé candidate est une super clé minimale. Qu'est-ce que cela signifie? Une superclé est un attribut ou un ensemble d'attributs tel que sa fermeture est tous les attributs de la relation.
Voyons quelques exemples. Ici, nous avons la table CourseEditions. Il stocke des informations sur les éditions de cours.
Chaque année, un cours donné peut être enseigné par un professeur différent, avec un prix différent et une limite de places différente. On a ainsi les dépendances fonctionnelles suivantes :
- id -> cours, année, professeur, prix, places – l'ID détermine tous les autres attributs
- cours, année -> identifiant, professeur, prix, places - le cours et l'année déterminent l'ID, le professeur, le prix et les places.
CourseEditions
identifiant | cours | année | professeur | prix | taches |
---|---|---|---|---|---|
1 | Bases de données | 2019 | Cap Chris | 100 | 45 |
2 | Mathématiques | 2019 | Daniel Parr | 80 | 34 |
3 | Bases de données | 2020 | Horloge Jennifer | 110 | 30 |
Quelles sont les super-clés dans ce tableau ? Tout d'abord, tous les attributs forment une super-clé, donc l'ensemble {id, course, year, teacher, price, spots} est une super clé. N'oubliez pas que l'ensemble de tous les attributs est une super clé dans toutes les tables.
Y a-t-il des super-clés plus petites dans ce tableau ? Oui il y en a. L'ensemble {id} est une super clé. Nous avons la dépendance fonctionnelle id -> cours, année, professeur, prix, places , et bien sûr, nous avons la dépendance triviale id -> id . Une fois que nous avons l'id, nous pouvons déterminer tous les autres attributs à partir des dépendances fonctionnelles.
L'ensemble {cours, année} est aussi une super clé. Nous avons la dépendance fonctionnelle cours, année -> id, enseignant, prix, places , et nous avons les dépendances fonctionnelles triviales course -> course et année -> année . Une fois que nous avons cours et année , nous pouvons déterminer tous les autres attributs à partir des dépendances fonctionnelles.
L'ensemble {id, cours, année, enseignant} est aussi une super clé. Nous avons identifiant , cours , et année . Ainsi, nous pouvons déterminer tous les autres attributs du tableau avec ces trois attributs.
D'autre part, l'ensemble {teacher} n'est pas une super clé. Si nous connaissons le professeur, nous ne pouvons pas déterminer d'autre attribut que l'enseignant. L'ensemble {professeur, prix} n'est pas non plus une super clé. Une fois que nous aurons professeur et prix , nous ne pouvons plus déterminer d'attributs.
Super-clés minimales
Toutes les super-clés ne sont pas des clés candidates. Pour être une clé candidate, une super-clé doit être minimale, ce qui signifie que si vous en retirez des attributs, ce ne sera plus une super-clé. Regardons quelques exemples.
L'ensemble {id} est une super clé, et c'est minime. Vous ne pouvez pas en retirer des attributs, car vous aurez alors un ensemble vide, et un ensemble vide n'est pas une super-clé. Ainsi, l'ensemble {id} est une clé candidate.
L'ensemble {cours, année} est également une super-clé et une clé candidate. Si vous en retirez l'un des attributs, l'ensemble restant n'est plus une super-clé. Vous avez besoin des deux cours et année pour déterminer les autres attributs de l'ensemble.
Cependant, l'ensemble {id, course, year, teacher} est une super clé mais pas une clé candidate. Par exemple, si vous supprimez l'attribut enseignant, l'ensemble restant est toujours une super clé. En fait, dans ce cas, vous pouvez supprimer n'importe quel attribut de {id, course, year, teacher} , et le jeu restant sera toujours une super-clé.
Notez qu'une super-clé minimale ne signifie pas la super-clé avec le plus petit nombre d'éléments. Les deux {id} et {cours, année} sont des clés candidates même si elles ont un nombre différent d'éléments.
Algorithme :vérifier qu'un ensemble d'attributs est une clé candidate
Il s'agit du problème de conception de base de données courant :comment vérifier si un ensemble d'attributs est une clé candidate ?
Voici l'algorithme pour le vérifier :
- Étape 1 :Vérifiez si l'ensemble donné est une superclé. Calculer la fermeture des attributs dans l'ensemble. Si la fermeture est l'ensemble de tous les attributs, l'ensemble est une super clé.
- Étape 2 :Vérifiez si la superclé est minimale. Supprimez chaque attribut, un à la fois. Si l'ensemble restant est une super-clé, la super-clé n'est pas minimale et l'ensemble n'est pas une clé candidate. Si vous ne pouvez supprimer aucun des attributs et conserver la propriété superkey, l'ensemble est une clé candidate.
Par exemple, vérifions si l'ensemble {cours, année} est bien une clé candidate.
- Étape 1 :Calculons la fin de {cours, année}. En utilisant l'algorithme de fermeture, nous concluons que la fermeture est bien {id, course, year, teacher, price, spots}. Ainsi, l'ensemble {cours, année} est en effet une super clé.
- Étape 2. Essayons de supprimer cours de l'ensemble. Il nous reste l'ensemble {year}. Il n'y a pas de dépendance fonctionnelle avec seulement année comme côté gauche. Ainsi, la clôture de cet ensemble est {year} . De même, lorsque nous supprimons l'attribut année, la fermeture de l'ensemble restant est {course}. Ni {année} ni {cours} sont des super-clés, donc l'ensemble {course, year} est une super-clé minimale et donc une clé candidate.
Si vous avez aimé cet article, consultez d'autres articles sur la normalisation sur notre blog.
Si vous êtes un étudiant qui suit des cours de base de données, assurez-vous de créer un compte académique gratuit dans Vertabelo, notre outil de dessin de diagramme ER en ligne. Il vous permet de dessiner des diagrammes ER logiques et physiques directement dans votre navigateur.
Vertabelo prend en charge PostgreSQL, SQL Server, Oracle, MySQL, Google BigQuery, Amazon Redshift et d'autres bases de données relationnelles. Essayez-le et voyez comme il est facile de commencer !