2011-02-24 171 views

回答

7

記住基數總是與另一事物的關係。

最大基數(基數) 總是1或許多。 A類與基數爲1的套餐B有關係,這意味着套餐中最多可以有一個這類的發生。相反可以是包有N的最大Cardnality,這意味着可以有類

最小基數(可選性) 只是意味着N個「需要」。它總是0或1. 0將意味着0或更多,1或更多

有很多優秀的文章在那裏解釋這一點,其中包括一些解釋如何甚至屬性"diagram"。你可以搜索另一件事是基數/可選性(OMG條款),這也解釋了同樣的事情,可選性是「最小」基數是「最大」,


http://www.databasecentral.info/FAQ.htm

問:我可以請參閱創建數據表之間的關係時如何使用最大基數。但是,我沒有看到最小基數如何適用於數據庫設計。我錯過了什麼?

答:在注意到最大基數是一個比最小基數更重要的關係特徵時,你是正確的。所有最小基數都表示爲使關係有意義,表格必須具有的最小允許行數。例如,籃球隊必須至少有五名球員,或者不是一支籃球隊。因此,PLAYER方的最小基數是5,TEAM方的最小基數是1。

人們可以爭辯說,除非她是一個團隊,否則一個人不能成爲球員,因此TEAM的最低基數是強制性的。同樣,一個組織不能成爲一個籃球隊,除非它至少有五名球員。 PLAYERS的最低基數也是強制性的。人們也可以向相反的方向爭論。當一名球員退出球隊時,是否會停止成爲一支球隊,直到替補隊員被招募爲止?它不能參與任何遊戲,但它不再是一個團隊嗎?這是一個事實的例子,每個個人情況都必須按照自己的條件進行評估。這個特殊情況下的真相是什麼?下次出現類似情況時,由於情況不同,決定可能會有所不同。

0

讓我們用一個例子工作 -

Students需要Class。在這裏,StudentsClass都是實體。學校可能會也可能不會有一個學期的學生參加。想想夏季學期提供課程的學校,但沒有學生有興趣參加。所以,學生的基數可以是(0,N)。但如果Class正在進行的話,它應該至少有1名學生註冊。所以,它的基數應該是(1,N)。因此,您應該檢查參與該關係的實體是否爲部分總計,這決定了它在關係中的基數。

希望它有幫助。

3

同意其他答案,這裏有一個稍微不同的觀點。按照可選性多重性來考慮。舉一個例子:PersonAddress

可選性問:每個Person都需要有一個Address?如果是的話,這種關係是無條件的 - 這意味着最小基數爲1.如果不是,則最小基數爲0.

多重性問:可以給任何給定Person有多個Address?如果不是,則最大基數爲1.如果是,則最大基數大於1。在大多數情況下,它是無界的,通常表示爲N*

兩者都很重要。非可選的關聯使代碼變得簡單,因爲在去引用之前不需要測試是否存在:例如,

a=person.address() 

代替

if (person.address !=null) { 
    a=person.address() 
} 

地址是多重的原因是很重要的一個很好的例子。太多的商業應用假設每個人都有一個地址 - 所以當人們有度假屋。

可以進一步限制基數,例如,汽車發動機有2到12個氣缸。但是這些限制通常不是很穩定(Bugatti現在提供了一個16缸發動機)。所以重要的問題是選擇性和多樣性。

hth。

+0

整潔而簡單,這樣的例子很容易擊敗理論,長篇文章在獲得基本把握。 – Onewildgamer 2016-07-20 07:02:57

0

最大基數:
1比1,1對多,多對多的,許多爲1

最小基數:
可選爲Mandatory,可選到可選,強制到可選,強制性至強制

0

對於你的問題,'數據庫設計中的選擇性有什麼用處?': 它在以下場景中變得非常有用。

當您使用1對1關係設計2個表時,您會困惑於決定在哪裏(在哪個表中)擁有外鍵。如果你有一個表的選項1和另一個表的選項爲0,那麼很容易判斷它。外鍵應該存在於前者中。還有許多其他用途。

希望它有幫助。

0

最大基數: - 一對一,一對多,多對多的

最小基數: - 零個或一個

This link介紹我的答案,爲什麼是這樣的,有什麼表示, 和這是什麼。

相關問題