关于如何在两个不同实体的成员之间建立关系,我有一个问题? 例如,在1:1的情况下,您可以创建引用该实体的基于域的属性。 但是如果您的客户有多个地址,并且您有一个地址实体。
当您更新Customer实体的Address属性的成员时,基于1:M,我们如何能够显示该关系并将Address实体连接到Customer实体?
因此,如果Customer实体中的Address成员发生更改,那么由于我们没有映射关系,该更新过程将如何工作?
我知道在M:M你会使用桥牌表。在MDS数据库中哪个表包含该关系信息?
对文章和博文/视频或创意的任何建议都将不胜感激。
谢谢, 安德烈
答案 0 :(得分:1)
在MDS(主数据服务)中,您可以使用层次结构功能。
- 选项1:创建显式层次结构
如果您正在使用SQL Server 2012(也可能是2014年),那么 显式层次结构 将解决此问题。 (见:Explicit Hierarchies (Master Data Services))
基本上,您将能够将Customer实体行用作层次结构中的父节点(考虑树结构)并将一个或多个Address实体行指定为每个Customer的子节点。
顾名思义,这需要“明确”管理..意味着有人会使用MDS Hierarchy UI页面手动执行此操作(拖放),或者您可以使用SSIS包在加载分段时自动执行此操作表。 (见:Move Explicit Hierarchy Members by Using the Staging Process (Master Data Services))
注意: 显式层次结构已弃用(从2016年开始......我认为)
- 选项2:创建派生层次结构(桥接表-M:M)
这类似于之前针对M:M关系建议的桥表概念,但是在MDS环境中。
创建另一个实体,将其命名为 CustomerAddressRelationship (让我们说),我们暂时将其称为CAR。
向CAR添加2个域属性:一个引用Customer实体,另一个引用Address实体。
现在,如果需要,您可以使用 CAR >格式在此CAR实体上创建派生层次结构。 客户> 地址。 详细了解Derived Hierarchies: Many-to-Many (M2M) Relationships
- 选项3:创建派生层次结构(1:M)
不要创建CAR。只需在地址实体中添加一列 CustomerID (比如说)。这样每个地址可能有0或1个与之相关的客户。
希望这有帮助。
答案 1 :(得分:-2)
一对多关系由2个表组成,许多表引用一个表。
Customer Table Address Table
+-------------+------------+-----------+----------------+ +------------+-------------+---------+
| customer_id | name_first | name_last | customer_class | | address_id | customer_id | address |
+-------------+------------+-----------+----------------+ +------------+-------------+---------+
| 1 | Barack | Obama | 2 | | 1 | 1 | Place1 |
| 2 | George | Bush | 2 | | 2 | 1 | Place2 |
| 3 | Michael | Jordan | 1 | | 3 | 2 | Place3 |
+-------------+------------+-----------+----------------+ | 4 | 3 | Place4 |
| 5 | 3 | Place5 |
| 6 | 3 | Place6 |
+------------+-------------+---------+