7

我正在根据我用MySQL 工作台生成的 ERD 做一个 UML 模型。但是现在我对类图中的主键和外键表示有疑问。

在传统的 UML 图中,我们应该包括主键作为每个类的属性吗?例如,id_userid_list? 关于外键?这些被忽略为属性但反映为关联?

谢谢

4

3 回答 3

2

首先:为什么要在 UML 中绘制它?如果您已经有一个 ERD,您想用 ERD 没有给您的 UML 类图来说明什么附加/替代属性?

为什么?因为 UML 是一种工具。假设该图仅供人类消费(即您不是从中生成代码),那么您应该使用 UML 来公开您尝试传达的信息。

作为通用标准,UML 没有说明您如何形式化身份(PK/FK)。UML 遵循每个对象都具有隐式标识的 OO 习惯用法 - 因此您不需要显式指定它。因此,在最简单的情况下,您可以:

  • 将PK属性列为普通属性;
  • 完全忽略 FK 属性。

如果这满足您的建模需求,那么您就完成了。

作为第二个改进,您可以使用 oclisUnique()约束标记 PK 属性,再次忽略 FK。

另一种选择是使用Executable UML的规则。它直接在类图上表示 PK('Identifiers'} 和 FK('reference attributes'})。因此它最接近捕获 ERD 中的所有内容。

总而言之:没有 UML 强加的正确答案。这一切都取决于您想与图表交流什么。

于 2012-04-23T20:14:57.980 回答
1

您可以使用/创建“数据库配置文件”来使用此信息注释您的 UML 模型。如果没有配置文件,您可以使用 OCL 来指定唯一性约束,而普通关联应该足以表示在数据库级别将转换为外键的内容

于 2012-04-24T03:48:34.677 回答
0

您可以使用 EclipseUML Omondo 试用并反转您的数据库。

您将获得所需的信息,然后可以将其复制到免费或开源工具中。

于 2012-04-24T22:24:05.433 回答