我目前在我的SQL数据库中有两个表。第一个,MasterPartsList
只是我们系统中所有partnumbers的入口点,由属性pn
给出。第二个表MasterPartsLists
包含MasterPartsList中程序集的父子(Bill of Material)信息,由属性给出:
parentAssyPn
和pn
,这是来自MasterPartNumbers
的外键。
两个表格如下:
MasterPartNumbers (parent) one -> many MasterPartsLists (children)
(PK) pn (fk) pn
desc parentAssemblyPn (could also be a fk)
qty
price
这引出了我的问题1:
Q1:对于MasterPartsList
中的顶级组件部件号,我应该
一个。离开parentAssyPn
NULL
,然后使用相关的程序集部件号填充pn
,并且表中没有主键
湾设置parentAssyPn
= pn
并使用partial key
parentAssyPn pn`创建
and
?
提前致谢!
答案 0 :(得分:1)
您是否可以更改数据模型?
如果MasterPartsLists中的某个部分可以显示多个MasterPartNumbers的子项,那么这是一个多对多的关系。
我建议如下表格:
<强>部分强>
PartNumber(PK)
说明
价格
和
<强>装配强>
Parent_pn(PK)(FK)
PartNumber(PK)
数量
您的完整零件库存存储在零件表中。 您不在Assembly表中存储任何顶级程序集。
对于表装配,请将其读作: 要组装部分{Parent_pn},我需要{PartNumber}的{qty}项。 (根据需要重复完成组装Parent_pn。)
编辑: 让我们尝试一个简单的例子,其中笔由彩色墨水,桶和盖子组成。
您的零件表格如下:
1,红笔
2,蓝笔
3,红色墨水4,蓝色墨水
5,桶
6,上限
大会:
1,3,1 - 红笔需要红色墨水
1,5,1 - 红笔需要一桶
1,6,1 - 红笔需要一个上限
2,4,1 - 蓝笔需要蓝色墨水
2,5,1 - 蓝笔需要一桶
2,6,1 - 蓝笔需要一个上限
使用这个例子,我们可以看到这是一个多对多的关系: - 主要部分(例如红笔)由许多组件组成。 - 组件(例如帽)可用于组成许多主要部件。
这适用于您的方案吗?