第 8 章

8.4 資料關係、基數與選擇性

資料分析與資料建模

8.4.1 資料關係

資料關係表示兩個實體的實例如何連結。例如,一筆報名由一個團隊提出,並隸屬一場競賽。關係名稱應使用具體動詞,讓讀者可以組成完整句子閱讀。

8.4.2 基數

基數(Cardinality)說明一個實體最多可與另一實體的多少實例連結,常見為一對一、一對多及多對多。

基數必須來自業務事實,不能以資料庫實作習慣取代需求確認。基數要在實體關係圖決定,而不是留給程式設計師自行決定。

8.4.3 選擇性

選擇性說明關係是否必須存在。最小值為零代表可以沒有,最小值為一代表至少必須有一個。例如,報名建立後可能尚未產生競賽結果,因此「報名—競賽結果」在結果端可能是選擇性的。

8.4.4 鴉爪標記法(Crow's Foot)

鴉爪標記法(Crow's Foot notation)是一種常見的實體關係圖表示法,用來呈現實體之間的基數與選擇性。名稱來自表示「多」的一端所使用的三叉形符號。分析階段的圖形描述的是業務資料實體及其關係,不能直接把實體等同於資料庫資料表。

鴉爪標記法透過在連接線兩端的不同形狀,來表示資料之間的對應限制,例如一對一、一對多、零或多等:

  • 三叉形(鴉爪):代表「多個」(Many,通常大於或等於 1)。
  • 垂直短線(|):代表「一個」。
  • 圓圈(o):代表「零個」,表示具有選擇性。
  • 雙垂直短線:代表「剛好一個」(1 and only 1)。

透過符號組合,領域人員、系統分析人員與後續設計人員可以共同檢查關係是否必須存在,以及可以連結多少個實例。這項表示法能把文字需求轉為可檢查的資料結構,但不會自行證明基數正確;每個符號仍須回到需求與業務規則確認。

在Case M01中,||表示恰好一個,o{表示零個以上。這張候選圖表示每筆報名屬於一場競賽及一個團隊;一場競賽或一個團隊可連結零筆以上報名。若系統範圍限定單一競賽,或團隊跨競賽的定義不同,就要重新確認關係。

text
erDiagram
  COMPETITION ||--o{ REGISTRATION : 接受
  TEAM ||--o{ REGISTRATION : 提出
Mermaid 圖形預覽Mermaid 11.12
查看並複製 Mermaid 程式碼
mermaid
erDiagram
  COMPETITION ||--o{ REGISTRATION : 接受
  TEAM ||--o{ REGISTRATION : 提出

8.4.5 不能精確表達的規則

Crow's Foot常用符號無法直接表達BR-01的「3~5名學生」,如果要限制最多5人一組,最少3人一組,則要在圖上可先表達團隊與學生的多對多候選關係,再以規則註記補充精確限制。圖形無法表達的規則仍必須保留在需求規格與資料字典中。

是否把3~5人的限制設計成可調整參數,屬於後續設計決策。分析階段應先忠實記錄BR-01、確認規則適用範圍,並說明圖形無法單獨表達這項限制;不能因預期規則可能改變,就預先授權系統管理者修改。