【问题标题】:Data Vault relation among links and hubs链接和集线器之间的 Data Vault 关系
【发布时间】:2021-11-12 17:37:14
【问题描述】:

我有以下维度:

我在我的数据保险库方案中创建了这两个链接之间的以下关系。

正确吗?是否允许在没有集线器的情况下直接连接链接?如果没有,我该怎么做?船舶名称或船舶地址可以是业务密钥吗?

【问题讨论】:

  • 假设一个订单可以包含多个产品是否正确?这意味着 OrderID 在 LINK_Order_Details 中不是唯一的,因此不能是主键。
  • 另外,您正在为版本 1 或 2 使用哪个版本的 Data Vault 标准。如果是 2,您是否使用哈希或业务密钥作为您的 Vault 密钥?

标签: database database-design data-vault


【解决方案1】:

将一个链接加入另一个链接不是数据保险库标准中的有效方法。

在我们开始之前,您当前的模型存在一些问题,表明您对数据仓库存在误解。

  • OrderID 不能是链接表上的主键,如果曾经对订单进行过编辑,您将拥有重复的主键。
  • 您询问 ShipName 或 ShipAddress 是否可以是业务密钥,这表明您没有完全理解业务密钥的数据仓库概念。业务密钥意味着持有该密钥的新中心。它们并非不可能,但是当您有两个同名的客户或一个客户更改地址时会发生什么。我希望它更有可能看到客户 ID,然后将姓名和地址附加到客户中心。

我认为你有两个选择:

首先假设您有一个订单中心,然后将两个链接表都连接到它,并且订单和订单详细信息之间的连接在数据保险库中保持隐式\间接。您需要一个附加到订单详细信息链接的卫星来保存单价等。 这是一种相对简单的方法,但可能存在缺陷。例如,如果一个订单上可以多次包含相同的产品,则存在丢失信息的风险,或者充其量您必须处理多个活动卫星并推动关键关系。

第二种选择是认为订单详细信息本身就是一个业务概念,因此应该有自己的中心(订单行项目或类似概念)。现在,新中心以一对多关系链接到订单,并单独链接到产品中心。逻辑现在更简单了,但您必须构建更多对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2011-08-08
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多