我有"组件"它可以以不同的方式组装成一个"系统"。我希望我的数据库保存所有这些"组件",它们的类型特定数据,并定义它们如何相互连接以形成一个"系统"。
系统通常是变速箱,它们可以具有相当复杂的分支设计。让我们从一个简单的例子开始:
该系统由Masses(水平线)和Stiffnesses(垂直线)构成。齿轮和离合器是质量类型并且成对出现。由于齿轮比,颜色代表不同的分支速度。这是一个(坏的)示例,说明如何存储此特定插图中的所有内容:
ID | Type | Clutch | Ends | DrivenBy | NoOfTeeth| Mass | Stiffness
--- | ---- | ------ | ---- | --------- | -------- | ---- | ---------
1 | Mass | | Input1 | | | 5 |
2 | Stiffness | | | | | | 15
3 | Mass | 1.1 | | | | 2 |
4 | Mass | 1.2 | | | | 3 |
5 | Stiffness | | | | | | 20
6 | Gear | | | | 10 | 4 |
7 | Stiffness | | | | | | 30
8 | Gear | | | | 4 | 5 |
9 | Gear | | | 8 | 7 | 2 |
10 | Stiffness | | | | | | 40
11 | Mass | | | | | 4 |
12 | Stiffness | | Output1 | | | | 10
13 | Gear | | | 6 | 5 | 4 |
14 | Stiffness | | | | | | 20
15 | Mass | 2.1 | | | | 4 |
16 | Mass | 2.2 | | | | 3
17 | Stiffness | | | | | | 30
18 | Mass | | Output2 | | | 2 |
显然,这不是存储数据的好方法。这种设计模式在某种程度上类似于重复属性"因为每个组件类型都有不同的要填充的属性。我可以为每种类型的组件创建一个表,但是在查看其他示例时,例如这个2级变速箱,事情变得更加复杂:
还有一些输入和多个输出的示例,但由于声誉不佳,我无法发布更多链接。
无论如何,你会发现通常的分层数据存储在这里并不适用,因为数据不是纯粹的"树形的"一切都从一个主要分支分支出来。
我认为即使我能以上述方式存储数据,但在编程阶段我会遇到很大困难。
为了增加复杂性,这些变速箱实际上是更大系统的子系统。
那么,有关存储此类数据的好方法的任何建议吗?*
答案 0 :(得分:0)
也许这是一种可行的方式吗?
在这里你会看到有一个" main"表名为GearboxBranch,跟踪变速箱中的所有元素,给它们一个id并识别元素存在于哪个分支中。
然后对于元素本身,群众在他们的专用表中定义,僵硬也是如此。然后在透视表中定义齿轮和离合器(它们是质量类型)。齿轮台中存在递归关系,因为一个齿轮必须由至少一个其他齿轮驱动。
此外,带有轴端的工作台定义了变速箱中的哪些元件是输入或输出的,以及它们具有的数量。
我似乎无法看到此方法存在任何问题,但我有点不确定如何从数据库中获取数据。我担心会有相当多的编码。