Maison >base de données >tutoriel mysql >Comment fonctionnent les relations entre bases de données un-à-un, un-à-plusieurs et plusieurs-à-plusieurs ?

Comment fonctionnent les relations entre bases de données un-à-un, un-à-plusieurs et plusieurs-à-plusieurs ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-21 06:27:11353parcourir

How Do One-to-One, One-to-Many, and Many-to-Many Database Relationships Work?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn