【发布时间】:2016-02-25 14:09:36
【问题描述】:
在一个 SaS 项目(软件即服务)上,想象一下这个场景:
使用应用程序的客户的主表是tenant,主键是id列。
我有 3 个表格来管理租户的数据,还有一个特定的表格来管理职位空缺的功能:
Period、Unity 和 Shift 所有具有 PK id 和 FK tenant_id的人>.
我的表vacancy有3个外键
- period_id - 对“期间”表的引用
- unity_id - 对“Unity”表的引用
- shift_id - 对“Shift”表的引用
现在的问题:
我需要保证所有这 3 个 FK 都引用了属于租户表上同一客户的 Period、Unity 和 Shift 表上的行。
我的解释清楚了吗?
也许我可以创建一个触发器来处理这些验证。我真的不知道 SGBD 是否已经有相关资源。
有关信息:我正在使用带有 Eloquent ORM 的 SQL Server。但是,如果真的存在解决方案,那么最好的解决方案就是在任何地方都可以工作。
【问题讨论】:
-
在这种情况下,租户表的 id 列只有一个外键。如果租户表没有单个 id 列,则创建一个。
-
您可以选择更改表结构还是必须在此处给出的表结构内工作?
-
将
vacancy表扩展为customer_id,然后将period、unity和shirt这三个表更改为包含它们的旧ID 和customer_id的复合PK并将三个表PK中的一个FK添加到vacancy的一部分PK中。 -
Shadow - 问题比这复杂一点。 HLGEM - 是的,我需要更改表结构。 Smutje - 我将其他答案标记为已接受,因为它更容易理解。但你是对的。
-
@RicardoVigattiCoelho 从技术上讲,我的回答是评论,因此就 Stackoverflow 而言是不可接受的,所以没关系! :-)
标签: sql sql-server eloquent foreign-key-relationship