0

我想知道我的数据库结构应该是什么以及如何。我很困惑我应该如何工作。

它基本上是针对汽车设计的。

要求: 1) 有许多Assembly。2)在一个特定的装配中有很多零件。3) 在特定零件中可以有材料、工艺、紧固件、工装表。它描述了零件的制造方式和制造方式。4) 材料、工艺、紧固件、工具所有这些都有各自不同的属性。

这是一个显示一些关系的电子表格。

在此处输入图像描述

我想知道我的数据库结构应该是什么。

我打算使用 VB.NET 和 Microsoft Access 作为数据库。我应该将我的数据库更改为 SQL 还是其他?

4

2 回答 2

5

让我们以关系格式重述需求,看看是否有帮助。

  • 一辆车包含一个或多个组件。

  • 一个程序集包含一个或多个零件。

  • 一个程序集可用于一辆或多辆汽车。

  • 一个零件包含一种或多种材料。

  • 一个部分包含一个或多个进程。

  • 一个零件包含一个或多个紧固件。

  • 一个零件包含一个或多个工具。

  • 一个零件可以在一个或多个装配体中使用。

  • 一种材料可以用在一个或多个零件中。

  • 一个流程可以在一个且仅一个部分中使用。

  • 紧固件可用于一个或多个部分。

  • 工具可用于一个或多个零件。

现在,看看能不能画出满足这些约束的实体关系图。

你所拥有的是许多多对多的关系。我会画一个,希望你能弄清楚其余的。

Car
--------
Car ID
Owner Name
...

Assembly
--------
Assembly ID
Assembly Name
...

现在,我们知道一辆车有一个或多个组件。我们还知道,一个装配体可以用于不止一辆汽车。

我们需要的是另一个表来将这两个表绑定在一起。

 Car_Assembly
 -----------
 Car_Assembly ID
 Car ID
 Assembly ID
 Service Date
 ...

该表使我们能够满足 Cars 和 Assemblies 之间的多对多关系。

从这里,您应该能够找出数据库中的其他多对多关系。

编辑添加:Microsoft Access 是一个关系数据库。还有其他关系数据库,如 MySQL、DB2 和 Oracle。SQL 是用于与关系数据库通信的语言。

于 2013-01-29T16:34:49.787 回答
2

如果不知道所有细节,比如什么材料、工艺等,很难确定什么是最好的,但这里有一个选择:

您将有一个装配表,其中将包含每个装配的 ID 和一个用于跟踪 Parts 表中的 Part_ID 的列。您将拥有一个零件表,其中每个零件都有自己的唯一 ID。仅使用零件信息(如序列号、描述等)创建零件表,并对材料、工艺、工具等执行相同操作。然后您可以创建表将它们链接在一起。因此,您将拥有一个包含 part_id 和 material_id 的表。这样,一个零件可以与许多材料相关联,而不止一个零件可以与同一材料相关联。对于其他关系(零件到流程)、(零件到工具)等也可以这样做。

您不想将装配 ID 存储在零件表中,因为一个零件可能是多个不同装配的一部分。更好的选择是让装配表包含唯一的 ID,可能还有名称和描述信息,然后让另一个表跟踪哪些部件进入装配。

因此,将其分解:(*已编辑以反映多对多关系)

Assembly         Parts              Material          Parts_Materials   etc
--------         -----              --------          -------           -----
ID       (PK)    Parts_ID (PK)      Material_ID (PK)  Part_ID
Parts_ID (FK)    Attribute1         Attribute1        Material_ID
                 Attribute2         Attribute2        
                 ...               ... 

就 db 而言,您可能会发现 Access 易于使用并且一开始会理解您的想法,但最终会希望转换为 SQL 数据库。

于 2013-01-29T16:26:19.317 回答