做网站 需要买云服务器吗,代刷网可以做网站地图,怎样做响应式网站,企业名录查询器免费版题目
由于发展需求#xff0c;进一步提高公司人员统筹管理的能力#xff0c;公司决定要重新升级人力数据管理系统。
现在#xff0c;你的任务是为公司重新设计和搭建一个员工信息数据库。
提示#xff1a;考虑HR管理系统的功能#xff0c;比如人员信息、入职时间、离职…
题目
由于发展需求进一步提高公司人员统筹管理的能力公司决定要重新升级人力数据管理系统。
现在你的任务是为公司重新设计和搭建一个员工信息数据库。
提示考虑HR管理系统的功能比如人员信息、入职时间、离职时间、薪资数据等等。
数据库表设计
1. Employees员工表
存储员工的基本信息。
EmployeeID: INT, 主键FirstName: VARCHAR(50)LastName: VARCHAR(50)Gender: CHAR(1) (M/F)BirthDate: DATEHireDate: DATEPositionID: 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: DATETerminationReason: VARCHAR(255)
2. Departments部门表
存储公司的部门信息。
DepartmentID: INT, 主键DepartmentName: VARCHAR(100)Location: VARCHAR(100)ManagerID: INT, 外键引用Employees表CreatedDate: DATEUpdatedDate: DATE
3. Positions职位表
存储职位信息。
PositionID: INT, 主键PositionTitle: VARCHAR(100)SalaryGrade: INTDepartmentID: INT, 外键引用Departments表JobDescription: TEXTCreatedDate: DATEUpdatedDate: DATE
4. Salaries薪资表
存储员工的薪资信息。
SalaryID: INT, 主键EmployeeID: INT, 外键引用Employees表SalaryAmount: DECIMAL(10, 2)EffectiveDate: DATEEndDate: DATE
5. Attendances考勤表
存储员工的考勤记录。
AttendanceID: INT, 主键EmployeeID: INT, 外键引用Employees表Date: DATECheckInTime: TIMECheckOutTime: TIME
6. PerformanceReviews绩效评估表
存储员工的绩效评估记录。
ReviewID: INT, 主键EmployeeID: INT, 外键引用Employees表ReviewDate: DATEReviewerID: INT, 外键引用Employees表Rating: INTComments: TEXTGoals: TEXT
说明
Employees表包含了员工的基本信息并通过外键关联到Departments和Positions表。每个员工可能有一个上级经理这通过ManagerID来实现自引用。Departments表记录了部门信息每个部门可以有一个经理。Positions表记录了职位信息包括薪资等级和所属部门。Salaries表存储了员工的薪资记录允许追踪薪资的变化。Attendances表记录了员工每日的考勤情况。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图 参考 *更多详细答案可查看原文链接或关注公众号查阅。