首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表级别与外键之间的关系

表级别与外键之间的关系
EN

Stack Overflow用户
提问于 2012-12-20 11:53:21
回答 2查看 82关注 0票数 0

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

这些是桌子

  1. PriceList
  2. OptionalGroup
  3. ProductGroup
  4. 产品

现在我需要把这件事组织起来,让我们从最后一篇表格文章开始。

项目属于产品,然后产品属于产品组,然后产品组属于OptionalGroup,OptionalGroup属于PriceList。

今天的关系是这样的。

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

样本数据:

代码语言:javascript
复制
>  Pricelist: 81
   >  OptionalGroup: Shoes
       > ProductGroup: Shoelace
       >   Product: Shoelace 1
       >   Product: Shoelace 2

我该怎么设计这个?

以这种方式,我需要得到一个产品,现在我需要价格表,选择组,产品组,然后我可以得到产品。因为价格表有他们自己的OptionalGroup,而且它也可以有相同的选项组名称。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-20 15:21:12

我该怎么设计这个?

)您的数据模型似乎适合您所描述的需求。

有一些可能的变化,但没有从根本上改变基本的想法。例如..。

...uses identifying关系用于将父PKs“迁移”到子表,因此您可以(例如)直接从Product表中获取PriceListId,而无需使用JOINing和OptionalGroup表,但代价是“胖”子FKs。

非识别关系的设计是否比这里所示的设计更好,这是一个工程权衡的问题。两者都有优点和缺点,你的任务是为你的特定情况挑选一个有更多好处和更少缺点的人。

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

票数 1
EN

Stack Overflow用户

发布于 2012-12-20 12:10:14

这个设计就行了

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13971628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档