民间,
快速版: 当我在HUB_SAT中有多个域查找引用时,我应该如何建模HUB,SAT和LINK? 如果您要从源模式中对这些进行一般建模,那么您如何区分应该是LINK的FK和应该是引用的FK?
长版:
我正在构建一个通用解决方案,用于从现有的3NF MSSQL架构生成DV模型。在我的源数据库中,我有一个巨大的域引用表,它包含大多数业务查找键
正如我所看到的,链接到此表有四个基本选择
这些#3感觉就像是最好的设计(但也是最难正确建模的 - 特别是在我的情况下,查找表对Type表有一个FK)
来自维基百科DataVault, 参考表是从Satellites引用的,但从不与物理外键绑定。
我的通用代码基于BIML DataVault walkthrough
中解释的设计模式我正在查看源架构中的所有表,以确定它们是否为HUB(具有PK和多个FK以及不是FK的字段),SAT(具有PK且仅有一个FK)或LINK(具有PK,更多比一个FK和所有字段都在PK / FK中)
然后我建立:
这一切都达到了一定程度(即我有上述所有表格)但是有一些非常宽的表格,其中大量的字段只是R_RefID字段,所有字段都在同一个HUB上查找,它们是所有与引用参考表
的实体表上的FK绑定E.G。 source资产表有参考字段 - 资产类型 - 资产目的 - 资产经理 - 资产出资者 - ......
所以在初步模型中我有:
但是没有办法确定每个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