MS Access中的组合字段主键?

时间:2012-10-16 16:27:57

标签: ms-access

我正在寻找创建一个数据库系统,以帮助保持我正在组织的项目。我的目标是为我所做的每个项目创建一个表格,从中我可以找到我处理过的人以及我为该项目所做的工作。

我看到的方式是项目可以包含多个内容,并且内容可以由多个客户端提交,但是一个客户端不会被重新编写为只处理一个项目。

我现在将包括我提议的桌面设计图片,因为事情可能会变得复杂。

proposed tables for database

在MS Access中,我能够打开项目表,单击+以查看谁在该项目上工作(客户表),然后单击另一个+以查看每个用户提交的工作(内容表)。例如

Projects Table: id 1, project #1, client #1
    + Clients Table: id 1, client #1, user #1
            + Content Table id 1, Project #1, Logo Design, Client #1
                            id 2, Project #1, Create Website, Client #1
      Clients Table: id 2, client #2, user #2
                     id 3, client #3, user #3

当我去添加与第二个客户关联的第三个项目时,它告诉我有数据重复,或者沿着这些线路的东西。

我觉得解决方法是在项目表中将项目名称和客户端名称链接在一起,这样如果我可以有2个或更多客户端与一个项目相关联但是阻止将客户端分配给同一个项目两次。它还应该允许我将一个客户端分配给多个项目。

只要没有相同项目名称和客户名称的实例,它就应该接受数据

所以我的问题是,我的解决方案是正确的吗?如果是的话,我该怎样侮辱呢? 我是否以正确的方式处理事情?

我希望我输入的内容会对某人产生某种意义,并且有人可以向我提供一些帮助/建议。

干杯 本

1 个答案:

答案 0 :(得分:1)

听起来你正在描述项目和客户之间的多对多关系。在这种情况下,标准方法是为项目提供一个表,为客户提供另一个表,然后是一个包含每个项目/客户组合的配对的联结表。

在联结表中的项目加客户端上添加唯一约束(索引),以便它只接受同一项目/客户端对的一行。您可以使用复合主键来满足唯一约束。