关系模式:(0,1)到(0,1)与属性的关系 - 创建一个新表?

时间:2017-03-15 01:17:39

标签: mysql sql database relational-database

我的理解是,当基数为1比1时, 然后,我们不是创建关系表,而是将一个实体的主键作为外键添加到实体表中。

但是当它是(0,1)到(0,1)关系时呢?

即。当员工可以分配到单个外部工作区时,可以将不超过1个人分配到该工作区。这些员工将有分配的计划开始和结束日期。

所以员工实体,工作空间实体和他们之间的指定关系。 我打算在'assigned'关系中创建两个属性 - start_date和end_date。

1)如果我不创建新表,那么当员工未被分配到任何工作区时会发生什么?我只是将外键设置为NULL吗?

2)此外,我会将关系属性添加到人员实体表吗?

我认为简单地制作一个单独的表会更容易......

非常感谢提前。

2 个答案:

答案 0 :(得分:2)

如何排列表格取决于您使用的建模方法。可以有许多表示相同应用情况的关系模式。 (在Chen ER建模中,这实际上是应该调用的唯一方法" ER",实体表没有FK到其他实体表。)对于0或1到0或者-1例明显&直接设计是一个单独的表,具有适当的对和每个实体唯一。或者您可以将其中一个实体表中的可为空的唯一FK放到另一个实体表中;实体的实体表行中的NULL表示在前一表所表示的关系中没有其他实体与它配对。请注意,后一种设计可以描述为将前一种表嵌入到一个实体表中。后一种设计是不对称的。通常不太自然,但你可能会这样做,因为通常的原因是不使用明显的&简洁的设计,这是工程性能的提升。

答案 1 :(得分:1)

在我看来,你将不得不创建另一个表workspace_allocation,其中allocationID将是主键,staff_id将是外键引用人员,workspace_id将是外键引用工作空间,start_date,end_date。

通过这种方式,员工和工作区之间可以有0-1的关系。

听起来怎么样? 请留下评论。

谢谢