我对Access很新。
我有一个需要规范化的数据库表。我有一些关于一个人的信息。这些人有权授权访问我们工作现场的区域。每个人可以多次被授权管理不同的区域,当然可以授权不同的人管理不同的区域。我第一次尝试将授权和区域包括在一起,但我意识到我真的在重复这些数据。做了一些研究后,我认为最好的方法是创建4个表
tblPerson,tblPermission,tblArea,tblArea_Permission
tblArea_Permission是tblPermission和tblArea之间多对多关系的连接表(这是我刚学到的东西)。我似乎在关系选项卡上设置了表关系。我还使用查询将记录添加到连接表。当我尝试执行此操作时,使用从表中获取记录的查询,我得到“您无法添加或更改记录,因为表XXX中需要相关记录。”这似乎是不可能的。
我决定我可能会使用DB而不强制执行参照完整性并将其取消并使用组合的主键来存储两个记录,因为每个拥有权限的人都只能控制一个区域中的一个区域。这似乎有效,但后来我注意到记录会随机变化。我认为数据库必须是腐败的。数据库的某些部分似乎工作正常,所以我开始使用新数据库并导入表和一个表单,然后开始重建新表,如上所述。我得到了同样的错误。
非常感谢任何帮助。我已经阅读了一些不同的书籍,并使用谷歌,但没有解决这个问题。
答案 0 :(得分:1)
如果某人有权管理某个区域,则需要一个people_area表:
PersonID ) Primary key
AreaID )
显示此人可以管理的区域。我不确定权限表的来源。
您将无法将记录添加到person_areas表,除非您在区域表中有ID,而在人员表中有ID。如果缺少其中任何一个ID,您将收到上述错误。
如果您需要有关数据库设计的更多相关评论,则需要发布模式。