在Access中的一个数据库字段中存储多个值(听我说)

时间:2014-12-09 11:33:22

标签: database ms-access

所以我对此进行了广泛的搜索,我似乎无法找到一个真正适用于我的情况的好解决方案。

我有一个表格中的项目列表,然后是人员列表。我想将多个人分配到一个项目。似乎很常见。显然,我不能在每个人的项目表上创建多个列,因为人们会经常更改。

我需要在一个连续的项目列表中快速显示这些信息(最终方式是多选组合框,因为列表框太高,但它们不存在于可怕的查找字段之外)

我可以想到两种方式: - 将逗号分隔的多个员工ID存储在我的项目表的一个字段中(我知道这违反了良好的数据库设计)。需要一些代码来存储和检索数据。 - 为分配给项目的员工(ID,ProjectID,EmployeeID)提供单独的表。项目表与此新表之间的一对多关系。员工表与此新表之间的一对多关系。如果项目分配了3名员工,则会在此表中存储3条记录。以这种方式连接两个表似乎有点奇怪,并且还需要代码来存储和检索到像上面提到的那样的控件。

有没有人知道是否有更好的方法(包括以简单的控制方式显示)或者您通常如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

解决这个问题的常用方法是使用连接表。这就是您所描述的具有单独表格的地方,可能称为EmployeeProject(PK),EmployeeProjectID(FK)和EmployeeID(FK)。

通过这种方式,您可以建立多对多关系模型,其中每个项目可以包含许多员工,每个员工都可以参与许多项目。实际上,将信息重新拉回到一起以显示所需的SQL等并不是那么困难。

我绝对不会存储以逗号分隔的值,因为当您想要显示或操作数据时,这会变得非常复杂。

这里有一个很好的指南:http://en.tekstenuitleg.net/articles/software/create-a-many-to-many-relationship-in-access但是如果你google"很多很多联结表"或类似的,有数千页关于实施的文章/文章。