Dans le chapitre précédent, vous avez vu comment définir des relations entre les instances de différentes classes.
Vous vous rappelez sûrement qu'à une instance de classe correspond un tuple (une ligne) dans la table.
Afin de pouvoir relier ces tuples, il faut bien les identifier de manière unique.
Si je reprends la table contenant les informations sur un groupe d'amis que je vous donnais en exemple dans le premier chapitre :
prenom | nom | couleur_yeux |
---|---|---|
Chandler | Bing | bleu |
Phoebe | Buffay | vert |
Monica | Geller | bleu |
Ross | Geller | marron |
Rachel | Green | bleu |
Joey | Tribbiani | marron |
Phoebe | Abbott | bleu |
Vous remarquez que pour identifier un tuple, je ne peux me baser :
ni sur le prénom : Phoebe Buffay et Phoebe Abbott ont le même prénom
ni sur le nom : Monica Geller et Ross Geller ont le même nom
et encore moins sur la couleur des yeux... !
L'attribut id
Dans ce cas, afin de vous assurer de pouvoir identifier un tuple de manière unique, il y a deux solutions :
identifier un tuple par le nom ET le prénom
ajouter un attribut (une colonne) réservé à accueillir un identifiant unique
J'ajoute donc un attribut spécifique id
dans la table Ami
:
id | prenom | nom | couleur_yeux |
---|---|---|---|
1 | Chandler | Bing | bleu |
2 | Phoebe | Buffay | vert |
3 | Monica | Geller | bleu |
4 | Ross | Geller | marron |
5 | Rachel | Green | bleu |
6 | Joey | Tribbiani | marron |
7 | Phoebe | Abbott | bleu |
Cet attribut ne représente rien de concret, il ne sert que d'identifiant unique. Vous pouvez l'appeler comme vous le souhaitez, mais en général, il est nommé id
ou code
. Parfois, on ajoute le nom de la table en préfixe (ami_id
).
Je n'ai désormais plus de problème pour identifier à coup sûr un ami de manière unique !
Lors de la création de la table dans la base de données, cet attribut spécifique sera indiqué comme l'identifiant des tuples de la table : c'est la clé primaire, ou primary key (PK) en anglais.
Grâce à cette configuration, la base de données veillera à ce qu'il n'y ait aucun doublon dans cette colonne. Il me sera impossible d'ajouter deux tuples ayant la même valeur dans l'attribut id
.
La clé primaire (PK)
Dans le modèle physique de données (MPD), la clé primaire est située dans la partie du milieu et porte l'indication PK
:

Unique et constante
Afin d'assurer la cohérence du modèle relationnel, la clé primaire, doit ‒ vous l'aurez compris ‒ être unique mais elle doit aussi ne jamais changer.
Une colonne unique signifie que la base de données ne vous laissera pas créer de doublon dans cette colonne : aucun tuple ne peut avoir la même valeur qu'un autre tuple pour l'attribut contenu dans cette colonne.
Ainsi, un attribut email
dans une table utilisateur
est unique, mais l'adresse email peut aussi changer au cours de temps. Cet attribut ne devra donc pas être utilisé en tant que clé primaire.
Servant de référence
La clé primaire (PK) sert d'identifiant pour chaque tuple.
À quoi va bien servir cet identifiant ?
Rappelez-vous, au début de ce chapitre, je vous disais qu'avant de faire un lien entre les tuples de différentes tables (ou instances de classes), il fallait pouvoir les identifier de manière unique et certaine.
C'est ce que fait la clé primaire.
Et c'est cette clé qui va servir de référence pour relier les tuples de la table à ceux d'une autre table !
Tout se tient, et nous allons voir ça ensemble dans le chapitre suivant.