域参考表

时间:2017-06-28 09:19:36

标签: data-modeling data-vault

民间,

快速版: 当我在HUB_SAT中有多个域查找引用时,我应该如何建模HUB,SAT和LINK? 如果您要从源模式中对这些进行一般建模,那么您如何区分应该是LINK的FK和应该是引用的FK?

长版:

我正在构建一个通用解决方案,用于从现有的3NF MSSQL架构生成DV模型。在我的源数据库中,我有一个巨大的域引用表,它包含大多数业务查找键

  • 密钥INT(唯一)
  • TypeID INT
  • 说明VARCHAR
  • 发布代码
  • ......与讨论无关的其他一些字段

正如我所看到的,链接到此表有四个基本选择

  1. 将其创建为HUB,然后为每个引用它的业务HUB生成LINK表
  2. 将其创建为单个ReferenceLookup表,并在SAT表中包含R_ReferenceID
  3. 使用R_ReferenceID
  4. 为SAT中的每个TypeID和链接创建单独的ReferenceLookup表
  5. 为每个TypeID创建单独的HUB并生成LINK表
  6. 使用LINK_SAT表创建一个LINK表,以保存LINK映射的参考值的详细信息
  7. 这些#3感觉就像是最好的设计(但也是最难正确建模的 - 特别是在我的情况下,查找表对Type表有一个FK)

    来自维基百科DataVault, 参考表是从Satellites引用的,但从不与物理外键绑定。

    我的通用代码基于BIML DataVault walkthrough

    中解释的设计模式

    我正在查看源架构中的所有表,以确定它们是否为HUB(具有PK和多个FK以及不是FK的字段),SAT(具有PK且仅有一个FK)或LINK(具有PK,更多比一个FK和所有字段都在PK / FK中)

    然后我建立:

    • 具有HUB_ID和源PK的HUB
    • 具有HUB源表的非FK字段的SAT
    • 源SAT表的SAT
    • 来自源LINK表的链接
    • 来自HUB FK关系的链接

    这一切都达到了一定程度(即我有上述所有表格)但是有一些非常宽的表格,其中大量的字段只是R_RefID字段,所有字段都在同一个HUB上查找,它们是所有与引用参考表

    的实体表上的FK绑定

    E.G。 source资产表有参考字段   - 资产类型   - 资产目的   - 资产经理   - 资产出资者   - ......

    所以在初步模型中我有:

    • ASSET_HUB(HubID,Asset_ID)
    • ASSET_SAT(SAT_ID,BuildDate,DisposalDate,....)
    • Lookup_HUB(Hub_ID,LookupID)
    • ASSET_Lookup_1_LINK)(Link_ID,ASSET_HUB_ID,Lookup_HUB_ID)
    • ASSET_Lookup_2_LINK)(Link_ID,ASSET_HUB_ID,Lookup_HUB_ID)
    • ASSET_Lookup_3_LINK)(Link_ID,ASSET_HUB_ID,Lookup_HUB_ID)
    • ASSET_Lookup_4_LINK)(Link_ID,ASSET_HUB_ID,Lookup_HUB_ID)

    但是没有办法确定每个LINK表在域模型中呈现的内容

    如何查询模式以确定该表是否是真正的HUB候选者,或者它是否应该是REF表,以及如何确定FK是应该被视为LINK还是SAT.R_RefID。我是在战略而不是代码(但我不会拒绝代码,如果它是提供:) :)我的源数据库是SQL2008R2和我的开发环境我SQL2016_Dev

    响应tobi6:

    在源系统中,业务实体具有许多属性字段,这些属性字段只是XXX_ID类型,可从域引用表中查找其描述符。如果您将此域引用表建模为HUB,则必须为每个查找创建单独的链接表(由于业务实体上存在FK,因此会自动生成LINK表),或者使用LINK_SAT标识多个活动LINK记录以确定哪个您正在跟踪的属性(实际上这会创建第5个设计模式选项)。如果我将域引用表标记为REFerence,那么XXX_ID将保留在HUB_SAT中,这感觉就像是一个更好的解决方案,但更难以一般地建模。即如何确定业务实体FK是否应创建LINK,LINK和LINK_SAT或SAT.R_RefID

0 个答案:

没有答案