题目:第9题
学校工资理系统
l 实现部门职务职称等基信息理
l 实现教职工信息理
l 实现工资项目理工资项目设启标志加扣标志
l 实现教职工工资项目工资理
l 创建触发器教职工工资项目表中插入记录删记录时动修改该职工应发工资数实发工资数
l 创建存储程统计某月种工资项目发放总
l 创建视图查询员工应发应扣实发工资
l 建立数库相关表间参完整性约束
关系模式设计
根题意实现求功处设计5关系具体介绍表形式示:
①职工(职工编号姓名性年龄部门职称)
Tno
Tname
Tsex
Tage
Department
Title
②职位变更(职工编号前职称现职称变更日期)
Tno
Title1
Title2
Dates
③考勤(职工编号加班次数缺勤次数考勤日期)
Tno
Overtime
Absence
Dates
④基工资表(职称基工资)
Title
Base
⑤工资表(职工编号基工资加班工资缺勤扣钱实发工资)
Tno
Base
Overpay
Docked
Wages
二 全局ER图参1
职称
基工资
基工资表
参2
基工资
职工编号
工资表
职称
年龄
部门
加班工资
缺勤扣钱
实发工资
加班次数
缺勤次数
考勤日期
职工编号
接收考勤
考勤
变更日期
现职称
前职称
职工编号
职位变更
职位变更记录
性
姓名
职工编号
职工
三物理设计
1建立数库学校工资理系统
CREATE DATABASE SchoolSalary
2建立职工信息表
CREATE TABLE Teacher (
Tno CHAR(20) PRIMARY KEY *职工号*
Tname CHAR(20) UNIQUE *职工名*
Tsex CHAR(10) NOT NULL CHECK(Tsex in('男''女')) *性*
Tage INT NOT NULL *年龄*
Depart CHAR(20) *属部门*
Title CHAR(20))
3建立职称变更记录表
CREATE TABLE Change (
Tno CHAR(20) *职工号*
Title1 CHAR(20) *前职称*
Title2 CHAR(20) *现职称*
Dates INT *职位变更月份*
FOREIGN KEY (Tno) REFERENCES Teacher(Tno)
)
4建立考勤表
CREATE TABLE Attendance (
Tno CHAR(20) *职工号*
Overtime INT *加班次数*
Absence INT *缺勤次数*
Dates INT *月份*
FOREIGN KEY (Tno) REFERENCES Teacher(Tno)
ON DELETE CASCADE
ON UPDATE CASCADE
)
5建立基工资表
CREATE TABLE Refer ( *工资参表*
Title CHAR(20) PRIMARY KEY *职位*
Salary FLOAT *应金额*
)
6建立工资表
CREATE TABLE Pay (
Tno CHAR(20) *职工号*
Base FLOAT *基工资*
Overpay FLOAT *加班费*
Docked FLOAT *缺勤扣工资*
Wages FLOAT *实际应工资*
FOREIGN KEY(Tno) REFERENCES Teacher(Tno)
)
三 数库完整性设计
1表名应键
职工(Teacher)
职工编号(Tno)
职称变更记录(Change)
职工编号(Tno)
考勤(Attendance)
职工编号(Tno)
基工资表(Refer)
职称(Title)
工资表(Pay)
职工编号(Tno)
2参完整性设计
21职称变更记录(Change)职工编号(Tno)设外键
FOREIGN KEY (Tno) REFERENCES Teacher(Tno)
22考勤(Attendance)职工编号(Tno)设外键
FOREIGN KEY (Tno) REFERENCES Teacher(Tno)
ON DELETE CASCADE
ON UPDATE CASCADE
实现更新删时级联操作
23工资表(Pay)职工编号(Tno)设外键
FOREIGN KEY (Tno) REFERENCES Teacher(Tno)
3CHECK约束设计
职工(Teacher)中性进行CHECK约束:
CHECK(Tsex in('男''女'))
求性必须男女
4触发器设计
41职工表中建立职称变更触发器某职工职称发生变化时职称变更记录表中动插入记录记录变更前职称名变更日期
CREATE TRIGGER Title_change
ON Teacher
FOR UPDATE
AS
BEGIN
DECLARE @Tno CHAR(20)
SELECT @TnoinsertedTno FROM inserted
SELECT * FROM Teacher WHERE @TnoTeacherTno
DECLARE @Title1 CHAR(20)
SELECT @Title1deletedTitle FROM deleted
DECLARE @Title2 CHAR(20)
SELECT @Title2TeacherTitle FROM Teacher WHERE @TnoTeacherTno
IF @Title1@Title2
BEGIN
INSERT INTO Change(TnoTitle1Title2) VALUES(@Tno@Title1@Title2)
END
END
GO
42职工表中建立基工资触发器插入新职工记录时根职称参基工资表工资表中动更新基工资默认加班工资缺勤扣钱均0
CREATE TRIGGER Basic_pay
ON Teacher
FOR insert
AS
BEGIN
DECLARE @Base FLOAT@tno CHAR(20)
SELECT @tnoinsertedTno FROM inserted
SELECT @BaseReferSalary FROM Referinserted WHERE ReferTitleinsertedTitle
INSERT INTO Pay(TnoBaseOverpayDockedWages) VALUES(@tno@Base00@Base)
END
GO
43考勤表中建立考勤工资触发器职工插入考勤信息动工资表中更新工资信息算法里设计加班次加200块缺勤次扣100块
CREATE TRIGGER A_pay
ON Attendance
FOR INSERT
AS
BEGIN
DECLARE @tno CHAR(20)
DECLARE @a FLOAT
DECLARE @b FLOAT
DECLARE @c INT
DECLARE @d INT
DECLARE @e FLOAT
SELECT @tnoinsertedTno FROM inserted
SELECT @aOverpay FROM Pay WHERE PayTno@tno
SELECT @bDocked FROM Pay WHERE PayTno@tno
SELECT @cOvertime FROM Attendance WHERE AttendanceTno@tno
SELECT @dAbsence FROM Attendance WHERE AttendanceTno@tno
SELECT @eWages FROM Pay WHERE PayTno@tno
UPDATE Pay SET PayOverpay@a+200*@c WHERE PayTno@tno
UPDATE Pay SET PayDocked@b+100*@d WHERE PayTno@tno
UPDATE Pay SET PayWages@e+@a+200*@c(@b+100*@d) WHERE PayTno@tno
END
44职称变更记录表中建立基工资变更触发器某职工职称变更记录职称变更记录表插入记录工资表中动更新工资信息
CREATE TRIGGER Change_pay
ON Change
FOR UPDATEINSERT
AS
BEGIN
DECLARE @A CHAR(20)
DECLARE @B CHAR(20)
DECLARE @C FLOAT
DECLARE @D FLOAT
SELECT @AinsertedTitle2 FROM inserted
SELECT @BinsertedTno FROM inserted
SELECT @CPayOverpay FROM Payinserted WHERE PayTno@B
SELECT @DPayDocked FROM Payinserted WHERE PayTno@B
IF @A'普通教师'
UPDATE Pay SET PayBase4000PayWages4000+@C@D WHERE @BPayTno
IF @A'高级教师'
UPDATE Pay SET PayBase5000PayWages5000+@C@D WHERE @BPayTno
IF @A''
UPDATE Pay SET PayBase6000PayWages6000+@C@D WHERE @BPayTno
IF @A'校长'
UPDATE Pay SET PayBase7000PayWages7000+@C@D WHERE @BPayTno
END
GO
五 数库视图设计
查职工应实发工资:
CREATE VIEW Pay_view
AS
SELECT TnoBase+Overpay GetsDockedWages
FROM Pay
六存储程设计
CREATE PROCEDURE ALL_pay
AS
SELECT SUM(Base) 总基工资SUM(Overpay) 总加班工资SUM(Docked) 总扣工资SUM(Wages) 总实发工资
FROM Pay
七实验结果
(1)基工资表
职工基工资职称参表
(2)职工表添加记录结果
添加Basic_pay触发器触发工资表中动插入基工资信息:
(3)现李楠王峰职称提级吴鹏降级职称更新Title_change触发器触发首先职称变更记录表中插入相应记录:
然工资表动更新三基工资改变:
(4)考勤表中添加记录
A_pay触发器触发工资表中加班次加200缺勤次扣100动更新职工工资信息:
(5)视图结果
(6)存储程结果
八实验心
次数库题目课程设计运知识较丰富考虑点较需定思考整设计程中仅回顾理知识更重锻炼SQL语言编写力题目求特复杂设计数库参完整性约束较简单触发器设计功实现正次实验精髓解数库实性方面行性希数库实践更进步
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档