Sql 不同模式下M:N关系的正确数据库模型

Sql 不同模式下M:N关系的正确数据库模型,sql,postgresql,database-design,microservices,Sql,Postgresql,Database Design,Microservices,我需要帮助选择正确的数据库设计。我们有多个数据库模式: 图片模式 foo模式 条形图 picture schema包含有关上载图片的表,其中根表picture具有uuid类型的id foo和bar架构包含主表foo和bar,它们的id类型也为uuid。这些表的每条记录都具有基数pictureM:N 由于架构不同,因此不能有外键。那么,连接表的正确设计是什么呢?每个模式(foo和bar)是否包含具有picture\u id的连接表,如下所示: |picture_id (uuid) | ent

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

  • 图片模式
  • foo模式
  • 条形图
picture schema
包含有关上载图片的表,其中根表
picture
具有uuid类型的id

foo
bar
架构包含主表
foo
bar
,它们的id类型也为uuid。这些表的每条记录都具有基数picture
M:N

由于架构不同,因此不能有外键。那么,连接表的正确设计是什么呢?每个模式(
foo
bar
)是否包含具有picture\u id的连接表,如下所示:

|picture_id (uuid) | entity_id (uuid) |
在foo模式中:

| foo_id (uuid) | picture_id (uuid) |
在条形图中:

| bar_id (uuid) | picture_id (uuid) |
或者,由于uuid类型,我是否应该在图片模式中只创建一个连接表,如下所示:

|picture_id (uuid) | entity_id (uuid) |

实体id将是foo或bar的id-这并不重要,因为uuid总是唯一的,对吗?你怎么认为?可以考虑每个模式在不同的微服务中使用。谢谢您的建议。

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

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

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

谢谢,但我仍然需要解决如何放置连接表哦,我明白了。我已经在回答中补充了我的意见。