我正在为我从事的制造业务创建报价软件,但不确定如何处理MySQL数据库结构中的程序集,因为它们有点像Russian Doll。
Here's a rough ERM和一个简单的示例:
在这种情况下,程序集部分只有两层深,只有程序集D既是“父”程序集又是“子”程序集,但是对于较大的程序集,在很多情况下这种层次结构会更深。
很显然,您不能像我展示的那样在另一个表中将单个UID用作两个单独的外键。在大多数情况下,我将查询父ID,因此可以将SubAssemChildID建立为外键,但是我担心这可能会导致复杂性和/或缺少替代解决方案。
感谢您提供的任何帮助。
答案 0 :(得分:0)
您在正确的轨道上。接下来,您需要了解如何使用Common Table Expressions在SQL中查询递归结构。一旦您获得了一个玩具示例,就可以在自己的桌子上尝试一下。乍一看,这并不是最容易理解的事情,但是一旦您了解了它的实用性,您可能会感到惊讶。在良好的DBMS实施中,您可能会惊讶它的速度如此之快。
当我在这里时,有两种意见。首先,您不需要在名称上加上“ tbl_”前缀。 当然是一张桌子; FROM
之后还会有什么?而且,如果您有选择的话,请查看Postgres,它在SQL怪胎中广受好评。一方面,日期算术确实有效,而2月31日是一个错误。