当前位置: 首页 > news >正文

【数据分析面试】54.员工信息(HR)数据库搭建

在这里插入图片描述

题目

由于发展需求,进一步提高公司人员统筹管理的能力,公司决定要重新升级人力数据管理系统。

现在,你的任务是为公司重新设计和搭建一个员工信息数据库

提示:考虑HR管理系统的功能,比如人员信息、入职时间、离职时间、薪资数据等等。
![[54.员工信息(HR)数据库搭建-20240527140133735.webp|507]]

数据库表设计

1. Employees(员工表)

存储员工的基本信息。

  • EmployeeID: INT, 主键
  • FirstName: VARCHAR(50)
  • LastName: VARCHAR(50)
  • Gender: CHAR(1) (M/F)
  • BirthDate: DATE
  • HireDate: DATE
  • PositionID: INT, 外键(引用Positions表)
  • DepartmentID: INT, 外键(引用Departments表)
  • ManagerID: INT, 外键(引用本表)
  • Email: VARCHAR(100)
  • Phone: VARCHAR(15)
  • Address: VARCHAR(200)
  • City: VARCHAR(50)
  • State: VARCHAR(50)
  • ZipCode: VARCHAR(10)
  • EmploymentStatus: VARCHAR(20)
  • EmergencyContactName: VARCHAR(100)
  • EmergencyContactPhone: VARCHAR(15)
  • EmergencyContactRelation: VARCHAR(50)
  • TerminationDate: DATE
  • TerminationReason: VARCHAR(255)
2. Departments(部门表)

存储公司的部门信息。

  • DepartmentID: INT, 主键
  • DepartmentName: VARCHAR(100)
  • Location: VARCHAR(100)
  • ManagerID: INT, 外键(引用Employees表)
  • CreatedDate: DATE
  • UpdatedDate: DATE
3. Positions(职位表)

存储职位信息。

  • PositionID: INT, 主键
  • PositionTitle: VARCHAR(100)
  • SalaryGrade: INT
  • DepartmentID: INT, 外键(引用Departments表)
  • JobDescription: TEXT
  • CreatedDate: DATE
  • UpdatedDate: DATE
4. Salaries(薪资表)

存储员工的薪资信息。

  • SalaryID: INT, 主键
  • EmployeeID: INT, 外键(引用Employees表)
  • SalaryAmount: DECIMAL(10, 2)
  • EffectiveDate: DATE
  • EndDate: DATE
5. Attendances(考勤表)

存储员工的考勤记录。

  • AttendanceID: INT, 主键
  • EmployeeID: INT, 外键(引用Employees表)
  • Date: DATE
  • CheckInTime: TIME
  • CheckOutTime: TIME
6. PerformanceReviews(绩效评估表)

存储员工的绩效评估记录。

  • ReviewID: INT, 主键
  • EmployeeID: INT, 外键(引用Employees表)
  • ReviewDate: DATE
  • ReviewerID: INT, 外键(引用Employees表)
  • Rating: INT
  • Comments: TEXT
  • Goals: TEXT

说明

  1. Employees表包含了员工的基本信息,并通过外键关联到DepartmentsPositions表。每个员工可能有一个上级经理,这通过ManagerID来实现自引用。
  2. Departments表记录了部门信息,每个部门可以有一个经理。
  3. Positions表记录了职位信息,包括薪资等级和所属部门。
  4. Salaries表存储了员工的薪资记录,允许追踪薪资的变化。
  5. Attendances表记录了员工每日的考勤情况。
  6. PerformanceReviews表记录了员工的绩效评估信息,包括评分和评论。

这个Schema设计可以覆盖大部分HR系统的基本需求,但在实际应用中可能还需要根据具体需求进行扩展和修改。

代码示例(部分)

以下是SQL代码,可以创建相应的表并处理外键引用,以确保表能够正确创建。注意表的创建顺序以及外键约束的处理。

-- 创建 Departments 表
CREATE TABLE Departments (DepartmentID INT PRIMARY KEY,DepartmentName VARCHAR(100),Location VARCHAR(100),ManagerID INT,CreatedDate DATE,UpdatedDate DATE
);-- 创建 Positions 表
CREATE TABLE Positions (PositionID INT PRIMARY KEY,PositionTitle VARCHAR(100),SalaryGrade INT,DepartmentID INT,JobDescription TEXT,CreatedDate DATE,UpdatedDate DATE,FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);-- 创建 Employees 表
CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,FirstName VARCHAR(50),LastName VARCHAR(50),Gender CHAR(1) CHECK (Gender IN ('M', 'F')),BirthDate DATE,HireDate DATE,PositionID INT,DepartmentID INT,ManagerID INT,Email VARCHAR(100),Phone VARCHAR(30),Address VARCHAR(200),City VARCHAR(50),State VARCHAR(50),ZipCode VARCHAR(10),EmploymentStatus VARCHAR(20),EmergencyContactName VARCHAR(100),EmergencyContactPhone VARCHAR(30),EmergencyContactRelation VARCHAR(50),TerminationDate DATE,TerminationReason VARCHAR(255),FOREIGN KEY (PositionID) REFERENCES Positions(PositionID),FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID),FOREIGN KEY (ManagerID) REFERENCES Employees(EmployeeID)
);-- 更新 Departments 表以增加外键约束
ALTER TABLE Departments
ADD CONSTRAINT fk_departments_manager
FOREIGN KEY (ManagerID) REFERENCES Employees(EmployeeID);

ER图 (参考)

![[HR Saas 人力数据管理系统-20240520004216312.webp]]

*更多详细答案可查看原文链接或关注公众号查阅。

在这里插入图片描述

http://www.lryc.cn/news/355252.html

相关文章:

  • 通过JavaScript本地存储数据
  • CTF-web-攻防世界-3
  • 【附代码案例】深入理解 PyTorch 张量:叶子张量与非叶子张量
  • TypeScript 学习笔记(七):TypeScript 与后端框架的结合应用
  • Linux基础知识点总结!超详细
  • 中小学校活动怎样投稿给媒体报道宣传?
  • Python代码:十七、生成列表
  • C++ 程序的基本要素
  • 藏汉翻译工具有哪些?这三款工具简单好用
  • three.js官方案例webgl_loader_fbx.html学习
  • 51单片机-实机演示(单多个数码管)
  • Pytorch深度学习实践笔记10(b站刘二大人)
  • QT5.15.2及以上版本安装
  • 5月27日
  • python给三维点上色,并添加颜色柱
  • Ubuntu22.04之解决:忘记登录密码(二百三十二)
  • stream-并行流
  • 插件“猫抓”使用方法 - 浏览器下载m3u8视频 - 合并 - 视频检测下载 - 网课下载神器
  • 【quarkus系列】构建可执行文件native image
  • linux(ubuntu)常用的代理设置
  • 红队攻防渗透技术实战流程:红队目标上线之Webshell免杀对抗
  • Habicht定理中有关子结式命题3.4.6的证明
  • 【Unity AR开发插件】如何快速地开发可热更的AR应用
  • Divisibility Part1(整除理论1)
  • 代码随想录算法训练营第三十七天 | 860.柠檬水找零、406.根据身高重建队列、452.用最少数量的箭引爆气球
  • GolangFoundation
  • 如果任务过多,队列积压怎么处理?
  • FTP协议——BFTPD基本操作(Ubuntu+Win)
  • 为什么需要分布式 ID?
  • MIT6.828 Lab2-3 Sysinfo