【问题标题】:MS Access Relationships and Linking DataMS 访问关系和链接数据
【发布时间】:2017-08-14 06:58:30
【问题描述】:

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

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

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

也许有更好的方法来存储数据,或者 MS Access 中的 SQL 可以做到这一点?但我对 SQL 比 Access 更无能。

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

【问题讨论】:

  • 在“开始使用 Microsoft Access”、“SQL 简介”和类似内容中查找一些教程。有很多东西可供浏览。

标签: database ms-access database-design relationship


【解决方案1】:

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

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

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

你的程序集看起来像这样:

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

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

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

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

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

【讨论】:

  • 是否可以在无需为装配中所需的每种原材料创建新记录的情况下进行链接?对于多个复杂的装配体(一些具有 20 多种原材料),这意味着仅一个装配体就有 20 多个记录,从而非常快速地生成一个非常大的数据库。索引/速度可能会出现问题?
  • 可以,但不推荐。每个原材料的记录非常非常小(只有 2 个数字,如果您想添加主键,则为 3 个,但您可以使用两列的唯一复合索引,无需另一个标识符)。这意味着大小和索引真的不是问题。正如问题中所说,这也是一种非常常见的技术,因此数据库为此进行了优化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多