在尝试设计数据库时,我很难理解最大基数和最小基数之间的区别。
发布于 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。
人们可以争辩说,一个人不能成为一个球员,除非他在一个团队中,因此团队的最小基数是强制性的。同样,一个组织不能成为篮球队,除非它至少有五名球员。玩家的最小基数也是强制性的。人们也可以站在相反的方向上争论。当一名球员退出一支球队时,它是不是在招募替补球员之前就不再是一支球队了?它不能参与任何游戏,但它不再是一个团队了吗?这是一个例子,说明每个单独的情况都必须根据自己的条件进行评估。在这种特殊情况下,什么是真理?下一次出现类似情况时,由于情况不同,决定可能会有所不同。
发布于 2011-02-25 01:00:35
同意其他答案,这里有一个略微不同的观点。从可选性和多样性的角度来思考。举个例子:Person
有Address
。
可选性问题:是否每个Person
都需要一个Address
?如果是,那么关系是无条件的--这意味着最小基数是1。如果不是,那么最小基数是0。
多重性问题:任何给定的Person
都可以有多个Address
吗?如果不是,则最大基数是1。如果是这样,最大基数是>1。在大多数情况下,它是无界的,通常表示为N
或*
。
两者都很重要。非可选的关联使得代码变得更简单,因为在取消引用之前不需要测试是否存在:例如
a=person.address()
而不是
if (person.address !=null) {
a=person.address()
}
地址就是一个很好的例子,说明了为什么多重性很重要。太多的商业应用程序假设每个人只有一个地址-所以当人们有度假屋的时候就无法应对了。
可以进一步限制基数,例如,一个汽车发动机有2到12个cyclinders。然而,这些限制通常不是很稳定(布加迪现在提供一个16缸发动机)。因此,重要的问题是可选性和多重性。
hth。
发布于 2011-02-24 20:12:41
让我们举个例子-
Students
使用Class
。在这里,Students
和Class
都是实体。学校在特定的学期可能有学生注册,也可能没有。想象一下,一所学校在夏季学期提供课程,但没有学生有兴趣加入。因此,学生的基数可以是(0,N)。但是,如果一个Class
正在进行意味着,它应该至少有一个学生注册。因此,它的基数应该是(1,N)。因此,您应该检查参与关系的实体是partial还是total,这决定了它在关系中的基数。
希望能有所帮助。
https://stackoverflow.com/questions/5104349
复制相似问题