歡迎來到資料庫設計!
你有沒有想過像 Amazon 或 Netflix 這樣的大型網站,是如何在不亂成一團的情況下,追蹤數以百萬計的用戶、產品和電影呢?這一切都始於概念資料模型 (Conceptual Data Model)。你可以把它想像成資料庫的「建築藍圖」。在我們開始操作電腦之前,必須先規劃好需要什麼資料,以及這些資料如何整合在一起。
如果起初覺得這有點抽象也不用擔心——讀完這些筆記後,你將能夠把任何現實生活中的場景轉化為專業的資料庫規劃!
1. 基礎積木:實體 (Entities) 與屬性 (Attributes)
要建立資料模型,我們需要找出我們想要儲存資料的「對象」,以及這些對象的「細節」。
什麼是實體 (Entity)?
實體 (Entity) 是指機構感興趣,且需要記錄其資料的物件、人員、事件或事物的類別。
類比:如果你的資料庫是一個檔案櫃,每個實體就是一個抽屜。
範例:在學校資料庫中,實體可能包括學生 (Student)、教師 (Teacher) 和科目 (Subject)。
什麼是屬性 (Attribute)?
屬性 (Attribute) 是關於實體的具體資訊(特徵)。
記憶小撇步:把實體想像成名詞(事物本身),把屬性想像成形容詞(描述事物)。
範例:對於學生 (Student) 這個實體,屬性可能包括姓名 (FirstName)、姓氏 (Surname) 和出生日期 (DateOfBirth)。
實體識別碼 (Entity Identifier)
每個實體都需要一種方法來唯一識別每筆記錄。這稱為實體識別碼 (Entity Identifier)(你之後會學到它就是「主鍵」Primary Key)。在筆記和考試中,你必須底線標示識別碼。
快速回顧:
• 實體:學生 (Student)
• 屬性:學生編號 (StudentID), 名字 (FirstName), 姓氏 (Surname)
(注意 學生編號 是如何被底線標示的,因為它對每個人來說都是獨一無二的!)
重點總結
實體是我們關心的「大項目」,而屬性則是描述它們的「小細節」。其中一個屬性必須始終是唯一識別碼。
2. 實體描述 (Entity Descriptions)
AQA 課程大綱要求你能夠使用稱為實體描述 (Entity Description) 的特定文字格式來寫出你的資料模型。它看起來像這樣:
\(EntityName(Identifier, Attribute2, Attribute3, ...)\)
範例:如果我們正在為汽車展示間設計資料庫:
汽車 (Car)(車牌號碼 (RegistrationNumber), 品牌 (Make), 型號 (Model), 顏色 (Colour), 價格 (Price))
常見錯誤:忘了為識別碼加上底線!如果你在考試中沒有標示,可能會因此失分。
3. 實體關係 (ER) 模型
資料並不是孤立存在的;實體之間通常彼此相關。我們使用實體關係圖 (Entity Relationship Diagrams, ERDs) 來直觀地展示這些連結。
關係類型
兩個實體之間主要有三種關聯方式:
1. 一對一 (One-to-One, 1:1)
實體 A 的每個項目只連結到實體 B 的一個項目。
範例:一位丈夫 (Husband) 有一位妻子 (Wife);一位妻子有一位丈夫。(以傳統資料庫意義而言!)
2. 一對多 (One-to-Many, 1:M)
實體 A 的一個項目可以連結到實體 B 的多個項目,但實體 B 只能連結到 A 的一個項目。
範例:一位母親 (Mother) 可以有多個孩子 (Children),但每個孩子只有一位親生母親。
小提示:這是資料庫中最常見的關係!
3. 多對多 (Many-to-Many, M:M)
實體 A 的多個項目可以連結到實體 B 的多個項目。
範例:一位學生 (Student) 修讀多個科目 (Subjects),而一個科目由多位學生修讀。
繪製圖表
在考試中,你用矩形表示實體,用連線表示它們之間的關係。
要顯示關係中的「多」(Many) 一端,我們使用「烏鴉腳」(Crow's Foot,即三條分支的小線)。
• 沒有分支的直線代表「一」。
• 以「烏鴉腳」結尾的線代表「多」。
重點總結
ER 圖使用矩形表示實體,並使用特殊的線條結尾(如烏鴉腳)來展示兩個項目之間如何連結。
4. 步驟教學:建立資料模型
當你在考試中遇到情境題時,請遵循以下步驟:
步驟 1:識別實體
找出文字中的主要「名詞」(例如:顧客、訂單、產品)。
步驟 2:確定關係
問問自己:「一位顧客可以有多個訂單嗎?」(可以)。「一個訂單可以屬於多位顧客嗎?」(不可以)。這是一個一對多 (One-to-Many) 關係。
步驟 3:繪製 ERD
畫出你的矩形,並用正確的線條連接它們。
步驟 4:撰寫實體描述
列出每個實體的屬性,並為識別碼加上底線。
你知道嗎?
建立這些模型的過程稱為概念建模 (Conceptual Modelling),因為它專注於資料的邏輯,而不是用於儲存資料的實體軟體或硬體。你可以將同一個概念模型實現為 SQL、試算表,甚至是紙本檔案系統!
5. 最後快速回顧
檢查你的理解:
• 你能定義實體 (Entity) 和屬性 (Attribute) 嗎?
• 你記得在描述中為識別碼加上底線嗎?
• 你能畫出烏鴉腳 (Crow's Foot) 來表示「多」的關係嗎?
請繼續練習不同的場景,例如圖書館(書籍、會員、借閱記錄)或醫院(醫生、病人、預約)。練習越多,就越容易看出其中的規律!