我目前正在从事一个拥有员工,经理实体的项目。在一开始,我理所当然地认为经理必须是公司的雇员,因此他们是在工资系统中拥有相同EmployeeID的同一个人。基于此假设,我让Manager类扩展Employee类。

后来,我的客户告诉我,有时候有些经理不是公司的雇员,但他们仍然有员工向他们报告,这些经理也应该在系统中。员工和经理之间的继承关系已断开,现在我在数据库中有两个表(TAB_EMPLOYEE和TAB_MANAGER)的两个独立类。

经理和员工都可以使用用户名和密码访问系统。有一个名为User的类,系统应提供为经理和雇员创建用户帐户的功能。在以前的情况下,经理扩展了员工,我可以为经理创建一个用户帐户,并为该用户分配两个角色(ROLE_EMPLOYEE,ROLE_MANAGER)。但是现在,如果已经为某个雇员创建了一个用户帐户(该雇员也是经理,那么除了TAB_EMPLOYEE中的一条记录之外,TAB_MANAGER中还有一条记录),我如何为他作为经理创建一个用户帐户?我知道我可以将ROLE_MANAGER分配给现有用户(以便该用户具有两个角色:ROLE_EMPLOYEE,ROLE_MANAGER),但是在用户登录后,我必须使用用户名或用户ID加载引用的对象(Employee和/或经理)。为此,我必须选择:

选项1:在TAB_EMPLOYEE和TAB_MANAGER表中都添加一个userid列。
选项2:添加两列ObjectType,TAB_USER中的ObjectId,ObjectType包含EMPLOYEE或MANAGER,而ObjectId包含相关的ID。

我不确定哪个选项更好,还是有其他选择吗?

最佳答案

我将合并这些表,以便只剩下一个职员表。然后,我将添加一元关系(指向自身的指针)以标识管理器。最后,我将添加一个标志以标识内部员工(员工)。

关于java - 在设计员工和经理关系时需要帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3437285/

10-10 15:00