【问题标题】:Right database model for M:N relationship with different schemas具有不同模式的 M:N 关系的正确数据库模型
【发布时间】:2020-03-25 08:49:38
【问题描述】:

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

  • 图片架构
  • foo 架构
  • 条形图
  • ...

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

foobar 模式包含主表 foobar,它们的 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 总是唯一的,对吧?你怎么看?您可以考虑每个模式用于不同的微服务。谢谢你的建议。

【问题讨论】:

    标签: sql postgresql database-design microservices


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,但我仍然需要解决加入表的位置
    • 哦,我明白了。我已经在答案中添加了我的观点。
    猜你喜欢
    • 2021-09-16
    • 1970-01-01
    • 2011-10-28
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多