据我所知,我们可以在类图中显示枚举值,如下所示:
----------------------+
| <<enumeration>> |
| DayOfTheWeek |
|_____________________|
| Sunday |
| Monday |
| Tuesday |
| ... |
+---------------------+
+---------------------+
| Event |
|_____________________|
| day : DayOfTheWeek |
| ... |
+---------------------+
但是,我找不到任何在 ER 图中显示枚举值的表示。那么,如何在 ER 图中以正确的关系类型显示枚举?
枚举对应于一组值,每个值都由文字表示。文字通常比它的编码方式更重要(许多 OOP 语言以某些整数类型对枚举进行编码,不同的文字具有不同的值)。
与 UML 不同,ERD 没有任何用于定义枚举类型的特定符号。但这并不意味着没有什么适合处理枚举。
虽然我们大多使用熟悉类型的已知 DBMS 系统,但根据 P.Chen(发明者或 ERD),属性的理论定义要广泛得多:
属性可以正式定义为从实体集或关系集映射到值集或值集的笛卡尔积的函数。
因此您可以很好地使用本地枚举类型的属性。只是 ERD 没有提供一种方便的方法来描述可能值的集合。您可能必须在评论框中或在图外描述这些。
不管你相信与否,如果你正在开发现实生活中的应用程序,那么枚举是非常痛苦的。如果您有一个枚举来描述采购订单类型或记录状态,并且突然需要添加一个新的枚举,该怎么办?好吧,您必须修改代码,因为枚举是硬编码的。当您必须本地化一些代码并需要将每个值翻译为二十种语言时,您会如何处理枚举?
在关系世界中,您本机将枚举表示为具有主键和与文字值相对应的属性的实体。您可以在 ERD 中很好地表示这一点。
这种方法的唯一缺点是您仍然无法在图中记录实体的值。另一方面,这是一个好处,因为它迫使您从一组有限的可能值中进行抽象,同时为您提供像处理任何其他数据一样处理枚举的灵活性,允许在需要时动态创建新的数据.