0

我需要有关数据库中以下结构的帮助。

这些是桌子

  1. 价位表
  2. 可选组
  3. 产品组
  4. 产品

现在我需要整理这些东西,让我们从最后一个表格文章开始。

文章属于一个产品,那么该产品属于一个产品组,那么该产品组属于一个OptionalGroup,而OptionalGroup 属于一个PriceList。

而今天的关系看起来是这样的。

  • 表:价目表
  • 表:OptionalGroup 具有 PriceListId 的 ForeignKey
  • 表:ProductGroup 具有到 OptionalGroup 的 ForeignKey
  • 表:产品具有 ProductGroup 的 ForeignKey

样本数据:

>  Pricelist: 81
   >  OptionalGroup: Shoes
       > ProductGroup: Shoelace
       >   Product: Shoelace 1
       >   Product: Shoelace 2

我应该如何设计这个?

这样,为了得到一个产品,我现在需要 pricelist, optionalgroup, productgroup 然后我就可以得到产品。因为 pricelist 有自己的 OptionalGroup,它也可以有相同的 optionalgroup 名称。

4

2 回答 2

1

我应该如何设计这个?

您已经这样做了;) 您的数据模型似乎符合您所描述的要求。

不过,在不从根本上改变基本思想的情况下,有一些可能的变化。例如...

在此处输入图像描述

...使用识别关系将父 PK“迁移”到子 PK,因此您可以(例如)PriceListId直接从Product表中获取,而不用ProductGroupOptionalGroup表连接,但代价是“更胖”的子 FK。

具有非识别关系的设计是否比此处显示的设计更好是工程权衡的问题。两者都有优点和缺点,您的任务是为您的特定情况选择一个优点更多、缺点更少的选项。


此外,如果表中没有(other fields)PriceList并且您永远不能有一个空的价目表(或者根本不区分空的价目表和不存在的价目表),您可以完全省略该表。

于 2012-12-20T15:21:12.857 回答
0

这个设计会做,

table name PriceList
ProductID--> PK
Price
table name OptionalGroup
GroupID--> PK
ProductID--> FK
GroupName
table name ProductGroup
ProductGroupID--> PK
ProductGroupName
GroupID--> FK
table name Product
ProductName
ProductGroupID-->FK
于 2012-12-20T12:10:14.257 回答