DBMS - 関係データモデル
你好,有志於數據庫的愛好者們!今天,我們將踏上一段令人興奮的旅程,進入關係數據模型的世界。作為你們友好的鄰居計算機老師,我將指導你們瞭解數據庫管理系統(DBMS)中的這個基本概念。別擔心你們對編程是新手——我們將從基礎開始,逐步深入。那麼,來一杯咖啡,我們一起來看看吧!
概念
什麼是關係數據模型?
想像你正在組織一個巨大的圖書館。你有一些書籍、作者、類型和出版社。你會如何有效地追蹤所有這些信息?這就是關係數據模型的用武之地!
關係數據模型是一種在數據庫中結構化數據的方式,它將信息組織成表(也稱為關係)中的行和列。這就像創建一系列相互連接的工作表。
讓我們用一個例子來分解:
CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(100),
AuthorID INT,
GenreID INT,
PublisherID INT
);
CREATE TABLE Authors (
AuthorID INT PRIMARY KEY,
Name VARCHAR(50),
BirthDate DATE
);
在這個例子中,我們創建了兩個表:Books 和 Authors。每個表都有描述不同屬性的列(字段)。BookID
和 AuthorID
是各自表中每條記錄的唯一標識符。
關係模型的關鍵組成部分
-
表(關係):這些是持有數據的主要結構。在我們的圖書館例子中,Books 和 Authors 是表。
-
屬性(列):這些代表我們表中實體的屬性。例如,Title 和 Name 是屬性。
-
元組(行):表中的每行代表一條記錄或實體的實例。
-
域:這是屬性允許的值的集合。例如,BookID 的域可能是正整數。
-
鍵:這些是用於唯一標識記錄並在表之間建立關係的特殊屬性。
鍵的類型
讓我們更深入地了解鍵:
鍵類型 | 描述 | 示例 |
---|---|---|
主鍵 | 在表中唯一標識每條記錄 | Books 表中的 BookID |
外鍵 | 參考另一個表的主鍵 | Books 表中的 AuthorID |
候選鍵 | 可能可以用作主鍵 | 書籍的 ISBN |
合成鍵 | 由多個列組成的鍵 | (CourseID, StudentID) 用於課程註冊表 |
關係
關係模型最強大的方面之一是它能在表之間建立關係的能力。主要有三種類型:
- 一對一(1:1):表 A 中的每條記錄與表 B 中的一條記錄相關聯。
示例:
CREATE TABLE Passport (
PassportID INT PRIMARY KEY,
PassportNumber VARCHAR(20),
ExpiryDate DATE,
CitizenID INT UNIQUE,
FOREIGN KEY (CitizenID) REFERENCES Citizens(CitizenID)
);
- 一對多(1:N):表 A 中的記錄可以與表 B 中的多條記錄相關聯。
示例:
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
- 多對多(M:N):表 A 中的多條記錄可以與表 B 中的多條記錄相關聯。
示例:
CREATE TABLE StudentCourses (
StudentID INT,
CourseID INT,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
約束
現在,讓我們來谈谈約束——這些規則有助於維護我們數據的完整性和一致性。把它們想像成圖書館的圖書管理員,他們確保書籍被正確分類和上架。
約束類型
約束類型 | 描述 | 示例 |
---|---|---|
NOT NULL | 確保列不能有 NULL 值 | Name VARCHAR(50) NOT NULL |
UNIQUE | 確保列中的所有值都是不同的 | Email VARCHAR(100) UNIQUE |
主鍵 | 在表中唯一標識每條記錄 | StudentID INT PRIMARY KEY |
外鍵 | 確保表之間的引用完整性 | FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID) |
CHECK | 確保列中的所有值滿足特定條件 | CHECK (Age >= 18) |
DEFAULT | 當未指定值時,為列設置默認值 | Balance DECIMAL(10,2) DEFAULT 0.00 |
讓我們看看這些約束是如何工作的:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Email VARCHAR(100) UNIQUE,
Age INT CHECK (Age >= 18),
EnrollmentDate DATE DEFAULT CURRENT_DATE,
DepartmentID INT,
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);
在這個例子中:
-
StudentID
是主鍵。 -
Name
不能為 NULL。 -
Email
必須對每個學生是唯一的。 -
Age
必須是 18 歲或以上。 -
EnrollmentDate
將在未指定時默認為當前日期。 -
DepartmentID
是一個外鍵,引用 Departments 表。
這些約束有助於維護數據庫的數據完整性和一致性。它們就像我們圖書館中的規則,確保書籍被正確分類、唯一標識並與正確的作者和出版社相關聯。
當我們結束這個關係數據模型的介紹時,我希望你們開始看到這種數據管理方法的強大和有組織。這就像有一個完美組織的圖書館,每本書都在正確的位置,容易找到並與所有相關信息相連接。
記住,學習數據庫是一個旅程。不要擔心一切不會立即清晰。練習創建表、建立關係和設置約束。很快,你將像專家一樣設計高效和堅固的數據庫結構!
在我們的下一課中,我們將深入探讨如何使用 SQL 查詢這些關係結構。那時見,快樂數據建模!
Credits: Image by storyset