项目描述:为一个中型公司设计员工管理系统,有多级部门,以三级为例,员工可以在不同的部门担任领导。该系统需要能查询到员工的基本信息,可以记录员工的工资,奖金,惩罚,每天的通勤情况,请假情况,每月发放调休6小时,每个季度发放调休10h,支持员工查询剩余调休时长,请设计该系统数据库的表
为了设计一个满足中型公司需求的员工管理系统,我们需要考虑多级部门结构、员工的基本信息、工资、奖金、惩罚、通勤情况、请假情况以及调休管理。以下是详细的数据库表设计:
3.1. 需求分析
- 多级部门结构:支持一级、二级、三级部门及更多级部门。
- 员工信息管理:记录员工的基本信息、所属部门。 员工薪资结构表
- 领导关系:员工可以在不同部门担任领导职务。
- 工资和奖金管理:记录员工的工资、奖金和扣款。
奖惩记录:记录员工的获奖和受惩情况。- 通勤记录:记录员工的每日打卡时间。
- 请假记录:记录员工的请假情况。
- 调休管理:记录员工的调休时长,支持查询剩余调休时长。
3.2. 模块化设计
根据需求设计模块,每个模版尽量对应一个表,模块化设计有助于清晰的组织数据,避免数据冗余,模块设计如下:
- 部门管理:
-
- 部门表():存储部门信息及其层级关系。
- 领导关系表():存储员工与部门的领导关系。
- 员工信息管理:
-
- 员工表():存储员工的基本信息和所属部门。
- 工资和奖金管理:
-
- 工资表():存储员工的工资、奖金和扣款信息。
- 奖惩记录管理:
-
- 奖惩记录表():存储员工的获奖和受惩记录。
- 考勤管理:
-
- 通勤记录表():记录员工的每日打卡时间。
- 请假记录表():记录员工的请假情况。
- 调休管理:
-
- 调休记录表():记录员工的调休使用情况。
- 调休余额表():记录员工的调休余额。
3.3. 使用范式规范设计
3.3.1. 第一范式(1NF)
-
- 保证每个表的每个字段不可再分,具备原子性
3.3.2. 第二范式(2NF)
-
- 部门与员工要放在两个表
3.3.3. 第三范式(3NF)
-
- 员工的薪资,调休,奖惩记录,考勤等与员工信息表分开,避免以来传递,提高插入与删除的效率,避免数据冗余。
3.4. 数据约束
3.4.1. 约束设计:
- 外键约束:
-
- 确保员工所属部门ID引用表中的有效记录。
- 确保工资记录中的员工ID引用表中的有效记录。
- 确保奖惩记录中的员工ID引用表中的有效记录。
- 唯一约束:
-
- 确保员工ID和部门ID的唯一性。
3.5. 优化与扩展
-
- 后续可以继续学习索引与视图等操作优化数据库
- 预留一些字段,使该系统具备扩展性
3.6. 数据库表设计
3.6.1. 部门表(Departments)
存储部门信息,包括部门的层级关系。
3.6.2. 员工表(Employees)
存储员工的基本信息。
3.6.3. 领导关系表(Leaderships)
存储员工作为领导的部门信息。
3.6.4. 工资表(Salaries)
存储员工的工资信息。
3.6.5. 奖惩记录表(AwardsPunishments)
存储员工的获奖或受惩记录。
3.6.6. 通勤记录表(Commutes)
存储员工的通勤记录。
3.6.7. 请假记录表(Leaves)
存储员工的请假记录。
3.6.8. 调休记录表(CompensatoryLeaves)
存储员工的调休记录。
3.6.9. 员工调休余额表(CompensatoryLeaveBalances)
存储员工的调休余额。
3.7. 数据库表结构说明
3.7.1. 部门表(Departments)
- department_id:部门的唯一标识。
- department_name:部门名称。
- parent_department_id:上级部门的ID,用于表示部门的层级关系。如果该部门是一级部门,则为。
3.7.2. 员工表(Employees)
- employee_id:员工的唯一标识。
- employee_name:员工姓名。
- gender:员工性别,表示男性,表示女性。
- date_of_birth:员工出生日期。
- hire_date:员工入职日期。
- department_id:员工所属部门的ID,外键关联表。
3.7.3. 领导关系表(Leadership)
- leadership_id:领导关系的唯一标识。
- employee_id:领导的员工ID,外键关联表。
- department_id:该员工领导的部门ID,外键关联表。
3.7.4. 工资表(Salaries)
- salary_id:工资记录的唯一标识。
- employee_id:员工ID,外键关联表。
- basic_salary:基本工资。
- bonus:奖金。
- deduction:扣款。
3.7.5. 奖惩记录表(AwardsPunishments)
- record_id:奖惩记录的唯一标识。
- employee_id:员工ID,外键关联表。
- description:奖惩描述。
- date:奖惩日期。
- type:奖惩类型,表示获奖,表示受惩。
3.7.6. 通勤记录表(Commutes)
- commute_id:通勤记录的唯一标识。
- employee_id:员工ID,外键关联表。
- commute_date:通勤日期。
- check_in_time:打卡时间(上班)。
- check_out_time:打卡时间(下班)。
3.7.7. 请假记录表(Leaves)
- leave_id:请假记录的唯一标识。 员工薪资结构表
- employee_id:员工ID,外键关联表。
- leave_start_date:请假开始日期。
- leave_end_date:请假结束日期。
- leave_reason:请假原因。
3.7.8. 调休记录表(CompensatoryLeaves)
- leave_id:调休记录的唯一标识。
- employee_id:员工ID,外键关联表。
- leave_date:调休日期。
- leave_hours:调休时长(小时)。
3.7.9. 员工调休余额表(CompensatoryLeaveBalances)
- balance_id:调休余额记录的唯一标识。
- employee_id:员工ID,外键关联表。
- monthly_hours:每月发放的调休时长(默认6小时)。
- quarterly_hours:每季度发放的调休时长(默认10小时)。
- remaining_hours:剩余调休时长。
后续继续学习表数据与查表相关的知识,实现员工管理系统功能查询的实现