检查约束以强制执行参照完整性?

问题描述

我们可以使用检查约束来强制引用约束吗?假设我有一列包含 UUID;这个 UUID 可以引用表 A 或 B,具体取决于第二列的值。

------------------------------------------
|ID      | Type      | PK in Other Table |
------------------------------------------
|1       | Employee  |    500            |
------------------------------------------
|2       | Store     |    7000           |
------------------------------------------

所以记录#1 指向employee 表中的一条记录,#2 指向带有相应PK 的store 表中的一条记录。所以目标是强制基于“类型”的引用完整性。

解决方法

不是这个数据模型,不是。

您可以有单独的列,即 employee_idstore_id,对适当的表有外键约束和检查约束,确保只有特定 type 的正确列是进入。

根据您实际建模的内容,可能还有其他设置数据模型的方法。我有点难以将员工和商店视为某些更高级别类型的独立子类型。但是,如果您的实际用例是别的,那么拥有一个超类型表可能是有意义的,它是所有表都是其子级的实际父级。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...