【问题标题】:Can Domain-based attributes span across models基于域的属性可以跨模型吗
【发布时间】:2014-02-27 17:36:53
【问题描述】:

如果 Master Data Services 中的模型是主题领域(例如客户、产品等)的表示,是否可以有一个基于域的属性使用不同的模型作为其源?

例如,如果创建一个客户模型并定义一个名为“客户”的实体,该实体将拥有该客户的地址信息。城市、州/省、国家等。

我可以使用包含 Country 实体并链接到该实体的 Geography 模型,而不是为 CustomerCountry 创建实体吗?然后我还可以将 Geography.Country 实体用于供应商和员工。

【问题讨论】:

  • 主数据服务模型更类似于数据库而不是主题领域。实体就像该数据库中的表。属性就像一列。我还没有在文档中看到允许模型中的对象引用同一模型中的其他对象以外的任何内容。

标签: master-data-services


【解决方案1】:

不,您不能跨越模型边界 - 主要原因是模型是版本控制的单位。有两种解决方法:

  1. 复制相关实体 - 即将地理实体复制到您的客户模型中
  2. 按代码引用实体 - 即将 CITY_CODE 添加到您的客户实体

这些都不是很好的选择 1) 笨重,2) 不能保持自动完整性。

我个人使用选项 2),我可以在 MDS 之外使用一些额外的逻辑/业务规则来确保代码匹配。使用全球性且不会更改的代码(例如国家和城市代码)更容易做到这一点。

【讨论】:

  • 我都没有选择,因为它毕竟是主数据。我认为根本不需要划分模型,除非您有完全正交的应用程序域 - 因此重叠的实体将是一种代码味道。维度的分区可能是有意义的,但这是通过 DW 中的 ETL 而不是在主数据中完成的。如果我的推理有问题,请告诉我——我不怕承认,我正在编造这个。
  • 我必须承认你推理@ScottLHolmes 似乎是对的。不幸的是,我继承了具有许多模型的相当分散的 MDS。我们可以通过设计将其称为错误,但基本上我的选择是。要么重新制作和整合他们所有的模型,要么顺其自然,并努力做到最好,以及使相同实体在模型之间保持同步的背后逻辑。这种碎片化的原因是客户认为不同的人应该维护不同的模型,这似乎是合法的,但不幸的是使一些实体变得丰富;)
  • 如果您使用的是 MDS 2016,那么这个问题会因为新功能“实体同步”而消失:msdn.microsoft.com/en-us/library/mt244806.aspx
  • @ScottLHolmes 您可能拥有多个模型的原因是从可管理性的角度来看 - 假设您的营销部门负责使产品模型保持最新,但销售部门负责您的客户模型。他们可能有不同的时间表、授权和业务流程。将两者放在同一个模型中会使事情变得有些复杂。
【解决方案2】:

这似乎很老了,但现在可以在 2016 年实现,并且通过实体同步完成。这个想法是您可以跨模型同步您的实体。有两种方式来运行同步,按需或自动。

详情请见https://docs.microsoft.com/en-us/sql/master-data-services/entity-sync-relationship-master-data-services

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    相关资源
    最近更新 更多