MS Access 中三个表之间的关系
Relationship between three tables in MS Access
基本上这些是我的表格:
当我向表 3 添加记录时,我希望 Access 在数据库级别检查要添加的记录 (D,C,A) 的 (C,A) 对是否有效一种方法是在 Table2 中查找其对应的 B 属性并确保生成的 (B,A) 对是有效的(即存在于 Table1 中)。但是我现在一无所知,不知道如何在不破坏我数据库中的 3NF 的情况下在 Access 中建立这种关系。
当然这可以在前端完成,但我更喜欢数据库级别的解决方案,因为我确信我可以通过关系强制进行完整性检查。
编辑:
如果可能有帮助,我将添加一些有关功能依赖性的详细信息。如前所述,可以安全地假设这些表已经在 3NF 中。唯一的函数依赖(当然传递性导致的依赖除外)是:
D,C -> A
C -> B
理论上,您可以使用包含 Table1 和 Table2 的视图/查询来完成。
由于此查询仅用于数据完整性(而不是存储数据),因此您不会破坏您的 3NF 模型。
遗憾的是,Access 无法在查询中创建具有引用完整性的关系,而只能创建 "normal relationship"。有了它,您可以在不发出警告的情况下删除 Table1 中的记录,即使它破坏了引用完整性。
基本上这些是我的表格:
当我向表 3 添加记录时,我希望 Access 在数据库级别检查要添加的记录 (D,C,A) 的 (C,A) 对是否有效一种方法是在 Table2 中查找其对应的 B 属性并确保生成的 (B,A) 对是有效的(即存在于 Table1 中)。但是我现在一无所知,不知道如何在不破坏我数据库中的 3NF 的情况下在 Access 中建立这种关系。
当然这可以在前端完成,但我更喜欢数据库级别的解决方案,因为我确信我可以通过关系强制进行完整性检查。
编辑:
如果可能有帮助,我将添加一些有关功能依赖性的详细信息。如前所述,可以安全地假设这些表已经在 3NF 中。唯一的函数依赖(当然传递性导致的依赖除外)是:
D,C -> A
C -> B
理论上,您可以使用包含 Table1 和 Table2 的视图/查询来完成。 由于此查询仅用于数据完整性(而不是存储数据),因此您不会破坏您的 3NF 模型。
遗憾的是,Access 无法在查询中创建具有引用完整性的关系,而只能创建 "normal relationship"。有了它,您可以在不发出警告的情况下删除 Table1 中的记录,即使它破坏了引用完整性。