Database design 表级别和外键之间的关系

Database design 表级别和外键之间的关系,database-design,relational-database,Database Design,Relational Database,我需要有关数据库中以下结构的帮助 这些是桌子 价目表 可选组 产品组 产品 现在我需要把这些东西组织起来,让我们从上一篇表格文章开始 物品属于产品,然后产品属于产品组,然后产品组属于OptionalGroup,OptionalGroup属于价目表 今天的关系是这样的 表:价格表 表:OptionalGroup具有PriceListId的ForeignKey 表:ProductGroup具有OptionalGroup的外键 表:产品具有ProductGroup的外键 样本数据: > P

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

这些是桌子

  • 价目表
  • 可选组
  • 产品组
  • 产品
  • 现在我需要把这些东西组织起来,让我们从上一篇表格文章开始

    物品属于产品,然后产品属于产品组,然后产品组属于OptionalGroup,OptionalGroup属于价目表

    今天的关系是这样的

    • 表:价格表
    • 表:OptionalGroup具有PriceListId的ForeignKey
    • 表:ProductGroup具有OptionalGroup的外键
    • 表:产品具有ProductGroup的外键
    样本数据:

    >  Pricelist: 81
       >  OptionalGroup: Shoes
           > ProductGroup: Shoelace
           >   Product: Shoelace 1
           >   Product: Shoelace 2
    
    我应该如何设计这个

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

    这种设计就可以了

    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
    
    我应该如何设计这个

    你已经做了;)您的数据模型似乎适合您所描述的需求

    虽然有一些可能的变化,但基本思想没有根本改变。例如

    …使用关系将父PK“迁移”到子PK,因此您可以(例如)直接从
    Product
    表获取
    PriceListId
    ,而无需与
    ProductGroup
    OptionalGroup
    表联接,但代价是“胖”子FKs

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



    此外,如果
    价目表中没有
    (其他字段)
    ,并且您永远不会有空价目表(或者根本不区分空价目表和不存在的价目表),您可以完全忽略该表。

    该层次结构中的所有级别都是必需的吗?@wp91。我应该如何设计它?问题是;)只要看我的文字。什么是应用程序?清单?