Maison >base de données >tutoriel mysql >Comment fonctionnent les relations entre bases de données un-à-un, un-à-plusieurs et plusieurs-à-plusieurs ?
Maîtriser les relations avec les bases de données pour une gestion efficace des données
Une conception de base de données efficace dépend de la bonne structuration des tables et de la définition des relations entre elles. Trois types de relations fondamentales régissent la manière dont les enregistrements sont connectés : un à un, un à plusieurs et plusieurs à plusieurs. Explorons chaque type et leur mise en œuvre.
Relations individuelles
Une relation un-à-un signifie une correspondance un-à-un entre les enregistrements de deux tables. Ceci est réalisé en utilisant une clé étrangère dans la table dépendante faisant référence à la clé primaire de la table parent.
Exemple :
<code class="language-sql">-- Table 1: Student CREATE TABLE Student ( student_id INT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), address_id INT ); -- Table 2: Address CREATE TABLE Address ( address_id INT PRIMARY KEY, address VARCHAR(255), city VARCHAR(255), zipcode VARCHAR(10), student_id INT UNIQUE );</code>
Chaque student_id
correspond de manière unique à un address_id
, illustrant un lien un-à-un. Notez la contrainte UNIQUE
sur student_id
dans le tableau Address
.
Relations un-à-plusieurs
Dans une relation un-à-plusieurs, un seul enregistrement dans une table peut être lié à plusieurs enregistrements dans une autre. La table dépendante utilise une clé étrangère faisant référence à la clé primaire de la table parent.
Exemple :
<code class="language-sql">-- Table 1: Teacher CREATE TABLE Teacher ( teacher_id INT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255) ); -- Table 2: Class CREATE TABLE Class ( class_id INT PRIMARY KEY, class_name VARCHAR(255), teacher_id INT );</code>
Un enseignant peut enseigner à plusieurs classes, mais chaque classe n'a qu'un seul enseignant.
Relations plusieurs-à-plusieurs
Une relation plusieurs-à-plusieurs connecte plusieurs enregistrements d'une table à plusieurs enregistrements d'une autre. Cela nécessite une table de jonction contenant les clés étrangères des deux tables.
Exemple :
<code class="language-sql">-- Table 1: Student CREATE TABLE Student ( student_id INT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255) ); -- Table 2: Class CREATE TABLE Class ( class_id INT PRIMARY KEY, name VARCHAR(255) ); -- Junction Table: Student_Class CREATE TABLE Student_Class ( class_id INT, student_id INT, PRIMARY KEY (class_id, student_id) );</code>
La table Student_Class
permet d'accueillir plusieurs étudiants dans plusieurs classes.
Intégrité des données : L'application de UNIQUE
contraintes sur les clés étrangères dans les relations un-à-un et un-à-plusieurs est cruciale pour maintenir la cohérence des données.
Requêtes illustratives :
<code class="language-sql">-- Students in a specific class: SELECT s.student_id, s.last_name FROM Student_Class sc JOIN Student s ON s.student_id = sc.student_id WHERE sc.class_id = 1; -- Classes attended by a specific student: SELECT c.class_id, c.name FROM Student_Class sc JOIN Class c ON c.class_id = sc.class_id WHERE sc.student_id = 2;</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!