设计一个数据库的教师工资管理系统 1、简易需求(类似作业中画E_R的需求要求写) 2、概念结构设计(画E_R图)至少包含四个实体,且实体间有联系。 3、设计表的结构 4、创建数据库 具体要求如下:系统最少要有四个实体,且实体与实体之间必须有联系。 最少包含一个触发器。 表要有完整性约束。 建表(包含必要的约束)、表的级联、基础数据添加、触发器器和存储过程的建立。 5、创建视图。 6、创建索引。
时间: 2023-12-30 11:04:14 浏览: 80
数据库课程设计----学校的工资管理系统的设计
5星 · 资源好评率100%
1、简易需求:
该教师工资管理系统可以记录每个教师的基本信息以及工资情况,包括教师姓名、性别、出生日期、联系方式、职称、所属学院、工号、入职日期、基本工资、奖金、扣除项等信息,同时可以进行工资的计算、修改、查询等操作。
2、概念结构设计:
实体:教师、学院、工资、扣除项
联系:教师与学院之间为“所属关系”,教师与工资之间为“拥有关系”,工资与扣除项之间为“包含关系”。
![ER图](https://img-blog.csdnimg.cn/20211101201524929.png)
3、设计表的结构:
教师表(Teacher):教师ID、姓名、性别、出生日期、联系方式、职称、所属学院ID、入职日期。
学院表(College):学院ID、学院名称。
工资表(Salary):工资ID、基本工资、奖金、扣除项、实发工资、所属教师ID。
扣除项表(Deduction):扣除项ID、扣除项名称、扣除金额。
4、创建数据库:
创建数据库TeacherSalary,包含上述四张表及其关系,同时在工资表中添加触发器,实现工资计算的功能,建立必要的约束。
创建表的SQL语句如下:
```sql
CREATE TABLE Teacher(
TeacherID INT PRIMARY KEY,
Name VARCHAR(20),
Gender CHAR(2),
Birthday DATE,
Phone VARCHAR(20),
Title VARCHAR(20),
CollegeID INT,
EntryTime DATETIME,
FOREIGN KEY(CollegeID) REFERENCES College(CollegeID)
);
CREATE TABLE College(
CollegeID INT PRIMARY KEY,
CollegeName VARCHAR(50)
);
CREATE TABLE Salary(
SalaryID INT PRIMARY KEY,
BasicSalary FLOAT,
Bonus FLOAT,
Deduction FLOAT,
Salary FLOAT,
TeacherID INT,
FOREIGN KEY(TeacherID) REFERENCES Teacher(TeacherID)
);
CREATE TABLE Deduction(
DeductionID INT PRIMARY KEY,
DeductionName VARCHAR(50),
DeductionAmount FLOAT
);
```
创建触发器的SQL语句如下:
```sql
CREATE TRIGGER trg_SalaryCalculation ON Salary
AFTER INSERT, UPDATE
AS
BEGIN
UPDATE Salary
SET Salary = BasicSalary + Bonus - Deduction
FROM Salary s
JOIN inserted i ON s.SalaryID = i.SalaryID
END
```
5、创建视图:
创建一个名为TeacherInfo的视图,用于显示教师的基本信息和工资情况。
```sql
CREATE VIEW TeacherInfo AS
SELECT T.Name,T.Gender,T.Birthday,T.Phone,T.Title,C.CollegeName,S.BasicSalary,S.Bonus,S.Deduction,S.Salary
FROM Teacher T
JOIN College C ON T.CollegeID=C.CollegeID
JOIN Salary S ON T.TeacherID=S.TeacherID
```
6、创建索引:
为提高查询效率,可以为Teacher表和College表创建索引。
```sql
CREATE INDEX idx_TeacherID ON Teacher(TeacherID);
CREATE INDEX idx_CollegeID ON College(CollegeID);
```
阅读全文