【发布时间】:2020-04-29 23:26:55
【问题描述】:
我在 PostgreSQL 数据库中有四个表:
-
Company -
User(带有外键列company_id) -
Location(带有外键列company_id) -
UserLocations(关联表,外键列 user_id 和 location_id)
基本上:
- 一家公司有许多用户和位置
- 一个用户属于一个公司并且有很多位置
- 某个位置属于一家公司并拥有许多用户
我想知道数据库是否有办法限制 UserLocations 关联表中的条目,以使引用的用户和位置必须具有相同的 company_id 值。我不希望 A 公司的用户拥有 B 公司的位置。
我可以在我的应用程序层 (rails) 进行检查,但如果该选项存在,我有兴趣将其设为硬数据库级别约束。
【问题讨论】:
-
在现实世界中,一个位置可以有好几家公司,而一个用户可以有好几家公司。
标签: sql postgresql