小编Dav*_*ams的帖子

多个很多关系是不良设计的证据吗?

美好的一天,

我一直在学习数据库和数据库设计,我发现我仍然无法回答自己无法回答的问题.所以我向社区提出这样一个问题,希望有更多知识/经验的人能够回答它.

我的任务是建立一个跟踪船队库存水平的数据库.

目前的设计为每艘船提供了一张表格,列出了所有可能的零件(机械类型,零件编号,品牌,序列号等)

这意味着一件机器或零件的细节可以重复多次(实际上是船舶的次数).

我一直在尝试根据自己学到的东西进行重新设计,并且我会提出如下设计:

[SHIP]
ID, Name, Class, Tonnage, Fleet, Superintendent etc.

[Machinery]
ID, Type, Make, Model etc. (Can have separate table for manufacturers and types if required)

[Part]
ID, Part number, Description, etc.
Run Code Online (Sandbox Code Playgroud)

以上是现在的三个主要表格,它开始变得困难.

每艘船可以有多个机器项目,每个机械项目可以存在于多艘船上(需要一个连接表)

每个机械零件可以有多个零件,每个零件可以属于多个机械零件(另一个接合台)

成千上万的零件可能会使接合台变得庞大.

此外,只要您想跟踪库存,您就会看到另一个联结表

[Stock Level]
ShipID, PartID, Stock Level
Run Code Online (Sandbox Code Playgroud)

此外,如果您想要最低库存(可以与库存水平相结合?)

[Min Stock]
ShipID, PartID, Min Stock
Run Code Online (Sandbox Code Playgroud)

最后,如果您正在寻找标准化数据库(即没有第1部分,第2部分或序列号1,序列号2)

你需要一些额外的桌子

[Serial Numbers]
ShipID, MachineryID, Serial No

[Part Numbers]
PartID, Part Number
Run Code Online (Sandbox Code Playgroud)

序列号可能是相当标准的并且没有问题,但是[部件号]将至少需要与[部件]表中的记录一样多的记录.

地图(尽管我可以代表没有图片,但为简单起见省略了交叉点)

  <>V represent many 
  -| represent one

   -----< Serial Numbers
  |             V …
Run Code Online (Sandbox Code Playgroud)

database-design

3
推荐指数
1
解决办法
208
查看次数

标签 统计

database-design ×1