Les termes de base de données relationnel et relationnel décrivent la manière dont les données des tables sont connectées. Une base de données relationnelle consiste en une série de deux ou plusieurs tables liées par une clé spécifique. Une base de données relationnelle diffère des bases de données non structurées, qui sont courantes dans les initiatives de Big Data. Les bases de données relationnelles ont tendance à exiger des règles strictes sur la façon dont les tables sont définies et sur ce qui constitue une relation valide entre les tables.
Types de relations de base de données
Les relations vous permettent de décrire les connexions entre les tables de base de données de manière puissante. Ces relations peuvent ensuite être exploitées pour effectuer de puissantes requêtes croisées, appelées JOIN.
Il existe trois types de relations de base de données, chacune nommée en fonction du nombre de lignes de table impliquées dans la relation. Chacun de ces trois types de relations existe entre deux tables.
- Les relations biunivoques se produisent lorsque chaque entrée de la première table n'a qu'une seule contrepartie dans la seconde table. Les relations un à un sont rarement utilisées car il est souvent plus efficace de mettre toutes les informations dans un seul tableau. Certains concepteurs de bases de données tirent parti de cette relation en créant des tables contenant un sous-ensemble des données d'une autre table.
- Les relations un-à-plusieurs sont le type de relation de base de données le plus courant. Ils se produisent lorsque chaque enregistrement de la table A correspond à un ou plusieurs enregistrements de la table B, mais que chaque enregistrement de la table B correspond à un seul enregistrement de la table A. Par exemple, la relation entre une table Enseignants et une table Élèves dans une école primaire base de données serait probablement une relation un-à-plusieurs car chaque élève n'a qu'un seul enseignant, mais chaque enseignant a plusieurs élèves. Cette conception un-à-plusieurs permet d'éliminer les données en double.
- Les relations plusieurs à plusieurs se produisent lorsque chaque enregistrement de la table A correspond à un ou plusieurs enregistrements de la table B, et chaque enregistrement de la table B correspond à un ou plusieurs enregistrements dans le tableau A. Par exemple, la relation entre une table Enseignants et une table Cours serait probablement plusieurs à plusieurs, car chaque enseignant peut donner plus d'un cours et chaque cours peut avoir plus d'un instructeur.
Bottom Line
Les relations d'auto-référence se produisent lorsqu'il n'y a qu'une seule table impliquée. Un exemple courant est une table Employés qui contient des informations sur le superviseur de chaque employé. Chaque superviseur est également un employé et a un superviseur. Dans ce cas, il existe une relation d'auto-référence un à plusieurs, car chaque employé a un superviseur, mais chaque superviseur peut avoir plus d'un employé.
Créer des relations avec des clés étrangères
Vous créez des relations entre les tables en spécifiant une clé étrangère. Cette clé indique à la base de données relationnelle comment les tables sont liées. Dans de nombreux cas, une colonne de la table A contient des clés primaires référencées à partir de la table B.
Prenons l'exemple des tables Enseignants et Élèves. La table Enseignants contient un identifiant, un nom et une colonne de cours:
InstructorID | Nom_du_professeur | Cours |
001 | John Doe | Anglais |
002 | Jane Schmoe | Mathématiques |
La table des étudiants comprend un identifiant, un nom et une colonne de clé étrangère:
StudentID | Student_Name | Teacher_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
La colonne Teacher_FK dans la table des étudiants fait référence à la valeur de clé primaire d'un instructeur dans la table des enseignants. Souvent, les concepteurs de bases de données utilisent PK ou FK dans le nom de la colonne pour identifier une clé primaire ou une colonne de clé étrangère.
Ces deux tableaux illustrent une relation un-à-plusieurs entre les enseignants et les élèves.
Relations et intégrité référentielle
Après avoir ajouté une clé étrangère à une table, créez une contrainte de base de données qui applique l'intégrité référentielle entre les deux tables. Cette étape garantit que les relations entre les tables restent cohérentes. Lorsqu'une table possède une clé étrangère vers une autre table, l'intégrité référentielle exige que toute valeur de clé étrangère dans la table B fasse référence à un enregistrement existant dans la table A.
Mise en œuvre des relations
Selon votre base de données, vous implémenterez les relations entre les tables de différentes manières. Microsoft Access fournit un assistant qui vous permet de lier des tables et également d'appliquer l'intégrité référentielle.
Si vous écrivez SQL directement, créez d'abord la table Teachers, en déclarant une colonne ID comme clé primaire:
CREATE TABLE Teachers (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR(100), Course VARCHAR(100));
Lorsque vous créez la table Students, vous déclarez la colonne Teacher_FK comme étant une clé étrangère référençant la colonne InstructorID dans la table Teachers':
CREATE TABLE Étudiants (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) REFERENCES Teachers(InstructorID)));
Utiliser des relations pour joindre des tables
Après avoir créé une ou plusieurs relations dans votre base de données, tirez parti de leur puissance en utilisant des requêtes SQL JOIN pour combiner les informations de plusieurs tables. Le type de jointure le plus courant est un SQL INNER JOIN, qui est une jointure simple. Ce type de jointure renvoie tous les enregistrements remplissant la condition de jointure d'une ou plusieurs tables.
Par exemple, cette condition JOIN renvoie Student_Name, Teacher_Name et Course, où la clé étrangère de la table Students correspond à la clé primaire de la table Teachers:
SELECT Students. Student_Name, Teachers. Teacher_Name, Teachers. Course
FROM Students
INNER JOIN TeachersON Students. Teacher_FK=Teachers. InstructorID;
Cette instruction produit une table comme celle-ci:
Student_Name | Nom_du_professeur | Cours |
Lowell Smith | John Doe | Anglais |
Brian Short | John Doe | Anglais |
Corky Mendez | Jane Schmoe | Mathématiques |
Monica Jones | John Doe | Anglais |