2013-07-26 55 views
19

當談到數據模型和數據庫時,術語基數通常用於描述給定集合中允許的元素的數量。多重性vs基數

UML通常指與Multiplicity相同的屬性。

這兩個術語有沒有區別?還是它們是同義詞?

回答

0

最簡單的解釋是說:

Multiplicity =基數+參與

基數:表示某個實體可以參與的最大可能關係數 (簡單來說:至多)。

參與:表示是否所有或只有一些實體事件參與了關係(至少簡單地說)。

例:enter image description here

14

Martin Fowler在他的網站上討論了這個問題。引用:

當數據建模方法談論關係時,他們使用術語 基數來表示有多少實體可以鏈接在一起。所以 你可能有訂單和客戶之間的關係,並說 關係的基數是一對多。或者您可能會聽到 訂單的客戶基數爲0到多。

UML避免了喜歡使用多樣性的術語基數。經常有 的人對數據建模背景感到驚訝,因爲 基數在數據建模圈已經得到了廣泛的應用。

更改的原因是基數的字典定義是「特定集合中的元素數量或其他分組」(OED)。根據這個數據建模的用法實際上是 錯誤。在出色的UML參考手冊中,Rumbaugh將多重性定義爲「允許基數範圍 值的規範 - 一個集合可能承擔的大小」。 UML在各個地方使用多重性 來表示屬性(關聯或屬性),還使用 來顯示覆合結構中零件的多重性。它正式定義爲 作爲下限和上限。一個關聯(UML 等價於數據建模圈中的關係)對於每個方向具有 多重性。

Source

15

簡而言之:一個多重是高達下部和上部基數製成。基數是一組中有多少個元素。因此,多樣性會告訴您該集合的最小和最大允許成員。它們不是同義詞。

-1

感謝您回答上述問題。

今天早上真的被這些詞混淆了(咖啡沒有幫助)。

鑑於下面的例子:

0-1 ---------- 1- *

多重性:

第一多,爲左實體:0-1

第二多重,對於右實體:1- *

基數爲第一多重

基數:0

基數:1

基數爲第二多重

基數:1

基數:*

0

多重是對關聯對象,而基數集合的約束是在收集的對象的數量。

多樣性實際上是對基數的約束。

+0

這幾乎是(cardinatility不是上限,它是一個集合中存在的元素的實際數量)的正確答案,但它缺少一點內容和參考。請參閱UML 2.5§7.5.3.2多重性 –

+0

謝謝先生,我有點困惑,現在我糾正了我的答案:-) –