首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最大基数和最小基数之间的区别是什么?

最大基数和最小基数之间的区别是什么?
EN

Stack Overflow用户
提问于 2011-02-24 20:00:10
回答 6查看 45K关注 0票数 7

在尝试设计数据库时,我很难理解最大基数和最小基数之间的区别。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-02-24 20:04:11

记住,基数总是与另一个事物的关系。

最大基数(基数)始终为1或多。类A与包B有一个基数为1的关系,这意味着在包中最多只能出现一个类。相反的情况可能是一个包的最大基数为N,这意味着可以有N个类

最小基数(可选性)简单地表示“必需”。它总是0或1.0。0意味着0或更多,1或更多

有很多很好的文章可以解释这一点,包括一些解释如何属性"diagram"的文章。你可以搜索的另一件事是基数/可选性(OMG术语),它解释了同样的事情,可选性是"Min“基数是"Max",

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

Q:我可以看到在创建数据表之间的关系时如何使用最大基数。然而,我看不出最小基数如何应用于数据库设计。我遗漏了什么?

答:你注意到最大基数是关系的一个比最小基数更重要的特征,这是正确的。All minimum cardinality告诉您,为了使关系有意义,表必须具有的最小允许行数。例如,一支篮球队必须至少有五名球员,否则就不是篮球队。因此,玩家端的最小基数是5,团队端的最小基数是1。

人们可以争辩说,一个人不能成为一个球员,除非他在一个团队中,因此团队的最小基数是强制性的。同样,一个组织不能成为篮球队,除非它至少有五名球员。玩家的最小基数也是强制性的。人们也可以站在相反的方向上争论。当一名球员退出一支球队时,它是不是在招募替补球员之前就不再是一支球队了?它不能参与任何游戏,但它不再是一个团队了吗?这是一个例子,说明每个单独的情况都必须根据自己的条件进行评估。在这种特殊情况下,什么是真理?下一次出现类似情况时,由于情况不同,决定可能会有所不同。

票数 8
EN

Stack Overflow用户

发布于 2011-02-25 01:00:35

同意其他答案,这里有一个略微不同的观点。从可选性和多样性的角度来思考。举个例子:PersonAddress

可选性问题:是否每个Person都需要一个Address?如果是,那么关系是无条件的--这意味着最小基数是1。如果不是,那么最小基数是0。

多重性问题:任何给定的Person都可以有多个Address吗?如果不是,则最大基数是1。如果是这样,最大基数是>1。在大多数情况下,它是无界的,通常表示为N*

两者都很重要。非可选的关联使得代码变得更简单,因为在取消引用之前不需要测试是否存在:例如

代码语言:javascript
运行
复制
a=person.address()

而不是

代码语言:javascript
运行
复制
if (person.address !=null) {
  a=person.address()
}

地址就是一个很好的例子,说明了为什么多重性很重要。太多的商业应用程序假设每个人只有一个地址-所以当人们有度假屋的时候就无法应对了。

可以进一步限制基数,例如,一个汽车发动机有2到12个cyclinders。然而,这些限制通常不是很稳定(布加迪现在提供一个16缸发动机)。因此,重要的问题是可选性和多重性。

hth。

票数 3
EN

Stack Overflow用户

发布于 2011-02-24 20:12:41

让我们举个例子-

Students使用Class。在这里,StudentsClass都是实体。学校在特定的学期可能有学生注册,也可能没有。想象一下,一所学校在夏季学期提供课程,但没有学生有兴趣加入。因此,学生的基数可以是(0,N)。但是,如果一个Class正在进行意味着,它应该至少有一个学生注册。因此,它的基数应该是(1,N)。因此,您应该检查参与关系的实体是partial还是total,这决定了它在关系中的基数。

希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5104349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档