首頁 >資料庫 >mysql教程 >一對一、一對多和多對多資料庫關係如何運作?

一對一、一對多和多對多資料庫關係如何運作?

Susan Sarandon
Susan Sarandon原創
2025-01-21 06:27:11353瀏覽

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

掌握資料庫關係以實現高效資料管理

有效的資料庫設計取決於正確建立表格並定義它們之間的關係。 三種基本關係類型控制記錄的連接方式:一對一、一對多和多對多。 讓我們探索每種類型及其實作。

一對一關係

一對一關係表示兩個表中的記錄之間一一對應。 這是透過使用從屬表中引用父表主鍵的外鍵來實現的。

範例:

<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>

每個 student_id 唯一對應到 address_id,說明一對一連結。 請注意 UNIQUE 表中 student_idAddress 限制。

一對多關係

在一對多關係中,一個表中的單一記錄可以與另一個表中的多個記錄相關。 從屬表使用引用父表主鍵的外鍵。

範例:

<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>

一名老師可以教多個班級,但每個班級只有一名老師。

多對多關係

多對多關係將一個表中的多個記錄連接到另一個表中的多個記錄。這需要一個包含兩個表中的外鍵的聯結表。

範例:

<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>

Student_Class 表允許多個班級中的多個學生。

資料完整性:在一對一和一對多關係中對外鍵實作UNIQUE約束對於維護資料一致性至關重要。

範例性查詢:

<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>

以上是一對一、一對多和多對多資料庫關係如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn