Mysql 嵌套程序集数据库结构

Mysql 嵌套程序集数据库结构,mysql,sql,database,database-design,relational-database,Mysql,Sql,Database,Database Design,Relational Database,我正在为我工作的制造企业创建报价软件,我不确定如何在我的MySQL数据库结构中处理程序集,因为它们有点像 还有一个简单的例子: 三个小零件(2×A和1×B)焊接在一起形成子组件C。这在“零件组装”表中很容易处理 子组件C是组件D的一部分 然后在较大的组件中使用组件D,如E 在这种情况下,程序集部分只有两层深,只有程序集D既是“父”程序集又是“子”程序集,但在许多情况下,较大的程序集的层次结构会更深 很明显,正如我所展示的,在另一个表中不能将一个UID用作两个独立的外键。由于大多数情况下我都会

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

还有一个简单的例子:

  • 三个小零件(2×A和1×B)焊接在一起形成子组件C。这在“零件组装”表中很容易处理
  • 子组件C是组件D的一部分
  • 然后在较大的组件中使用组件D,如E
在这种情况下,程序集部分只有两层深,只有程序集D既是“父”程序集又是“子”程序集,但在许多情况下,较大的程序集的层次结构会更深

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


感谢您提供的任何帮助。

您走上了正确的道路。接下来需要做的是了解如何使用SQL查询递归结构。一旦你有了一个玩具的例子,试着用你自己的桌子。一开始这不是最容易理解的事情,但一旦你理解了,你可能会惊讶于它是多么有用。在一个好的DBMS实现上,您可能会惊讶于它的速度有多快


我在这里的时候,有两种观点。首先,你不需要在名字上加上“tbl_”前缀。当然是一张桌子;在之后还会有什么?而且,如果您有选择的话,请查看Postgres,它在SQL极客中享有盛誉。首先,日期算法实际上是可行的,2月31日是一个错误

您的数据库模型显然需要存储分层数据。MySQL 5.x没有用于此类数据的必要工具。确保升级到MySQL 8.x(或切换到PostgreSQL)。我不知道XAMPP没有包含最新版本的MySQL。谢谢,我会进一步调查。请提供可能的副本。使用链接/图像仅为方便补充文本和/或文本中无法给出的内容。不要给出没有图例/键的图表。使用编辑功能内联,而不是链接,如果你有代表。使你的文章自我包含。philipxy-请你告诉我如何可以提供一个ERD的文本只?很抱歉,我没有意识到FK(外键)、PK(主键)和U(唯一/索引)需要图例。谢谢您的建议和反馈。Re:“tbl_u2;”a)这就是15年前我在六年级学习ASP时教我如何给它们加上标签的方法,这是一种习惯;b)由于我使用的项目需要MySQL数据库中约20个表,因此在PHPMyAdmin/PHP Storm中将我的核心系统表分组在一起实际上非常有用。