与类图混淆

时间:2014-01-14 19:35:57

标签: hibernate jpa uml

我必须实施一个搜索人员的网络应用程序,我想为在不同公司工作并具有某个等级的人(如工程师或技术人员或......)制作模型。

person在一个company中工作 company有很多person company有很多grade grade可以有多个company

那么什么类图将是最好的:

1)
enter image description here

2)
enter image description here

3)
enter image description here

网络应用程序将按表name中的addresspersongradecompany或所有组合进行搜索。 我将使用hibernate来映射我的数据库(mysql)。

3 个答案:

答案 0 :(得分:1)

第一个没有意义,因为没有人与年级之间的直接联系。

第二个是你需要的,一个人属于公司并且有一个成绩。

修改

OP编辑后的第3个选项似乎符合您的需求,如果您还想将成绩链接到公司。这实际上是第1和第2的组合。

答案 1 :(得分:1)

我同意#3是要走的路。如果你自己实现数据库结构,听起来像,我建议绘制一个详细的(EER)图表,显示关系类型(如一对多)并列出键。

我知道你没有明确要求,但这将是你的下一步。每个元素的主键是什么?您是否需要“中间”表来处理多对多关系,例如GRADE和COMPANY表?

答案 2 :(得分:1)

enter image description here

不要忘记聚合 - 对于连接人员 - 它应该是公司,对于人员等级它可以。

不要忘记多样性 - 一个人可以有工作。 一个人总是有一些他/她达到的最好成绩。 对于任何等级,至少有一个人。 公司可以拥有任意数量的员工,包括0。

在现实生活中,我的名字连接只有在他们的名字与他们指向的类不同时才会结束。但是为了研究,最好总是使用结束名 - 以便更好地理解。

主要的东西 - 箭头。一个人提到了公司,但反之亦然。 与成绩相同。

通知未来 - 通过设置箭头/十字,多重性和聚合/组合(如果有),您可以检查图表的正确性。如果您尝试完成图表,您会注意到,您不能为图#1和#3执行此操作。所以,他们很糟糕。

当然,你无法检查你的模型和现实生活之间的联系,只有模型的内在逻辑。但这是一个很好的非常有用的检查。不要忽视它。

至于第三个诊断,似乎是你在混合术语“等级”和“专业化”。如果您需要同时考虑它们,则需要以下诊断:

enter image description here

“下一个大于”连接设置了等级的阶梯。

如果您只需要专业而不需要成绩,请简化图表 - 将所有与“成绩”及其类别的连接放在一起。请注意,你会得到一个你根本没有提到过的诊断。