UML 类图中关联和聚合的多重性与关系数据库(实体关系图)中关系的基数相同吗?
是的,UML 中的多重性概念与 ERD 中的基数概念相同。 主要区别在于术语。
首先,我们需要记住基数的本意,它表示给定集合中元素的数量。
UML 2.5.1 规范第 33 页解释了这一点
集合的基数是该集合中包含的值的数量。 MultiplicityElement 的 multiplicity 指定它所代表的集合的有效基数。 重数是对基数的约束,它不得小于为重数指定的下限,也不得大于为重数指定的上限(除非重数是无限的,在这种情况下,对上限没有限制)绑定)。
简而言之,这里的集合是指链接到另一个类的给定实例的类的实例。因此,UML 定义表明,多重性定义了此类集合的允许大小上存在的约束。
有趣的是,ER 模型的发明者Peter Chen在他的第一篇论文中根本没有提到基数。 Chen 谈到“映射类型
1:1
、1:n
和 n:m
”并解释说:
实体有关关系集中每个实体集中允许的实体的数量的信息,通过在图中指定“1”、“m”、“n”来指示。
我们必须小心术语。 这里,
指的是某些属性的一组特定值,即实例,而实体集指的是我们俗称的“实体”的所有可能实例。 总之,ERD 和 UML 的措辞可能略有不同,但在这两种情况下,都是关于一侧实例数量的约束可能与另一侧实例相关。