当前位置: 首页 > 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]]

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

在这里插入图片描述

相关文章:

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

题目 由于发展需求,进一步提高公司人员统筹管理的能力,公司决定要重新升级人力数据管理系统。 现在,你的任务是为公司重新设计和搭建一个员工信息数据库。 提示:考虑HR管理系统的功能,比如人员信息、入职时间、离职…...

通过JavaScript本地存储数据

文章目录 本地存储本地存储分类 - localStorage本地存储分类 - sessionStorage存储复杂数据类型解决方法 本地存储 数据存储在用户浏览器中设置、读取方便、甚至页面刷新都不丢失数据容量较大,sessionStorage和localStorage约5M左右 本地存储分类 - localStorage …...

CTF-web-攻防世界-3

1、inget (1)、进入网站,提示传入id值 (2)、用一些闭合方式,返回都一样。 (3)、尝试万能密码。获得flag 2、mfw (1)、页面没有什么特殊的异常,使用dirsearch进行目录扫描,有一些.git文件。看样子是.git文件泄露。 使用githa…...

【附代码案例】深入理解 PyTorch 张量:叶子张量与非叶子张量

在 PyTorch 中,张量是构建神经网络模型的基本元素。了解张量的属性和行为对于深入理解模型的运行机制至关重要。本文将介绍 PyTorch 中的两种重要张量类型:叶子张量和非叶子张量,并探讨它们在反向传播过程中的行为差异。 叶子张量与非叶子张…...

TypeScript 学习笔记(七):TypeScript 与后端框架的结合应用

1. 引言 在前几篇学习笔记中,我们已经探讨了 TypeScript 的基础知识和在前端框架(如 Angular 和 React)中的应用。本篇将重点介绍 TypeScript 在后端开发中的应用,特别是如何与 Node.js 和 Express 结合使用,以构建强类型、可维护的后端应用。 2. TypeScript 与 Node.js…...

Linux基础知识点总结!超详细

Linux 的学习对于一个IT工程师的重要性是不言而喻的,学好它是工程师必备修养之一。 Linux 基础 操作系统 操作系统Operating System简称OS,是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁。 操作系统…...

中小学校活动怎样投稿给媒体报道宣传?

身为一名学校老师,同时承担起单位活动向媒体投稿的宣传重任,我深知每一次校园活动背后的故事,都承载着师生们的辛勤汗水与教育的无限可能。起初,我满怀着对教育的热情,希望通过文字传递校园的温暖与光芒,却在投稿的道路上遇到了前所未有的挑战。 最初,我选择了最传统的路径——…...

Python代码:十七、生成列表

1、题目 描述: 一串连续的数据用什么记录最合适,牛牛认为在Python中非列表(list)莫属了。现输入牛牛朋友们的名字,请使用list函数与split函数将它们封装成列表,再整个输出列表。 输入描述: …...

C++ 程序的基本要素

一 标识符 程序中变量、类型、函数和标号的名称称标识符。 a,b,name,int,char,main,void等。 系统已有的标识符称为关键字。 常见关键字 using,namespace,void,return; int,float,double,char,bool,signed,unsignex, long,short,const,true,false,sizeof if,else,for,do,whil…...

藏汉翻译工具有哪些?这三款工具简单好用

藏汉翻译工具有哪些?在全球化日益加剧的今天,语言交流成为连接不同文化、促进民族间沟通与理解的重要桥梁。藏汉翻译工具作为推动藏汉文化交流的得力助手,其在促进民族团结、增进相互理解方面的作用愈发凸显。本文将为您盘点市面上主流的藏汉…...

three.js官方案例webgl_loader_fbx.html学习

目录 1.1 添加库引入 1.2 添加必要的组件scene,camera,webrenderer等 1.3 模型加载 1.4 半球光 1.5 动画 1.6 换个自己的fbx模型 1.7 fbx模型和fbx动画关联 1.7 html脚本全部如下 1.8 fbx.js全部脚本如下 1.1 添加库引入 import * as THREE from three; import Stats …...

51单片机-实机演示(单多个数码管)

仿真链接&#xff1a; http://t.csdnimg.cn/QAPhx 目录 一.引脚位置 二.多个显示 三 扩展 一.引脚位置 注意P00 - >A ; 这个多个的在左边,右边的A到B是控制最右边那个单个的. 接下来上显示单个的代码 #include <reg52.h> #include <intrins.h> #define u…...

Pytorch深度学习实践笔记10(b站刘二大人)

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;pytorch深度学习 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…...

QT5.15.2及以上版本安装

更新时间&#xff1a;2024-05-20 安装qt5.15以上版本 系统&#xff1a;ubuntu20.04.06 本文安装&#xff1a;linux-5.15.2 下载安装 # 安装编译套件g sudo apt-get install build-essential #安装OpenGL sudo apt-get install libgl1-mesa-dev# 下载qt安装器 https://downl…...

5月27日

思维导图 #include <iostream>using namespace std; namespace st_open {string a1;string retval(string a1);} using namespace st_open; int main() {getline(cin,a1);cout << "逆置前的字符串&#xff1a;" << a1 << endl;a1rerval(a1);…...

python给三维点上色,并添加颜色柱

python的matplotlib库给三维点上色&#xff0c;并添加颜色柱 import numpy as np from pathlib import Path import matplotlib.cm as cm import matplotlib.pyplot as plt# 可视化3d点迹 def Show3D_complete(points3D_result, color_list, save_path):# 指定起止点start_poin…...

Ubuntu22.04之解决:忘记登录密码(二百三十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

stream-并行流

定义 常规的流都是串行的流并行流就是并发的处理数据&#xff0c;一般要求被处理的数据互相不影响优点&#xff1a;数据多的时候速度更快&#xff0c;缺点&#xff1a;浪费系统资源&#xff0c;数据少的时候开启线程更耗费时间 模版 Stream<Integer> stream1 Stream.of…...

插件“猫抓”使用方法 - 浏览器下载m3u8视频 - 合并 - 视频检测下载 - 网课下载神器

前言 浏览器下载m3u8视频 - 合并 - 网课下载神器 chrome插件-猫抓 https://chrome.zzzmh.cn/info/jfedfbgedapdagkghmgibemcoggfppbb 步骤&#xff1a; P.s. 推荐大佬的学习视频&#xff01; 《WEB前端大师课》超级棒&#xff01; https://ke.qq.com/course/5892689#term_id…...

【quarkus系列】构建可执行文件native image

目录 序言为什么选择 Quarkus Native Image&#xff1f;性能优势便捷的云原生部署 搭建项目构建可执行文件方式一&#xff1a;配置GraalVM方式二&#xff1a;容器运行错误示例构建过程分析 创建docker镜像基于可执行文件命令式构建基于dockerfile构建方式一&#xff1a;构建mic…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...