所以我对此进行了广泛的搜索,我似乎无法找到一个真正适用于我的情况的好解决方案。
我有一个表格中的项目列表,然后是人员列表。我想将多个人分配到一个项目。似乎很常见。显然,我不能在每个人的项目表上创建多个列,因为人们会经常更改。
我需要在一个连续的项目列表中快速显示这些信息(最终方式是多选组合框,因为列表框太高,但它们不存在于可怕的查找字段之外)
我可以想到两种方式: - 将逗号分隔的多个员工ID存储在我的项目表的一个字段中(我知道这违反了良好的数据库设计)。需要一些代码来存储和检索数据。 - 为分配给项目的员工(ID,ProjectID,EmployeeID)提供单独的表。项目表与此新表之间的一对多关系。员工表与此新表之间的一对多关系。如果项目分配了3名员工,则会在此表中存储3条记录。以这种方式连接两个表似乎有点奇怪,并且还需要代码来存储和检索到像上面提到的那样的控件。
有没有人知道是否有更好的方法(包括以简单的控制方式显示)或者您通常如何解决这个问题?
答案 0 :(得分:2)
解决这个问题的常用方法是使用连接表。这就是您所描述的具有单独表格的地方,可能称为EmployeeProject
(PK),EmployeeProjectID
(FK)和EmployeeID
(FK)。
通过这种方式,您可以建立多对多关系模型,其中每个项目可以包含许多员工,每个员工都可以参与许多项目。实际上,将信息重新拉回到一起以显示所需的SQL等并不是那么困难。
我绝对不会存储以逗号分隔的值,因为当您想要显示或操作数据时,这会变得非常复杂。
这里有一个很好的指南:http://en.tekstenuitleg.net/articles/software/create-a-many-to-many-relationship-in-access但是如果你google"很多很多联结表"或类似的,有数千页关于实施的文章/文章。