我正在根据我用MySQL 工作台生成的 ERD 做一个 UML 模型。但是现在我对类图中的主键和外键表示有疑问。
在传统的 UML 图中,我们应该包括主键作为每个类的属性吗?例如,id_user
或id_list
? 关于外键?这些被忽略为属性但反映为关联?
谢谢
首先:为什么要在 UML 中绘制它?如果您已经有一个 ERD,您想用 ERD 没有给您的 UML 类图来说明什么附加/替代属性?
为什么?因为 UML 是一种工具。假设该图仅供人类消费(即您不是从中生成代码),那么您应该使用 UML 来公开您尝试传达的信息。
作为通用标准,UML 没有说明您如何形式化身份(PK/FK)。UML 遵循每个对象都具有隐式标识的 OO 习惯用法 - 因此您不需要显式指定它。因此,在最简单的情况下,您可以:
如果这满足您的建模需求,那么您就完成了。
作为第二个改进,您可以使用 oclisUnique()
约束标记 PK 属性,再次忽略 FK。
另一种选择是使用Executable UML的规则。它直接在类图上表示 PK('Identifiers'} 和 FK('reference attributes'})。因此它最接近捕获 ERD 中的所有内容。
总而言之:没有 UML 强加的正确答案。这一切都取决于您想与图表交流什么。
您可以使用/创建“数据库配置文件”来使用此信息注释您的 UML 模型。如果没有配置文件,您可以使用 OCL 来指定唯一性约束,而普通关联应该足以表示在数据库级别将转换为外键的内容
您可以使用 EclipseUML Omondo 试用并反转您的数据库。
您将获得所需的信息,然后可以将其复制到免费或开源工具中。