如何使用物料清单的父子记录创建简单的数据关系

时间:2016-12-21 20:29:00

标签: mysql asp.net vb.net ms-access

我正在尝试开发一个简单的BOM(物料清单)管理器,该管理器应该管理各种关系(父子记录)的数千个组件。

我想知道在一个表中注册所有组件(祖父,父母和孩子)然后使用某种SQL查询(例如CTE)查询数据的最佳解决方案。在我的表中,我需要解决另一个问题:在一些情况下,一个孩子在几个父母中使用,但特定父母的孩子数量会发生变化。例如:我有一个叫Bolt的孩子。对于特定的父母,我使用10(十)个螺栓。对于另一个父母,我使用20个(20个)螺栓(相同的螺栓具有相同的部件号)。同时,几个祖父可以使用同一个父母,依此类推。

对于这个解决方案,我在ASP.NET中创建一个Web表单(使用VB.NET),我在MS ACCESS中使用一个简单的数据库。在我的程序中,我正在使用OLEDB提供程序。

请参阅下面的表格示例,称为“组件”:

Example for Table 'Components'

非常感谢!

1 个答案:

答案 0 :(得分:0)

AssemblyComponent感觉与我有着天然的关系。

由于Component可能是许多程序集的一部分,并且Assembly可以有许多组件,因此我们之间有一个多对多的JOIN表。您可以在JOIN或Component表格上设置数量列。

您的汇编表具有主键,所有表都必须如此。我们称之为ASSEMBLY_ID。同样,您的Component表将拥有自己的主键:COMPONENT_ID。

您的JOIN表是一个名为ASSEMBLY_COMPONENT的单独表。它有两列:ASSEMBLY_ID,它是返回Assembly表的外键,以及COMPONENT_ID,它是返回Component表的外键。 ASSEMBLY_COMPONENT的主键是(ASSEMBLY_ID,COM​​PONENT_ID)。