1

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

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

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

选项 1:在 TAB_EMPLOYEE 和 TAB_MANAGER 表中添加用户标识列。方案二:在TAB_USER中添加两列ObjectType、ObjectId,ObjectType包含EMPLOYEE或MANAGER,ObjectId包含相关id。

我不确定哪个选项更好,或者还有其他选项可以做到这一点吗?

4

1 回答 1

1

我会合并这些表,所以只有一张员工表。然后我会添加一个一元关系(指向自身的指针)来识别经理。最后,我会添加一个标志来识别内部员工(员工)。

于 2010-08-09T04:12:10.843 回答