相关疑难解决方法(0)

互斥的多对多关系

我有一个containers可以与多个表建立多对多关系的表,假设它们是plantsanimalsbacteria。每个容器可以包含任意数量的植物、动物或细菌,并且每个植物、动物或细菌可以在任意数量的容器中。

到目前为止,这非常简单,但我遇到的问题是每个容器应该只包含相同类型的元素。例如,同时包含植物和动物的混合容器应该是数据库中的约束违规。

我的原始架构如下:

containers
----------
id
...
...


containers_plants
-----------------
container_id
plant_id


containers_animals
------------------
container_id
animal_id


containers_bacteria
-------------------
container_id
bacterium_id
Run Code Online (Sandbox Code Playgroud)

但是对于这个模式,我无法想出如何实现容器应该是同构的约束。

有没有办法通过参照完整性来实现这一点,并在数据库级别确保容器是同类的?

我为此使用 Postgres 9.6。

postgresql database-design constraint many-to-many

9
推荐指数
2
解决办法
1891
查看次数