【发布时间】:2012-06-20 09:12:36
【问题描述】:
我想知道是否可以为员工提供主表和明细表?
根据要求,可以按部门按国家/地区和员工代码在报告级别过滤数据。
如果员工的部门或国家代码发生更改,则更改将进入明细表,旧记录将设置为 IS_ACTIVE = 'T'。
----------主表------------------------ --------------
**EMPLOYEE_CODE** VARCHAR2(20 BYTE) NOT NULL,
EMAIL VARCHAR2(100 BYTE)
FIRST_NAME VARCHAR2(50 BYTE)
LAST_NAME VARCHAR2(50 BYTE)
WORKING_HOURS NUMBER
----------明细表------------------------ --------------
**PK_USER_DETAIL_ID** NUMBER,
FK_EMPLOYEE_CODE VARCHAR2(20 BYTE),
FK_GROUP NUMBER,
FK_DEPARTMENT_CODE NUMBER,
FK_EMPLOYER_COUNTRY_CODE VARCHAR2(5 BYTE),
FK_MANAGER_ID VARCHAR2(20 BYTE),
FK_ROLE_CODE VARCHAR2(6 BYTE),
START_DATE DATE,
END_DATE DATE,
IS_ACTIVE VARCHAR2(1 BYTE),
INACTIVE_DATE DATE
员工表将与时间表表链接,对于时间表报告,数据可以按部门、国家和员工代码进行过滤。
选项:我
- 拥有一个具有一个主键的员工表,并在为员工更新部门或角色时创建一个新条目。
- 在时间表表格中添加国家和部门代码。
--> 这样我就不需要搜索员工表了。
选项:II
- 有主表和明细表。
- 在时间表表格中添加国家和部门代码。
--> 这样我就不需要搜索员工表,而且我将拥有主从表
选项:新
- 有主表和明细表。
- 时间表表将包含 EmpCode。
- 如果用户移动到新的位置或更改部门,则在明细表中插入新行,使用新的部门代码和相同的员工编号。
- 更新旧行并设置结束日期字段,因此如果他更改了他的位置或部门,则需要更新结束日期字段。
哪个是最好的选择,还有其他更好的选择吗?
【问题讨论】:
标签: sql-server oracle database-design schema history