嵌套程序集数据库结构
Nested Assemblies Database Structure
我正在为我工作的制造企业创建报价软件,但我不确定如何处理我的 MySQL 数据库结构中的程序集,因为它们有点像 Russian Doll。
Here's a rough ERM 和一个简单的例子:
- 三个小零件(2×A & 1×B)焊接在一起形成子组件 C。这在 "PartAssem" table
中很容易处理
- Sub Assembly C 然后是一个Assembly D
- Assembly D 然后用于更大的 Assemblies,如 E.
在这种情况下,程序集部分只有两层深,只有程序集 D 既是 "parent" 又是 "child" 程序集,但在很多情况下,对于较大的程序集,这层次会更深。
显然,您不能像我展示的那样在另一个 table 中将单个 UID 用作两个单独的外键。由于大多数时候我会查询父 ID,我可以将 SubAssemChildID 设置为外键,但我担心这可能会导致并发症 and/or 我缺少替代解决方案。
感谢您提供的任何帮助。
您走在正确的轨道上。接下来需要做的是了解如何使用 Common Table Expressions 查询 SQL 中的递归结构。一旦你得到了一个玩具示例,用你自己的 tables 来尝试它。一开始这不是最容易理解的东西,但是一旦你掌握了它,你可能会惊讶于它的用处。在一个好的 DBMS 实现上,您可能还会惊讶于它的速度有多快。
虽然我在这里,但有两个意见。首先,您的名字不需要 "tbl_" 前缀。 当然这是一个table; FROM
之后还有什么?而且,如果您有选择,请查看 Postgres,它在 SQL 极客中广受好评。一方面,日期算法确实有效,而 2 月 31 日是一个错误。
我正在为我工作的制造企业创建报价软件,但我不确定如何处理我的 MySQL 数据库结构中的程序集,因为它们有点像 Russian Doll。
Here's a rough ERM 和一个简单的例子:
- 三个小零件(2×A & 1×B)焊接在一起形成子组件 C。这在 "PartAssem" table 中很容易处理
- Sub Assembly C 然后是一个Assembly D
- Assembly D 然后用于更大的 Assemblies,如 E.
在这种情况下,程序集部分只有两层深,只有程序集 D 既是 "parent" 又是 "child" 程序集,但在很多情况下,对于较大的程序集,这层次会更深。
显然,您不能像我展示的那样在另一个 table 中将单个 UID 用作两个单独的外键。由于大多数时候我会查询父 ID,我可以将 SubAssemChildID 设置为外键,但我担心这可能会导致并发症 and/or 我缺少替代解决方案。
感谢您提供的任何帮助。
您走在正确的轨道上。接下来需要做的是了解如何使用 Common Table Expressions 查询 SQL 中的递归结构。一旦你得到了一个玩具示例,用你自己的 tables 来尝试它。一开始这不是最容易理解的东西,但是一旦你掌握了它,你可能会惊讶于它的用处。在一个好的 DBMS 实现上,您可能还会惊讶于它的速度有多快。
虽然我在这里,但有两个意见。首先,您的名字不需要 "tbl_" 前缀。 当然这是一个table; FROM
之后还有什么?而且,如果您有选择,请查看 Postgres,它在 SQL 极客中广受好评。一方面,日期算法确实有效,而 2 月 31 日是一个错误。