使用紧密耦合的数据标准化表格

时间:2016-09-09 17:07:32

标签: sql sql-server-2012 normalization

我目前有一个存储用于创建项目的材料的表

Item (material1, material2, material3)

最近添加了另一种材料。但是,我想对此表进行规范化,以便将来添加新材料不需要将新列添加到数据库中。我将材料提取到下面的连接表中

ItemJuncMaterial (id, itemId, materialid)

然而,问题在于材料的顺序很重要。因此,此联结表将不允许我根据材料运行此查询以获取项目

select itemid from ItemJunMaterial where materialid in (1,2,3)

这可以返回使用2,3,1或甚至可以使用两种材料1,2的项目。是否有更好的方法来拆分此表以对其进行标准化并使其更具动态性?

1 个答案:

答案 0 :(得分:0)

你应该考虑一个"材料清单" (BOM)模式(请参阅herehere)。 BOM的交集可以包括关于组成的额外信息,例如每个组件的数量。您可以轻松地在该交叉点中轻松包含组件的顺序或优先级。