0

我有一个问题,关于如何在两个不同实体的成员之间建立关系?例如,在 1:1 的情况下,您可以创建引用实体的基于域的属性。但是,如果您的客户有多个地址,并且您有一个地址实体。

当您更新 Customer 实体的 Address 属性的成员时,基于 1:M 我们如何能够显示该关系并将 Address 实体连接到 Customer 实体?

因此,如果客户实体中的地址成员发生更改,由于我们没有映射关系,更新过程将如何工作?

我知道在 M:M 中你会使用桥牌桌。在 MDS 数据库中,哪个表将包含该关系信息?

对文章和博客文章/视频或想法的任何建议,将不胜感激。

谢谢,安德里亚

4

1 回答 1

1

在 MDS(主数据服务)中,您可以使用层次结构功能。

- 选项 1:创建显式层次结构

如果您使用的是 SQL Server 2012(也可能是 2014),那么显式层次结构将解决此问题。(请参阅:显式层次结构(主数据服务)

基本上,您将能够将客户实体行用作层次结构中的父节点(考虑树结构)并将一个或多个地址实体行分配为每个客户的子节点。

顾名思义,这需要“显式”管理。这意味着有人将使用 MDS Hierarchy UI 页面手动(拖放)执行此操作,或者您可以在加载暂存表时使用 SSIS 包自动执行此操作。(请参阅:使用暂存过程移动显式层次结构成员(主数据服务)

注意:显式层次结构已被弃用(从 SQL 2016 开始......我认为)

- 选项 2:创建派生层次结构(桥表 - M:M)

这类似于之前为 M:M 关系提出的桥接表概念,但在 MDS 上下文中。

  1. 创建另一个实体,将其称为CustomerAddressRelationship(假设),我们现在将其称为 CAR。

  2. 向 CAR 添加 2 个域属性:一个引用客户实体,另一个引用地址实体。

  3. 现在,如果需要,您可以在此 CAR 实体上以CAR > Customer > Address格式创建派生层次结构。阅读有关派生层次结构的更多信息:多对多 (M2M) 关系

- 选项 3:创建派生层次结构 (1:M)

  1. 不要创建 CAR。只需将CustomerID列(假设)添加到Address实体。这样,每个地址可能有 0 或 1 个与之相关的客户。

  2. 为 1:M 关系创建派生层次结构

希望这可以帮助。

于 2018-02-22T19:53:17.930 回答