![使用链接表强制引用完整性](https://linux22.com/image/1437055/%E4%BD%BF%E7%94%A8%E9%93%BE%E6%8E%A5%E8%A1%A8%E5%BC%BA%E5%88%B6%E5%BC%95%E7%94%A8%E5%AE%8C%E6%95%B4%E6%80%A7.png)
我目前正在构建和维护一些 MS Access 数据库,旨在取代我工作中的纸质文档系统。作为这项工作的一部分,我使用简单的用户名/密码组合代替文档上的签名,并希望在所有文档之间保持用户名/密码组合的通用性,为此,我创建了一个单独的数据库,其中包含只是所有不同文档所共有的用户信息。
但是对于每个文档数据库,我希望有一个“权限”表,其中包含一组“是/否”字段,定义用户对该特定文档拥有哪些权限,显然我希望在权限表和用户表之间保持引用完整性。所有相关数据库都存储在共享驱动器上。
起初我认为在 WhateverDoc.mdb 中我可以链接到 Users.mdb 中的 tblUsers 表,然后在 tblUsers 和 tblPermissions 的用户名字段之间创建一对一关系,但似乎当我与链接表创建关系时,我无法强制引用完整性。
有解决方法吗?我愿意接受涉及 VBA 的解决方案,但我想在这里提问,而不是在 StackOverflow 上提问,因为具体来说一个编程问题。
答案1
我目前正在使用的解决方案:
在 tblPermissions 的表设计中,选择用户字段,然后在字段选项的查找选项卡中设置以下选项。
Display Control: Combo Box
Row Source Type: Table/Query
Row Source: SELECT Username FROM tblUsers;
Limit To List: Yes
由于相应行源的“限制列表”选项设置为“是”,因此这可以防止 tblPermissions 中的“用户”字段包含 tblUsers 的“用户名”字段中不存在的值。
答案2
创建一个包含所有表格的后端数据库,并在该数据库上建立关系。然后将后端的所有表格链接到包含所有表单、查询和代码的前端数据库。