5

组织 ID 作为外键 组织 ID 作为主键

传奇:

  • PK(蓝色):主键
  • FK(绿色):外键
  • PFK(蓝色):同时主键和外键

如何模拟钻石状(如果术语正确)关系?最好用一个简化的例子来解释:

organization,itemtag实体。

我的目标是建模:

  1. 每一个tag都是独一无二的,属于一个单一的组织。
  2. 每一个item都是独一无二的,属于一个单一的组织。
  3. 项目有许多标签(使用 M2M 表连接)并且相关tag/item对必须属于同一组织。(即来自组织 A 的项目不能与来自组织 B 的标签配对)

我绘制了两个替代解决方案,但没有一个让我满意。

图1打破了第三个目标items并且作为主键tags本身是唯一的id,但是没有什么可以阻止插入item_tag属于不同组织的对。

图 2 没有中断,但弯曲了第一个和第二个目标organization_id作为主键和外键添加到表和item列引用。这可以防止来自不同组织的对。and列现在是不必要的复合主键的一部分,因为实际上单列代表 and 的唯一性。tagitem_tag.organization_idtag.iditem.ididitemtag

如何正确建模这些需求?

4

1 回答 1

6
于 2018-06-18T13:51:20.737 回答