我很难理解尝试设计数据库时最大和最小基数之间的区别。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