我确信我错过了一些东西,而且我有一些错误。
1:(0-1)(一到零或一)
1:1 (一对一)
1:(0-n)(一到零,一个或多个)
(0-m):( 0-n)(零,一或多到零,一个或多个)
m:n (多对多)
m:1 (多对一)
m:(0-1)(很多人为零或一人,即10人共用一间会议室)
约束关系: 我不确定这些(可能我刚刚发明了它们,哈哈):
1:max (一个指定的最大数量,即您的邮件帐户可能不超过1000封邮件)
1:min (一个指定的最小数量,即车辆必须至少有一个车轮)
1:min-max (一到指定的最小和最大数量之间)
x:y (x个实体到y个实体,即总是两个教师负责五个班级)
x:min , x:max , x:min-max
答案 0 :(得分:3)
根据ER
模型,有1:1
,1:N
和M:N
。这是您可以放入图表中的内容。
关系始终由相关实体定义。在ER
模型中,没有“双关系”,“过期关系”,“三元关系”等等。
一对实体是相关的还是不相关的,并且该关系始终是二进制的。这就是ER
模型的工作原理。
现在,假设A
和B
是相关的。这提出了两个问题:
A
与其他事情有关吗?
B
与其他内容有关吗?以下是答案矩阵:
1 2 Relationship
Yes Yes M:N
No Yes 1:N
Yes No N:1 (same as 1:N)
No No 1:1
这涵盖了所有可能性。
就业务逻辑而言,可以设想任何约束(大多数约束适合上述三种关系方案中的一种,并进行一些额外的检查)。
但是,仅ER
模型无法涵盖此内容。
答案 1 :(得分:3)
就数据库本身而言(因为这个问题是关于数据库设计的),实际上只有两种类型的关系:1:1
和1:0..1
。外键可以为空或不可为空。
如果算上反比关系,那么也有一对多(1:N
)。
当然,你可以用约束来实现不同类型的关系,但是可能性几乎是无限的;要知道你必须“思考”哪些,你必须知道域模型。
更新:我想也许有必要解释一下这些与你列出的其他更多UML式关系的匹配程度。在此列表中,1:N
表示RS实体与LS实体具有可空或不可空的外键/关联:
(0-m):( 0-n) - AKA M:N,这只是1:N和1:M的组合,后者反转,即(1:N) )(M:1)
m:n - 与上述相同,带有支票:M> = 1且N> = 1(非常罕见,难以实施)
m:1 - 与1:N相同,不可为空
m:(0-1) - 与1:N相同,可以为空
1:max - 与1:N相同,带检查:N <= max,不可为空
1:min - 与1:N相同,带检查:N&gt; = min,不可为空
1:min-max - 与1:N相同,带检查:N&gt; = min,N <= max,不可为空
x:y 与(1:N)(M:1)相同,带有检查:N = x且M = y,假设所有 N 与所有相关M (否则这不是一个有效的关系)
依此类推 - 我的观点是数据库只处理“基本”关系,而任何其他类型的关系只是这些关系加上约束的组合。
一旦你掌握了它,它实际上变得比在多重性上大惊小怪。只需弄清楚与什么有关,以及在哪个方向,并在以后需要时实施特定规则。
答案 2 :(得分:2)
从关系的角度来看,Object Role Modeling提供了丰富的概念和工具来提供帮助。你会发现有几十种,包括你列出的所有内容以及更多内容。这些工具比您可能怀疑的更强大,包括使用规则,触发器等生成数据库模式以强制执行约束的能力。
以下是维基百科文章中的插图。
如果您想深入探讨这个问题,here's a link可以帮助您从问题的角度出发。