MS Access关系和链接数据

时间:2017-08-14 06:58:31

标签: database ms-access database-design relationship

我有几种原材料,按其零件编号(唯一)存储在一个表格中(其他字段包括描述,单位,数量,购买日期等)。装配(存储在单独的表中)需要其中几种原材料为了构建它。这些原材料不是任何特定组件所独有的 - 可能有多个不同的组件使用相同的原材料。

我想过创建一个单独的表,其中有一个用于装配的字段和一个用于原材料的字段 - 允许它们被链接。但是,这意味着对于一个具有例如三种原材料的程序集,将会重复使用程序集字段创建三条记录(不理想,因为它会导致数据库非常大)。

我对关系的有限理解告诉我,如果没有共同的主键,就无法将它们联系起来,即使有一个主键,我也无法看到如何将多个原材料链接到一个部件。鉴于用户会随着时间的推移,将新的原材料和新的程序集添加到两个表中,这增加了复杂性,因为我对MS Access的理解有限,我不确定是否可以完成。

也许有更好的方法来存储数据,或者MS Access中的SQL可以实现这一目标吗?但我对SQL比对Access更无能为力。

非常感谢任何帮助和建议。

1 个答案:

答案 0 :(得分:1)

这是非常可能的,而且之前已经做了很多次。

想象一下你的原材料表看起来像这样:

+---+--------+
| 1 | Metal  |
+---+--------+
| 2 | Wood   |
+---+--------+
| 3 | Rubber |
+---+--------+

你的装配看起来像这样:

+---+-------+
| 1 | Bike  |
+---+-------+
| 2 | Table |
+---+-------+

然后,要创建多对多关系,您需要第三个表格,将两者结合起来(列AssemblyIDMaterialID):

+---+---+
| 1 | 1 |
+---+---+
| 1 | 3 |
+---+---+
| 2 | 2 |
+---+---+

如您所见,自行车需要橡胶和金属,桌子只需要木材。

在Access中有许多关于多对多关系的详细指南。但核心概念是你需要一个额外的表来将两者联系起来。