1

我正在寻求创建一个数据库系统,以帮助我正在从事的项目保持井井有条。我的目标是为我所做的每个项目创建一个表格,从中我可以找到我与谁打交道以及我为该项目做了什么。

我的看法是,项目可以包含多条内容,并且内容可以由多个客户提交,但一个客户不限于只从事一个项目。

我现在会附上一张我提议的桌子设计的图片,因为事情可能会变得复杂。

建议的数据库表

在 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 个或更多客户与一个项目相关联,但防止将客户分配给同一个项目两次。它还应该允许我将一个客户分配给多个项目。

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

所以我的问题是,我的解决方案是正确的吗?如果是,我该如何实施?我是否以正确的方式做事?

我希望我输入的内容对某人有所帮助,并且有人可以为此提供一些帮助/建议。

干杯本

4

1 回答 1

1

听起来您正在描述项目和客户之间的多对多关系。在这种情况下,标准方法是有一个项目表,另一个用于客户,然后是一个连接表,其中包含每个项目/客户组合的配对。

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

于 2012-10-16T17:07:27.200 回答