我很難理解嘗試設計數據庫時最大和最小基數之間的區別。Max Cardinality和Min Cardinality有什麼區別?
回答
記住基數總是與另一事物的關係。
最大基數(基數) 總是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的最低基數也是強制性的。人們也可以向相反的方向爭論。當一名球員退出球隊時,是否會停止成爲一支球隊,直到替補隊員被招募爲止?它不能參與任何遊戲,但它不再是一個團隊嗎?這是一個事實的例子,每個個人情況都必須按照自己的條件進行評估。這個特殊情況下的真相是什麼?下次出現類似情況時,由於情況不同,決定可能會有所不同。
讓我們用一個例子工作 -
Students
需要Class
。在這裏,Students
和Class
都是實體。學校可能會也可能不會有一個學期的學生參加。想想夏季學期提供課程的學校,但沒有學生有興趣參加。所以,學生的基數可以是(0,N)。但如果Class
正在進行的話,它應該至少有1名學生註冊。所以,它的基數應該是(1,N)。因此,您應該檢查參與該關係的實體是否爲部分或總計,這決定了它在關係中的基數。
希望它有幫助。
同意其他答案,這裏有一個稍微不同的觀點。按照可選性和多重性來考慮。舉一個例子:Person
有Address
。
可選性問:每個Person
都需要有一個Address
?如果是的話,這種關係是無條件的 - 這意味着最小基數爲1.如果不是,則最小基數爲0.
多重性問:可以給任何給定Person
有多個Address
?如果不是,則最大基數爲1.如果是,則最大基數大於1。在大多數情況下,它是無界的,通常表示爲N
或*
。
兩者都很重要。非可選的關聯使代碼變得簡單,因爲在去引用之前不需要測試是否存在:例如,
a=person.address()
代替
if (person.address !=null) {
a=person.address()
}
地址是多重的原因是很重要的一個很好的例子。太多的商業應用假設每個人都有一個地址 - 所以當人們有度假屋。
可以進一步限制基數,例如,汽車發動機有2到12個氣缸。但是這些限制通常不是很穩定(Bugatti現在提供了一個16缸發動機)。所以重要的問題是選擇性和多樣性。
hth。
最大基數:
1比1,1對多,多對多的,許多爲1
最小基數:
可選爲Mandatory,可選到可選,強制到可選,強制性至強制
對於你的問題,'數據庫設計中的選擇性有什麼用處?': 它在以下場景中變得非常有用。
當您使用1對1關係設計2個表時,您會困惑於決定在哪裏(在哪個表中)擁有外鍵。如果你有一個表的選項1和另一個表的選項爲0,那麼很容易判斷它。外鍵應該存在於前者中。還有許多其他用途。
希望它有幫助。
- 1. phpMyAdmin - Cardinality N,N
- 2. DB2中的錯誤(CARDINALITY)
- 3. 這對函數floor()/ ceil()和min()/ max()之間有什麼區別?
- 4. $ min/$ max和$ lte/$ gt之間有什麼區別?
- 5. GAE:<min-pending-latency>和<max-pending-latency>之間有什麼區別?
- 6. 爲什麼kCIAttribute(Max | Min)和kCIAttributeSlider(Max | Min)有時會有不同的值
- 7. 「select max」和「select .. where column = max」有什麼區別?
- 8. 「object-fit:contains」和「max-width:100%; max-height:100%」有什麼區別?
- 9. Rand_Max *(max-min)+ min <<那是什麼?
- 10. @Max和@DecimalMax(以及@Min和@DecimalMin)之間的區別
- 11. jquery-1.3.2-vsdoc.js和jquery-1.3.2.min-vsdoc.js有什麼區別
- 12. max()和min()python
- 13. Min和Max在MySQL
- 14. PostgreSQL +表分區:低效max()和min()
- 15. CSS fit-content和max-content有什麼區別?
- 16. 有什麼區別`和$(Bash中有什麼區別?
- 17. SQL MIN(),MAX()和AVG
- 18. 有什麼區別? :和||
- 19. &&和||有什麼區別?
- 20. 「/」和「/ *」有什麼區別?
- 21. 有什麼區別:。!和:r!?
- 22. ==和===有什麼區別?
- 23. Appender和〜有什麼區別?
- 24. $ @和$ *有什麼區別?
- 25. is和=有什麼區別?
- 26. #.00和#。##有什麼區別?
- 27. `==`和`is`有什麼區別?
- 28. '=='和'==='有什麼區別?
- 29. /和/#/有什麼區別?
- 30. | 0和~~有什麼區別?
整潔而簡單,這樣的例子很容易擊敗理論,長篇文章在獲得基本把握。 – Onewildgamer 2016-07-20 07:02:57