我正在尝试开发一个简单的BOM(物料清单)管理器,该管理器应该管理各种关系(父子记录)的数千个组件。
我想知道在一个表中注册所有组件(祖父,父母和孩子)然后使用某种SQL查询(例如CTE)查询数据的最佳解决方案。在我的表中,我需要解决另一个问题:在一些情况下,一个孩子在几个父母中使用,但特定父母的孩子数量会发生变化。例如:我有一个叫Bolt的孩子。对于特定的父母,我使用10(十)个螺栓。对于另一个父母,我使用20个(20个)螺栓(相同的螺栓具有相同的部件号)。同时,几个祖父可以使用同一个父母,依此类推。
对于这个解决方案,我在ASP.NET中创建一个Web表单(使用VB.NET),我在MS ACCESS中使用一个简单的数据库。在我的程序中,我正在使用OLEDB提供程序。
请参阅下面的表格示例,称为“组件”:
Example for Table 'Components'
非常感谢!
答案 0 :(得分:0)
Assembly
和Component
感觉与我有着天然的关系。
由于Component
可能是许多程序集的一部分,并且Assembly
可以有许多组件,因此我们之间有一个多对多的JOIN表。您可以在JOIN或Component
表格上设置数量列。
您的汇编表具有主键,所有表都必须如此。我们称之为ASSEMBLY_ID。同样,您的Component表将拥有自己的主键:COMPONENT_ID。
您的JOIN表是一个名为ASSEMBLY_COMPONENT的单独表。它有两列:ASSEMBLY_ID,它是返回Assembly表的外键,以及COMPONENT_ID,它是返回Component表的外键。 ASSEMBLY_COMPONENT的主键是(ASSEMBLY_ID,COMPONENT_ID)。