【问题标题】:You cannot add or change a record because a related record is required in table您无法添加或更改记录,因为表中需要相关记录
【发布时间】:2012-06-07 01:39:25
【问题描述】:

我对 Access 还很陌生。

我有一个需要规范化的数据库表。我有一些关于一个人的信息。这些人被授权访问我们工作场所的区域。每个人可能被授权多次管理不同的区域,当然也可以授权不同的人管理不同的区域。我的第一次尝试是将授权和区域包括在一起,但我意识到我确实是在以这种方式重复数据。在做了一些研究后,我决定最好的方法是创建 4 个表

tblPerson, tblPermission, tblArea, tblArea_Permission

tblArea_Permission 是一个连接表,用于 tblPermission 和 tblArea 之间的多对多关系(这是我刚刚了解到的)。我似乎在关系选项卡上设置了表关系。我还使用查询将记录添加到连接表。当我尝试执行此操作时,使用从表中获取记录的查询,我得到“您无法添加或更改记录,因为表 XXX 中需要相关记录。”这似乎是不可能的。

我决定我可能会接受不强制执行引用完整性的数据库并将其拿走并为两条记录使用组合主键,因为每个有权限的人都将仅通过一个组合控制一个区域。这似乎可行,但后来我注意到记录会随机更改。我决定数据库一定是损坏的。部分数据库似乎工作正常,所以我从一个新数据库开始并导入表和一个表单,然后开始如上所述重建新表。我遇到了同样的错误。

任何帮助将不胜感激。我已经阅读了一些不同的书籍,并使用了谷歌,但没有解决这个问题。

【问题讨论】:

    标签: ms-access-2010


    【解决方案1】:

    如果一个人被授权管理一个区域,你需要一个persons_area表:

    PersonID ) Primary key
    AreaID   )
    

    这表明该人可以管理哪些领域。我不确定权限表的来源。

    然后您将无法向 person_areas 表添加记录,除非您在 area 表中有一个 ID,并且在 people 表中有一个 ID。如果缺少其中任何一个 ID,您将收到上述错误。

    如果您想在数据库设计中获得更多相关的 cmets,则需要发布架构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多