掌握資料庫關係以實現高效資料管理
有效的資料庫設計取決於正確建立表格並定義它們之間的關係。 三種基本關係類型控制記錄的連接方式:一對一、一對多和多對多。 讓我們探索每種類型及其實作。
一對一關係
一對一關係表示兩個表中的記錄之間一一對應。 這是透過使用從屬表中引用父表主鍵的外鍵來實現的。
範例:
<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_id
的 Address
限制。
一對多關係
在一對多關係中,一個表中的單一記錄可以與另一個表中的多個記錄相關。 從屬表使用引用父表主鍵的外鍵。
範例:
<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中文網其他相關文章!