这个数据库的结构应该是什么?

时间:2013-01-29 16:09:15

标签: sql database ms-access database-design relational-database

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

它主要用于汽车设计。

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

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

enter image description here

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

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

2 个答案:

答案 0 :(得分:5)

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

  • 汽车包含一个或多个装配体。

  • 装配包含一个或多个零件。

  • 装配件可用于一辆或多辆汽车。

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

  • 零件包含一个或多个流程。

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

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

  • 零件可用于一个或多个装配体。

  • 材料可以在一个或多个部件中使用。

  • 一个过程只能在一个部件中使用。

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

  • 工具可以在一个或多个部分中使用。

现在,看看你是否可以绘制满足这些约束条件的实体关系图。

你拥有的是很多很多关系。我会画出其中一个,希望你能弄明白其余部分。

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

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

现在,我们知道汽车有一个或多个装配体。我们也知道大会可以用在多辆汽车上。

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

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

这张表让我们能够满足汽车和装配体之间的多对多关系。

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

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

答案 1 :(得分:2)

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

您将拥有一个Assembly表,其中包含每个程序集的ID和一个用于跟踪Parts表中Part_ID的列。您将拥有一个零件表,每个零件都有自己的唯一ID。使用零件信息(如序列号,描述等)创建零件表,并对材料,工艺,工具等执行相同操作。然后,您可以创建表格以将这些链接在一起。所以你有一个表可以保存part_id和material_id。这样,一个部件可以与许多材料相关联,并且一个以上的部件可以与相同的材料相关联。对于其他关系也可以这样做(零件到工序),(零件到工具)等。

您不希望将Assembly ID存储在Parts表中,因为一个部件可能是多个不同部件的一部分。更好的选择是让Assembly表包含唯一的ID以及可能的名称和描述信息,然后让另一个表跟踪哪些部分进入程序集。

所以要打破它:( * EDITED以反映多对多的关系)

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        
                 ...               ... 

就数据库而言,您可能会发现Access易于使用并且最初会让您失去理智,但最终会想要转换为SQL数据库。