美好的一天,
我一直在学习数据库和数据库设计,我发现我仍然无法回答自己无法回答的问题.所以我向社区提出这样一个问题,希望有更多知识/经验的人能够回答它.
我的任务是建立一个跟踪船队库存水平的数据库.
目前的设计为每艘船提供了一张表格,列出了所有可能的零件(机械类型,零件编号,品牌,序列号等)
这意味着一件机器或零件的细节可以重复多次(实际上是船舶的次数).
我一直在尝试根据自己学到的东西进行重新设计,并且我会提出如下设计:
[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)