我需要考虑什么样的不同关系?

时间:2009-12-29 17:07:27

标签: database database-design entity-relationship

我确信我错过了一些东西,而且我有一些错误。

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

3 个答案:

答案 0 :(得分:3)

根据ER模型,有1:11:NM:N。这是您可以放入图表中的内容。

关系始终由相关实体定义。在ER模型中,没有“双关系”,“过期关系”,“三元关系”等等。

一对实体是相关的还是不相关的,并且该关系始终是二进制的。这就是ER模型的工作原理。

现在,假设AB是相关的。这提出了两个问题:

  1. 可能A与其他事情有关吗?
    • 可能B与其他内容有关吗?
  2. 以下是答案矩阵:

    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:11: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提供了丰富的概念和工具来提供帮助。你会发现有几十种,包括你列出的所有内容以及更多内容。这些工具比您可能怀疑的更强大,包括使用规则,触发器等生成数据库模式以强制执行约束的能力。

以下是维基百科文章中的插图。

https://upload.wikimedia.org/wikipedia/commons/0/08/Schema_for_Geologic_Surface.gif

如果您想深入探讨这个问题,here's a link可以帮助您从问题的角度出发。