DDD建模技术之限定

249 阅读1分钟

1.什么是“限定”

例子:一个员工可以拥有多份工作经验,而各个工作经验的时间段不能相互重叠。即:对于一个员工而言,每个时间段只能有一条工作经验。虽然这种关系在“时间段不能重叠”这个约束里已经隐含了,但是 UML里还有一种专门的方式,可以表达这个规则中的部分含义。

如下图所示:在员工那一端加了一个小方框,里面写了“: 时间段”,而另一端的多重性,由原来的“0..*”变成了“0..1”。

这种方式所表达的是,对于一个员工而言,任何一个时间段,要么没有工作经验,要么有一条工作经验,但不能有多条工作经验。一个员工可以有多条工作经验,但限定在一个时间段的话,那么最多就只能有一条工作经验了。

所以,这种机制就叫作“限定”(qualification)。而上面那个标有“: 时间段”的小方框,叫做“限定符”(qualifier)。

image.png

2.为什么要用“限定”

限定机制起到了两个作用:

第一,表达了更丰富的语义,把原来用注解说明的约束变成了更严格的符号;

第二,简化了关联关系的多重性,把原来的一对多,在形式上,变成了一对一。

3.“限定”的实现

3.1限定的数据库实现

在数据库中,通过唯一索引实现就可以了。如图,

image.png

3.2限定在代码中的实现

在代码中,限定一般用 Map 来实现。

image.png

此文章为2月Day10学习笔记,内容来源于极客时间《手把手教你落地 DDD》