2024-11-19|閱讀時間 ‧ 約 0 分鐘

資料庫設計流程

以下為自學筆記,參考網路多項資源,若有錯誤請不吝指正~

首先了解資料庫到底是什麼,到底設計資料庫會有哪些流程,再介紹關聯資料庫的基本組成、五大常見的 Key 和限制。下一篇會跟著 YouTube 影片將 ER 圖轉成關聯的 Schema 表格。

資料結構的 Flat file 和 Database

我們先來看 Flat-file 跟 Database 差在哪?

Flat-file 和 Database 是兩種儲存資料的方式,但它們在結構、功能和用途上有明顯差異。以下是兩者的主要差別:

資料庫的設計大致流程

了解使用者的需求:

  • 瞭解客戶的工作流程、各部門資料串連的關係、需要倒出什麼樣的報表

畫出 ER圖 (概念設計)

  • 此階段還是圖像,尚未轉算成連接的表格。
  • 下文會詳細介紹 ER 圖含有的原素

轉換為邏輯資料模型(Logical Data Model)

  • 產生邏輯 Schema (模式) (如下圖,已確定用資料表所需的欄位,以及資料表之間如何串聯成資料庫)
  • 根據 ER 圖先轉換為資料表(Tables)、欄位(Columns)、資料類型(Data Types)、主鍵(Primary Keys)和外鍵(Foreign Keys)等細節
  • 再把每個有相關的資料,用key連結,形成關聯式資料模型 (Relational Model)
  • 關聯式資料庫(Relational Database)會有 5 種限制,後文也會提到。

實際實作模型(Physical Data Model and Implementation)

  • 將邏輯模型轉換為物理模型(可以實際使用的資料庫)
  • 使用實際的資料庫系統(如 MySQL、PostgreSQL)上實際建立資料庫
  • 需考慮使用者習慣和存取效能

ER 圖 Entity-Relationship Model 介紹

這是一個公司的資料庫設計,以下內容截圖自 YouTube 影片,看起來不算複雜


這個圖主要會有以下這些元素:

圖片來源:Geeksforgeeks

Entity 實體

  • Srong Entity:不需要依靠別的主體存在,例如員工這個實體。
  • Weak Entity: 需要依靠別的主體存在,例如員工的家人,如果沒有員工,就不會有員工的家人存在。「員工的家人」需要透過「員工」來識別。這類實體沒有自己的主鍵,而是通過「依賴實體」的主鍵加上自己的**部分鍵(Partial Key)**來識別。

Attribute 屬性

在表格中,通常是 column header (欄的標頭),每列(row)資料則是 tuple
描述實體的方式
  • Key Attribute: 獨一無二的判斷值,例如員工ID。
  • Composite Attribute: 可拆的屬性,例如地址可以再往下拆成 縣市、區、門牌號碼...
  • Multivalued Attribute: 可能會有很多值,例如一個人會有多個手機號碼。
  • Derieved Arribute: 靠別的值計算出來,例如年齡,只要有出生年就可以推斷。

Relationship 關係

  • One-to-One, 1:1
    一對一,例如一個主管職只能對一個員工
  • One-to-Many
    例如,一個部門可以有多個員工,但每個員工只能屬於一個部門。
  • Many-to-Many, M
    例如,學生和課程之間的關係:一個學生可以選修多門課程,而一門課程也可以被多個學生選修。這類關係通常需要中間表來實現關聯。
  • 自身關係(Recursive Relationship)Recursive 也有遞迴的意思
    同一實體中的實例之間的關係。例如,員工和其直屬主管的關係,兩者都是員工實體的一部分。


1:N 的關係

這個圖怎麼看呢?

Employee 對 Department 的關係是 1 個 employee 只能隸屬一個部門,但一個部門可以有很多員工。

兩個 Entity 的關係限制

  • Partcial participant: 員工 跟 管理的關係,不是每個員工都會有管理的關係,所以是partcial, 因為有人落單。用一條線表示
  • Total particiapant: 每個department 一定都會有manges 一個員工,用兩條線表示

另一種呈現方式,呈現 Entity 和關係的最大最小值。

(Min,Max)

  • 第一列的 (0,1) 一位員工最少會管理 0 個部門,最多管理 1個部門。
  • 第二列的 (1,N) 一個部門最少有一位員工為他工作,最多有 N 位員工為他工作


資料庫的五大 key

資料庫中的各種 Key 是用來確保資料的唯一性和完整性。以下是主要的 Key 類型、解釋與簡單的例子:

關聯式資料庫的五種限制

Domain Constraints (定義域限制) :

  • 每個屬性的性質都需要符合該屬性的定義,例如薪水只能是數字,姓名是字串。
  • 在geeksforgeeks 提到,各屬性必須是最小單位(原子值)(atomic values),如下圖電話號碼有多值,就會違反這個限制。

Key Constraints (關聯鍵限制):

  • 資料庫的關聯中要有關聯鍵的定義,也就是我上面提到的Super key、Candidate Key、Primary Key、Alternate Key、Foreign Key。
  • Primary Key不可以跟別人重複。下圖,有兩個 01 當Primary Key


Entity Intergrity Constraints (實體完整限制):

  • Primary Key,不能為空 (NULL),不然找不到。

Referential Integerity Constraints(參考完整限制):

  • 如果有 Foreign Key 為非空值,必須有可以參考的 Primary Key 。因為如果 Foreign Key 存在,而無法關連到其他表格的Primary Key,這個關聯存在就沒有意義。
  • DNO 是左表的Foreign Key,必須有連接到右表的 Primary Key。

主要參考資料與圖片來源:

Basic Concepts of Entity-Relationship Model(這個頻道的影片)

Constraints on Relational Database Model(GeeksforGeeks)






分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.