嵌套装配数据库结构

时间:2019-01-10 17:31:25

标签: mysql sql database database-design relational-database

我正在为我从事的制造业务创建报价软件,但不确定如何处理MySQL数据库结构中的程序集,因为它们有点像Russian Doll

Here's a rough ERM和一个简单的示例:

  • 将三个小零件(2× A 和1× B )焊接在一起以形成子组件 C 。在“ PartAssem”表中可以轻松地处理此问题
  • 然后,
  • 子装配体 C 是一件装配体 D
  • 然后将
  • 装配体 D 用于较大的装配体,例如 E

在这种情况下,程序集部分只有两层深,只有程序集D既是“父”程序集又是“子”程序集,但是对于较大的程序集,在很多情况下这种层次结构会更深。

很显然,您不能像我展示的那样在另一个表中将单个UID用作两个单独的外键。在大多数情况下,我将查询父ID,因此可以将SubAssemChildID建立为外键,但是我担心这可能会导致复杂性和/或缺少替代解决方案。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

您在正确的轨道上。接下来,您需要了解如何使用Common Table Expressions在SQL中查询递归结构。一旦您获得了一个玩具示例,就可以在自己的桌子上尝试一下。乍一看,这并不是最容易理解的事情,但是一旦您了解了它的实用性,您可能会感到惊讶。在良好的DBMS实施中,您可能会惊讶它的速度如此之快。

当我在这里时,有两种意见。首先,您不需要在名称上加上“ tbl_”前缀。 当然是一张桌子; FROM之后还会有什么?而且,如果您有选择的话,请查看Postgres,它在SQL怪胎中广受好评。一方面,日期算术确实有效,而2月31日是一个错误。