2012-04-23 492 views
5

我正在根据与MySQL workbench生成的ERD执行UML模型。但是现在我对类图中的主键和外键表示怀疑了。uml中的主键/外键

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

谢谢

回答

1

首先:为什么你想用UML绘制它?如果你已经有了ERD,你想用ERD不给你的UML类图来说明附加/替换属性是什么?

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

作为一个通用的标准,UML并没有说明你是如何正规化身份(PK/FK)的。 UML遵循面向对象的习惯用法,即每个对象都有隐含的标识 - 因此你不需要明确地指定它。因此,在最简单的情况下,您可以:

  • 将PK属性列为常规属性;
  • 完全忽略FK属性。

如果这符合你的建模需求,那么你就完成了。作为第二个改进,您可以使用ocl isUnique()约束标记PK属性,并再次忽略FK。

另一种选择是使用Executable UML的规则。它在类图上直接表示PK('标识符'}和FK('参考属性'),因此它最接近于捕获ERD中的所有内容

总之:没有UML强加的正确答案。这一切都取决于你想用图来沟通一下。

心连心。

+1

忽略FK没有太大意义,imo。使用关联(具有成员关系的属性)(如OP所要求的)更合适。 – Christian 2012-04-24 14:01:20

+0

@Christian:是的,FK可以在关联结束时显示为角色。我的观点是没有一套必须适用的规则。你有自由去做一些适合你的特定情况的东西。 FKs作为角色将是一个很好的默认值。 – sfinnie 2012-04-24 14:37:30

1

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

0

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

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