MS访问关系和链接数据

问题描述:

我有几个原材料,通过它们的零件号(唯一)存储在一个表中(其他字段包括描述,单位,数量,购买日期等)。一个程序集(存储在单独的表中)需要几种这些原材料才能构建它。这些原材料不是任何特定装配的专有产品 - 可能有多种不同的装配使用相同的原材料。MS访问关系和链接数据

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

我对有限的关系的理解告诉我,如果没有一个普通的主键,这些关联是不可能的,即使有一个,我也不会看到如何将多个原材料链接到一个程序集。考虑到用户随着时间的推移,将新的原材料和新的组件添加到这两个表中,这增加了复杂性,因为我对MS Access的理解有限,我不确定可以实现。

也许有更好的方式来存储数据,或者MS Access中的SQL可以实现这一点?但是,我比SQL更无知SQL。

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

+0

查看“从Microsoft Access开始”,“SQL入门”等类似的一些教程。有很多可以找到浏览。 – Gustav

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

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

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

而且你的组件是这个样子:

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

然后,要创建一个多一对多的关系,你需要第三张表(第AssemblyIDMaterialID列):

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

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

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

+0

是否可以链接,而不必为装配中所需的每种原材料创建新记录?对于多个复杂装配(有些具有20多种原材料),这意味着只有一个装配需要20多个记录,因此非常快速地生成一个非常大的数据库。这很可能会存在索引/速度问题? –

+0

这是可能的,但不建议。每个原材料的记录确实非常小(只有2个数字,如果您想添加主键,则为3个,但您可以使用两个列的唯一复合索引,而不需要另一个标识符)。这意味着尺寸和索引真的不是问题。如问题所述,这也是一种非常常见的技术,因此数据库针对此进行了优化。 –