Développement d'applications
avec une base de données
FAQ concernant les relations
Retour au module E: concept des relations
Pourquoi 2 clés dans la même table?
Dans la table enfant, il faut 2 clés:
- la clé primaire sert à indentifier l'enfant. Chaque enfant est un enregistrement qui doit être distingué des autres, donc il lui faut une clé primaire (= unique et non NULL)
- la clé étrangère sert à relier l'enregistrement-enfant à un enregistrement-parent dans la table des parents.
Pourquoi la clé étrangère se répète-t-elle?
La relation parent-enfant dans les tables est une analogie à la vie réelle, pour faciliter la compréhension.
- Une mère peut avoir plusieurs enfants.
- Un enfant ne peut avoir qu'une seule mère.
Donc
- la clé étrangère ne représente qu'un seul champ: une seule valeur par enregistrement-enfant, puisque chaque enfant ne peut avoir qu'une seule mère.
- Cette valeur peut se répéter d'un enregistrement à l'autre, puisque plusieurs enfants peuvent avoir la même mère.
Cette relation est aussi appelée relation 1-n
Pourquoi je ne peux pas ajouter un champ enfant dans ma table parent?
C'est l'erreur la plus fréquente:
- Une table doit être construite formellement. Elle doit contenir des champs qui sont homogènes d'un enregistrement à l'autre. On ne peut donc pas mettre des données multiples dans un seul champ, et on ne sait pas combien de champs sont nécessaires pour un nombre d'enfants indéterminés.
- Le SGBD est capable de travailler et de retracer les enregistrements correspondants.
- Tout comme pour les tables uniques, on peut faire une requête qui trouve "tous les enfants d'un certain parent".
- Tout comme pour les tables uniques, on peut compter (additionner, faire la moyenne,...) les enfants d'un certain parent dans une requête, grouper les enfants d'un certain parent dans un rapport, etc.
Retour au module E: concept des relations