在 ascii 中表達基數的最常用方法
我知道有幾個符號來表達實體之間的基數。
但是在 ascii 中表達基數是否有一種實用的通用方式?
範例:使用者 – 組。一個使用者可以有多個組,一個組可以有多個使用者。
我查看了這個頁面:https://en.wikipedia.org/wiki/Cardinality_(data_modeling)
例如:一對多的“訂單”←→“訂單項”
以下是一些表達基數的圖形方式:
https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model#Cardinalities
表達基數最常見的方式是什麼?
這有標準/ rfc嗎?
UML方式(統一建模語言)是用來描述基數
<lower bound> .. <upper bound>
,每個都綁定一個非負整數並*
描述潛在的無限。您可以在之前連結的文件中的第7.5.4 Notation點找到它。然而,這通常適用於許多不同的建模圖,而不僅僅適用於 ERD。在以關係方式編寫表之間的關係時,我發現使用最廣泛的符號是
N:M
(或N to M
,N,M
)。您描述關係的方式也很重要,因為實際上您需要指定 2 個基數/多重性部分。檢查以下範例:
- 訂單項。一個訂單必須至少有 1 個訂單項,並且可能有無限個訂單項。一個訂單項不能沒有訂單,並且只屬於 1 個訂單。這將在具有 Order 和 LineItem 表的關係數據庫上實現,其中 LineItem 具有針對 Order 的非空外鍵。
Order to LineItem: 1 to N LineItem to Order: 1 to 1
- 員工與自身(指揮關係鏈)。一個特定的員工可能沒有老闆(最高主管)或只有 1 個。老闆可以沒有下屬的員工,或者無限多。這將在具有一個表 Employee 的關係數據庫上實現,該表自身俱有一個可以為空的外鍵。
Boss to Employee: 0 to N Employee to Boss: 0 to 1
- 人與自己(父親和母親的關係)。每個人都有一個父親和一個母親。每個父母可能沒有孩子,或者有很多孩子(例如,父親可以有無限數量,而母親最多可以有 10 個)。在關係數據庫上實現這一點的方法是通過同一個表 Person 上的 2 個欄位,通過可為空的外鍵(部分強制)與自身連結。
Person to father: 1 to 1 Father to person: 0 to N Person to mother: 1 to 1 Mother to person: 0 to 10
大多數這些關係通常通過僅提及每邊的上限來簡化。所以對於
boss to employee
它來說1 to N
,它被讀作“一個老闆最多可以有 N 名員工,一個員工最多可以有 1 名老闆”。這些表達式在實現上有一些注意事項,具體取決於您使用的每個數據庫。
在訂單範例中,如果在創建記錄時訂單必須具有現有訂單項,並且訂單項必須具有現有訂單,那麼如何載入它們而不失敗?在關係數據庫中,首先載入訂單,然後載入訂單項,因此有時會有一個訂單沒有訂單項,但此符號表示的不是應該如何實現,而是這些實體在業務層面。
在父母身份範例中,在某些時候將沒有關於父母的資訊,否則您將擁有無限數量的父母身份級別。所以頂層的實際實現將是
Person to father: 0 to 1
.至於圖形範例,我發現魚尾紋符號最容易使用,但沒有通用標準。