【问题标题】:How to solve this? Use a bridge table?如何解决这个问题?使用桥接表?
【发布时间】:2015-09-02 21:45:55
【问题描述】:

我正在设计一个星型模式并遇到了这个问题。我有两个维度表 - 一个产品(键 = 产品 ID)和一个客户(键 = 客户 ID)。在另一个表中,有三个字段 - 业务单位、产品 ID 和客户 ID。在此表中,一个产品 ID 指的是许多业务单位和许多客户 ID。我的问题是我需要将第三张表作为 Product Dim 和 Customer Dim 之间的桥接表吗?或者应该有什么更好的方法来解决这个问题?


产品尺寸

产品编号 产品名称 …… ....等等


Customer_Dim

客户 ID 顾客姓名 客户类型 .....等等


第三张桌子

业务部门 产品编号 客户ID .....等等

现在我创建了第三个表作为 Bridge 表,并加入了 Product 和 Customer Dim。第三个表将 Product_id 和 Customer_id 作为 FK,将 Business Unit 作为属性。 这是正确的方法吗?

谢谢, 阿伦

【问题讨论】:

  • 是的,您必须使用第三个表作为桥接表,并为其他表创建两个外键。
  • 那么桥表是否只包含 FK?在我的情况下,桥表有两个 FK(产品 ID、客户 ID)和几个其他属性,如业务部门等。这是正确的方法还是我不应该在桥表中包含属性?

标签: sql-server data-warehouse star-schema


【解决方案1】:

是的,这就是所谓的many-to-many 关系。一个产品可以连接多个公司,一个公司可以连接多个产品。

【讨论】:

  • 谢谢古法。所以事实上我需要带两个 FK 还是只带一个?
  • @Arun.K:你需要两个外键,否则你只有两个表之间的连接和一个不相关的表。
  • 我可以在桥接表中拥有除 FK 之外的属性吗?由于我使用第三个表作为桥,它具有业务单元等属性
  • @Arun.K:是的,你可以。那将是适用于关系的数据。
猜你喜欢
  • 2020-05-30
  • 1970-01-01
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多