如何建模Entity1 ---(1,1)---关系---(1,3)---实体2到一个表?

时间:2018-03-20 23:38:53

标签: entity-relationship entity-relationship-model

我想将给定的ER图与(min,max)符号转换为表,并且我不确定" trainieren" -relation的主键是什么。

如果关系R介于A和B之间并且:

  • 一个一个 - >主键是A或B的主键
  • 一个多个 - >主键是在关系中多次参与的实体的主键
  • 很多很多 - >主键是A和B的主键

我将(0,1)和(1,1)解释为一,而(1,3)和(1,*)一样多,因此 我的解决方案是(强文中的主键)trainieren:{[ Trainer.AkkrNr ,Teams.Land]}

enter image description here

1 个答案:

答案 0 :(得分:1)

通常,我们尝试仅使用一个或多个基数指标,因为这些指标很容易映射到表格结构。大多数数据建模器都会像放弃上限一样简化模型。

如果要强制执行该限制,可以通过以下几种方式实现它:

  • 使用您的结构和插入/更新触发器来计算给定团队拥有的培训师数量,如果超过3,则会抛出错误。
  • 您可以将位置列添加到trainieren的主键和约束以将其限制为值1,2和3.但是,这会强制排序不是概念模型的一部分
  • trainieren更改为(Teams.Land PK, Trainer1.AkkrNr, Trainer2.AkkrNr, Trainer3.AkkrNr)。 Trainer2和Trainer3需要可以为空,这种设计失去了每个培训师只属于一个团队的约束。你可以用触发器解决这个问题。呸。

由于没有理想的方法来实现关系基数的上限,大多数数据建模者将遵循与您相同的方法,并将其留给数据库客户端(通常是应用程序逻辑)来强制执行限制。