Exercice 1 : Le modèle relationnel : relation, attribut, clé primaire
Une base relationnelle ne range pas des tableaux : elle enregistre des FAITS. Chaque ligne affirme quelque chose, et le rôle du schéma est d'empêcher qu'on y écrive un mensonge.
| id | nom | classe |
|---|---|---|
| 1 | Dupont | 1G3 |
| 2 | Nadeau | 1G1 |
| 3 | Ferrand | 1G3 |
| 4 | Ouellet | TG2 |
- a) Donnez le nom de la relation, la liste de ses attributs, son degré et sa cardinalité. Que signifie exactement une ligne de cette table ?
- b) Qu'est-ce qu'un domaine ? Proposez un domaine pour chacun des trois attributs et dites ce que le système refusera d'écrire.
- c) Définissez la clé primaire. Pourquoi l'attribut nom serait-il un mauvais choix ici, alors qu'il ne contient aucun doublon dans cet extrait ?
- d) Deux lignes identiques peuvent-elles coexister dans une relation ? Justifiez à partir de la définition mathématique d'une relation, puis dites ce que fait un système réel.
- e) Qu'est-ce qu'une clé candidate ? Une clé primaire peut-elle porter sur deux attributs à la fois ? Donnez un exemple dans une table de notes.
Voir la correction
Réponses
- a) Degré 3, cardinalité 4 ; une ligne est un fait
- b) Domaine : type et contraintes
- c) Clé primaire unique, stable, courte
- d) Relation ensembliste : pas de doublon
- e) Clé candidate ; clé composée
a) La relation s'appelle eleve. Ses attributs sont id, nom et classe. Son degré, c'est-à-dire son nombre d'attributs, vaut 3. Sa cardinalité, c'est-à-dire son nombre de lignes, vaut 4. Une ligne affirme un fait : « il existe un élève, d'identifiant 1, nommé Dupont, inscrit en 1G3 ». Cette lecture en termes de fait n'est pas une image : c'est elle qui justifie que l'ordre des lignes soit sans importance et qu'un doublon soit dépourvu de sens.
b) Un domaine est l'ensemble des valeurs autorisées pour un attribut, autrement dit son type accompagné de ses contraintes. Ici : id est un entier strictement positif ; nom est une chaîne de caractères non vide, d'au plus une centaine de caractères ; classe est une chaîne appartenant à une liste fermée de codes de classes de l'établissement. Le système refusera alors d'écrire un identifiant négatif, un nom vide, ou une classe inexistante comme « 1G9 ». Sans domaine déclaré, ces trois erreurs entrent dans la base et n'en ressortent jamais.
c) La clé primaire est un attribut, ou un groupe d'attributs, dont la valeur identifie de façon unique et non nulle chaque ligne de la relation. L'attribut nom serait un mauvais choix pour trois raisons. Un, l'unicité n'est pas garantie dans le temps : deux homonymes finiront par arriver, et la base deviendrait alors incapable d'enregistrer le second. Deux, la valeur peut CHANGER, par mariage ou correction d'orthographe, et il faudrait alors mettre à jour toutes les tables qui la référencent. Trois, elle est longue, donc coûteuse à indexer et à recopier. Une clé primaire doit être unique, stable et courte, ce qu'un identifiant artificiel garantit par construction.
d) Non, pas selon la définition mathématique : une relation est un ENSEMBLE de n-uplets, et un ensemble ne contient pas deux fois le même élément. Deux lignes identiques n'apporteraient d'ailleurs aucune information, puisqu'elles affirmeraient exactement le même fait. Dans un système réel, l'absence de doublon n'est garantie que si une clé primaire ou une contrainte d'unicité est déclarée : sans elle, la plupart des moteurs acceptent d'insérer deux lignes identiques, ce qui fausse ensuite tout comptage. Déclarer la clé primaire n'est donc pas une formalité, c'est ce qui rend la table conforme au modèle.
e) Une clé candidate est un ensemble d'attributs qui pourrait servir de clé primaire, c'est-à-dire qui identifie de façon unique chaque ligne et dont aucune partie stricte n'a cette propriété. Une relation peut en avoir plusieurs, et l'on en choisit une comme clé primaire. Oui, une clé primaire peut porter sur plusieurs attributs : dans une table de notes, le couple formé de eleve_id et devoir_id est une clé primaire naturelle si l'on décide qu'un élève ne peut avoir qu'une seule note par devoir. On parle alors de clé COMPOSÉE, et elle exprime une règle de gestion, pas seulement une contrainte technique.