0

我需要帮助来选择正确的数据库设计。我们有多个数据库模式:

  • 图片架构
  • 富模式
  • 条形图
  • ...

picture schema包含有关上传图片的表,其中根表picture的 id 为 uuid 类型。

foo并且barschemas 包含主表foo,并且bar它们的 id 类型也为 uuid。这些表的每条记录都与图片具有基数M:N

由于架构不同,不能有外键。那么连接表的正确设计是什么?每个模式 (foobar) 是否应该包含带有 picture_id 的连接表,如下所示:

在 foo 模式中:

| foo_id (uuid) | picture_id (uuid) |

在酒吧模式中:

| bar_id (uuid) | picture_id (uuid) |

或者我应该只在图片模式中创建一个连接表,这要归功于这样的 uuid 类型:

|picture_id (uuid) | entity_id (uuid) |

entity_id 将是 foo 或 bar 的 id - 没关系,因为 uuid 始终是唯一的,对吧?你怎么看?您可以考虑每个模式用于不同的微服务。谢谢你的建议。

4

1 回答 1

0

在不同模式的表之间有外键绝对没有问题。只需使用架构限定表名:

ALTER TABLE foo.foo
   ADD FOREIGN KEY (x) REFERENCES bar.bar(y);

您可以在任一模式中放置联结表;我个人认为,在哪里并不重要。如果您对此很挑剔,您可以创建一个crossref包含此类联结表的额外模式。

于 2019-11-29T20:46:22.023 回答