2011-02-24 164 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介绍我的答案,为什么是这样的,有什么表示, 和这是什么。

相关问题