参照完整性是可交换的(即,它是否依赖于方向)?

Is referential integrity commutative (i.e., is it direction-dependent)?

我在 MS Access 2019 中遇到了一些让我感到惊讶的行为,我将其归结为以下几点:

我有两个 table 有不同数量的记录:

我需要在它们之间建立一个外部连接,其中包括来自 table [测试 1] 的所有记录,并且仅包含连接字段相等的 [测试 2] 的那些记录,我想referential integrity 这样我就不会不小心删除或修改一侧的连接字段。

当我打开包含两个 table 的关系 window 并将字段 [ID] 从 table [测试 1] 拖到 [测试 2] 时,连接属性我需要作为选项 2 出现:

当我尝试创建连接时,我收到一条错误消息,指出 table [测试 2] 中的数据违反了参照完整性:

但是,如果我通过将字段 [ID] 从 table [测试 2] 拖到 [测试 1] 来定义相反方向的连接,结果是不同的。首先,我需要的连接属性显示为选项 3:

我以前见过这种区别,没问题。但令人惊讶的是,当我尝试创建连接时,现在它起作用了:

所以我建立参照完整性的能力似乎取决于我拖动字段以设置连接的方向。 (这是否使连接从左到右?)我不记得之前看到过任何关于参照完整性的方向依赖(或者可能称为非交换性)的内容。参照完整性的目的是防止我删除或修改一个 table 中的连接字段而没有在另一个中进行相应的更改。 objective 如何取决于我拖动字段以设置连接的方向?

简答。不,参照完整性不可交换。

X 列引用 Y 列与 Y 列引用 X 列不同。

深入研究。外键的概念是关系数据模型的基础。没有它,该模型的表现力将受到如此大的阻碍,以至于它永远不会像大约 50 年前那样流行起来。外键可以是有或没有外键约束的外键。不过,由于您在问题中提到的原因,外键约束通常会有帮助。

你是对的,从 X 拖动到 Y 不会产生与将 Y 拖动到 X 相同的约束。

外连接几乎总是产生引用端的所有结果,并且只产生引用端的有效结果。在不同的情况下,外连接和内连接都可能有用。这就是 Access 为您提供三个选项的原因。