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。这些表的每条记录都具有基数pictureM: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
,其中包含这样的连接表。谢谢,但我仍然需要解决如何放置连接表哦,我明白了。我已经在回答中补充了我的意见。