表级别和外键之间的关系

时间:2012-12-20 11:53:21

标签: database-design relational-database

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

这些是表格

  1. 价目表
  2. OptionalGroup
  3. ProductGroup
  4. 产品
  5. 现在我需要对此进行构建,让我们从上一篇文章开始。

    该文章属于某个产品,然后该产品属于产品组,则该产品组属于OptionalGroup,而OptionalGroup属于PriceList。

    今天这种关系看起来像这样。

    • 表:PriceList
    • 表:OptionalGroup具有ForeignKey到PriceListId
    • 表:ProductGroup具有ForeignKey to OptionalGroup
    • 表:产品具有ForeignKey to ProductGroup

    示例数据:

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

    我该如何设计呢?

    通过这种方式,为了获得我现在需要的产品价格,可选组,产品组,我就可以获得产品。因为价格表有自己的OptionalGroup,它也可以有相同的可选组名。

2 个答案:

答案 0 :(得分:1)

  

我该如何设计呢?

您已经做过;)您的数据模型似乎与您描述的要求相符。

虽然有一些可能的变化而没有从根本上改变基本思想。例如......

enter image description here

...使用identifying关系将父PK“迁移”到子级,因此您可以(例如)直接从PriceListId表中获取Product,而无需加入ProductGroupOptionalGroup表,但代价是“胖子”FK。

具有非识别关系的设计是否优于此处显示的设计是工程权衡的问题。两者都有利有弊,你的任务是为你的特定案例挑选一个更专业,更少缺点


此外,如果(other fields)表中没有PriceList,并且您永远不会有空的价目表(或者只是不区分空的和不存在的价格表),你可以完全省略那个表。

答案 1 :(得分: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