Terminology

在 ascii 中表達基數的最常用方法

  • March 6, 2019

我知道有幾個符號來表達實體之間的基數。

但是在 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 MN,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.

至於圖形範例,我發現魚尾紋符號最容易使用,但沒有通用標準。

引用自:https://dba.stackexchange.com/questions/230840