DBMS - 関係データモデル

你好,有志於數據庫的愛好者們!今天,我們將踏上一段令人興奮的旅程,進入關係數據模型的世界。作為你們友好的鄰居計算機老師,我將指導你們瞭解數據庫管理系統(DBMS)中的這個基本概念。別擔心你們對編程是新手——我們將從基礎開始,逐步深入。那麼,來一杯咖啡,我們一起來看看吧!

DBMS - Relational Data Model

概念

什麼是關係數據模型?

想像你正在組織一個巨大的圖書館。你有一些書籍、作者、類型和出版社。你會如何有效地追蹤所有這些信息?這就是關係數據模型的用武之地!

關係數據模型是一種在數據庫中結構化數據的方式,它將信息組織成表(也稱為關係)中的行和列。這就像創建一系列相互連接的工作表。

讓我們用一個例子來分解:

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。每個表都有描述不同屬性的列(字段)。BookIDAuthorID 是各自表中每條記錄的唯一標識符。

關係模型的關鍵組成部分

  1. 表(關係):這些是持有數據的主要結構。在我們的圖書館例子中,Books 和 Authors 是表。

  2. 屬性(列):這些代表我們表中實體的屬性。例如,Title 和 Name 是屬性。

  3. 元組(行):表中的每行代表一條記錄或實體的實例。

  4. :這是屬性允許的值的集合。例如,BookID 的域可能是正整數。

  5. :這些是用於唯一標識記錄並在表之間建立關係的特殊屬性。

鍵的類型

讓我們更深入地了解鍵:

鍵類型 描述 示例
主鍵 在表中唯一標識每條記錄 Books 表中的 BookID
外鍵 參考另一個表的主鍵 Books 表中的 AuthorID
候選鍵 可能可以用作主鍵 書籍的 ISBN
合成鍵 由多個列組成的鍵 (CourseID, StudentID) 用於課程註冊表

關係

關係模型最強大的方面之一是它能在表之間建立關係的能力。主要有三種類型:

  1. 一對一(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. 一對多(1:N):表 A 中的記錄可以與表 B 中的多條記錄相關聯。

示例:

CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
  1. 多對多(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