1

我的 SQL 数据库中有两个表目前存在问题。第一个,MasterPartsList只是我们系统中所有零件编号的入口点,由属性给出pn。第二个表包含 MasterPartsList 中组件MasterPartsLists的父子(物料清单)信息,由属性给出:

parentAssyPnpn,这是来自 的外键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 andpn`?

Q2:在这两种情况下,这将如何影响我如何将我的 Entity Framework 实体数据从我公开来自ObservableCollections 的数据的应用程序适当地保存回数据库(保存到两个表)?

提前致谢!

4

1 回答 1

1

是否允许更改数据模型?

如果 MasterPartsLists 中的一个部件可以出现多个 MasterPartNumbers 的子部件,则为多对多关系。

我建议以下表格:

部分

零件号 (PK)

描述

价格

集会

Parent_pn (PK)(FK)

零件号 (PK)

数量

您的完整零件库存存储在零件表中。您不会在装配表中存储任何顶级装配。

对于表组装,将其读作:要组装零件 {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 -- 蓝笔需要一个笔帽

使用这个例子,我们可以看到这是一个多对多的关系: - 一个主部件(例如红笔)由许多组件组成。- 一个组件(例如帽)可用于组成许多主零件。

这是否适用于您的场景?

于 2013-02-25T23:23:11.533 回答