資料庫管理系統(DBMS)- 資料模型

你好,有志於數據庫的熱心同好!我很興奮能與你們一起踏上這趟探索數據庫管理系統(DBMS)和資料模型的迷人旅程。作為一位具有多年經驗的鄰居計算機科學老師,我將指導你們以既有趣又容易理解的方 式掌握這些概念。那麼,我們就開始吧!

DBMS - Data Models

資料模型的介紹

在我們深入具體的資料模型之前,讓我們先從一個簡單的比喻開始。想像你正在組織一座巨大的圖書館。你會如何排列這些書籍?按照類型?作者?出版日期?這種組織系統在數據庫的世界中與資料模型相似。它是一種結構化和表示資料的方式,使其容易存儲、檢索和操作。

在DBMS的領域中,我們將聚焦於兩種主要的資料模型:

  1. 實體-關係模型
  2. 関係模型

讓我們詳細探索這兩種模型。

實體-關係模型

實體-關係模型是什麼?

實體-關係(ER)模型就像是為你的數據庫創建一幅藍圖。它是一種高層次的概念性數據模型,使用實體、屬性和關係來描述數據庫的結構。

主要組件

  1. 實體:將實體視為數據庫中的名詞。它們代表現實世界中的對象或概念。例如,在一個學校數據庫中,實體可能包括 '學生'、'老師' 和 '課程'。

  2. 屬性:這些是實體的性質或特徵。對於 '學生' 實體,屬性可能包括 '學生ID'、'姓名' 和 '出生日期'。

  3. 關係:這些顯示實體之間如何相互連接。例如,一個 '學生' 可以 '報名' 一門 '課程'。

ER圖

ER圖是這些組件的視覺表示。讓我們為我們的學校數據庫創建一個簡單的ER圖:

[學生] ---- 报名 ---- [課程]
|                               |
|                               |
學生ID                      課程ID
姓名                           課程名稱
出生日期                     學分

這個圖表顯示學生可以報名課程,兩個實體都有它們各自的屬性。

基數

基數定義了兩個實體之間關係的數量屬性。常見的類型包括:

  1. 一對一(1:1)
  2. 一對多(1:N)
  3. 多對多(M:N)

在我們的例子中,學生和課程之間的關係是多對多,因為一個學生可以報名多門課程,一門課程也可以有多名學生。

関係模型

関係模型是什麼?

現在,讓我們從我們的藍圖(ER模型)轉向實際的建設。關係模型就像是在我們的圖書館中建造書架。它將數據組織成表(關係),其中有行(元組)和列(屬性)。

主要組件

  1. 表(關係):這些是關係模型的核心。每個表代表ER模型中的一個實體或關係。

  2. 列(屬性):這些對應於ER模型中的屬性。

  3. 行(元組):表中的每一行代表實體的一個特定實例。

  4. 主鍵:表中每行的唯一標識符。

  5. 外鍵:一個表中用於唯一標識另一個表中行的字段。

示例:學生表

讓我們根據我們的ER模型創建一個學生表:

學生ID 姓名 出生日期
1 John Doe 1998-05-15
2 Jane Smith 1999-02-20
3 Bob Johnson 1997-11-30

SQL:創建和查詢表

現在,讓我們看看如何使用SQL(結構化查詢語言)創建和查詢這個表:

-- 創建學生表
CREATE TABLE Student (
StudentID INT PRIMARY KEY,
Name VARCHAR(50),
DateOfBirth DATE
);

-- 將數據插入學生表
INSERT INTO Student (StudentID, Name, DateOfBirth)
VALUES (1, 'John Doe', '1998-05-15'),
(2, 'Jane Smith', '1999-02-20'),
(3, 'Bob Johnson', '1997-11-30');

-- 查詢學生表
SELECT * FROM Student;

讓我們分解這段代碼:

  1. CREATE TABLE 語句定義了我們學生表的結構。
  2. INSERT INTO 語句將數據添加到我們的表中。
  3. SELECT 語句從學生表中檢索所有數據。

関係模型中的關係

記得我們學生和課程之間的多對多關係嗎?在關係模型中,我們通過創建一個中間表來處理這種關係:

CREATE TABLE Enrollment (
StudentID INT,
CourseID INT,
EnrollmentDate DATE,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Student(StudentID),
FOREIGN KEY (CourseID) REFERENCES Course(CourseID)
);

這個 Enrollment 表將我們的 StudentCourse 表連接起來,使我們能夠表示多對多的關係。

結論

好了,各位!我們已經一起走過了實體-關係模型,創建了我們數據庫的概念性藍圖,然後用關係模型將其變為現實。記住,就像組織圖書館一樣,結構化數據庫是關於讓信息容易存儲、查找和使用。

當我們結束時,我想到一位學生曾經告訴我:“我以前認為數據庫是無聊的電子表格,但現在我知道它們是神奇的知识寶庫!”我希望這個教程能夠在數據模型和DBMS的世界中激發你們的類似熱情。

繼續練習,保持好奇心,並且快樂地數據庫管理吧!

Credits: Image by storyset