gpt4 book ai didi

sql - 与多个表之一的一对一关系

转载 作者:行者123 更新时间:2023-12-04 06:29:11 27 4
gpt4 key购买 nike

好的,我希望我能弄清楚我的问题是什么:
我有一个包含 5 个表的数据库。我们称它们为 A 和 B、V_1、V_2 和 V_3。 A 和 B 表示要完成的事情的列表。这些操作在 V_i 表中进行了描述。现在,A 代表某种必须用某种类型的项目完成的模板。另一方面,如果 A 描述了抽象项,B 描述了必须用具体实例完成(或已经完成)的事情。所以在 OOP 术语中,人们可能会说 A 代表一个类,B 代表 A 的一个实例. 每当向表 B 中插入某些内容时,都会复制表 A 中的相关数据,以便可以针对该特定项目对其进行修改,而不会影响 A。

好的,这里是实际问题:如何正确建模?我主要关心的是 V_i 中的每条记录都不能同时链接到 A 和 B。它必须与 A 或 B 之间是 1 对 1 的关系。此外,V_i 和 V_j 不能链接到 A 或 B 中的同一条记录B. 我不知道如何正确地做到这一点。当前的结构如下所示:

A 和 B 有一个称为 ID 的 PK。每个 V_i 还有一个称为 ID 的 PK 和两个引用 A 或 B 的 FK,我们称它们为 A_ID 和 B_ID。现在,当前实现确保 A_ID 或 B_ID 为 NULL,但不能同时为两者。但是,我想知道是否有更好的方法来做到这一点。此外,存在多个 V_i 可以引用 A 或 B 中相同条目的问题。

所以,我希望我的问题很清楚。有没有办法用关系数据库正确建模而不依赖外部代码来强制执行约束?感谢您提前提供意见。

此致
大卫

最佳答案

在关系理论中,一对一的关系通常被转换为物理模型中的单个表。这个单个表将包含来自两个表的行,您将使用检查约束来确定行的类型。这是迄今为止获得可靠的一对一关系的最简单方法。

关于sql - 与多个表之一的一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5648699/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com