---------------------------建立TD_FK 索引------------------------------
create index TD_FK on Teacher (
院系代号 ASC
)
go
alter table Major
add constraint FK_MAJOR_DM_DEPARTME foreign key (院系代号)
references Department (院系代号)
go
alter table SC
add constraint FK_SC_SC_STUDENTS foreign key (学号)
references StudentsInfo (学号)
go
alter table SC
add constraint FK_SC_SC2_COURSE foreign key (课程号)
references Course (课程号)
go
alter table StudentsInfo
add constraint FK_STUDENTS_SD_DEPARTME foreign key (院系代号)
references Department (院系代号)
go
alter table StudentsInfo
add constraint FK_STUDENTS_SM_MAJOR foreign key (专业号)
references Major (专业号)
go
alter table TC
add constraint FK_TC_TC_COURSE foreign key (课程号)
references Course (课程号)
go
alter table TC
add constraint FK_TC_TC2_TEACHER foreign key (教师号)
references Teacher (教师号)
go
alter table Teacher
add constraint FK_TEACHER_TD_DEPARTME foreign key (院系代号)
references Department (院系代号)
go
(2) 数据库中表的设计
当上面的代码运行成功后后,在数据库的Student中便会生成相应的表,包括学生基本信息表、课程表、教师,专业和学院表、以及SC和TC表。数据库中生成表后,可以对其进行设计,如下图便是数据库中的学生基本信息表,我们可以对其每一列以及其数据类型、取值范围和是否是主码是否可以为空等信息进行设置后或修改。例如下图,该表的初始状态只有学号不允许为空,但是这是很不符合实际情况的,在实际中我们往往还需要确定学生的班级、姓名、入学时间所在院系与所属专业等情况,要求把这些信息也设置为不为空。
图15 对数据库中学生基本信息表的设计
(3)数据的载入
数据的载入是一个非常繁杂和重要的过程需要很大的工作量,可分为人工输入与其它格式数据文件导入。该系统只是一个简单的实验系统,所以采用手工输入少量的数据可满足实验要求即可。下面两个表分别显示了学生基本信息的录入与课程信息的录入。
表7 学生基本信息的录入
表8 课程信息的录入2.6触发器与存储过程设计
2.6.1触发器设计
(1)StudentInfo 表上的触发器 对于学生基本信息表,当学生信息修改时,其它表中若有对应的该信息时,应该对其进行修改;当学生信息删除时,对应的如SC表中的对应学生成绩信息也应该自动修改:
① Supdata:
CREATE TRIGGER Supdate ON [dbo].[StudentsInfo]
FOR UPDATE
AS
update SC
set 学号 = ( select 学号 from inserted)
where SC.学号=(select 学号 from deleted) ;
② Sdelete:
CREATE TRIGGER Sdelete ON [dbo].[StudentsInfo]
FOR DELETE
AS
DELETE
FROM SC
WHERE SC.学号=(select 学号 from deleted) ;
(2)Course表上的触发器 其功能是当一个课程的信息改变时,或当一个课程的信息被删除时,相应的在SC和TC表中的相应信息修改或删除。
① Cupdata:
CREATE TRIGGER Cupdate ON [dbo].[Course]
FOR UPDATE
AS
update SC
set 课程号 = ( select 课程号 from inserted)
where SC.课程号=(select 课程号 from deleted)
update TC
set TC.课程号 = ( select 课程号 from inserted)
where TC.课程号=(select 课程号 from deleted) ;
② Cdelete:
CREATE TRIGGER Cdelete ON [dbo].[Course]
FOR DELETE
AS
DELETE
FROM SC
WHERE SC.课程号=(select 课程号 from deleted)
DELETE
FROM TC
WHERE TC.课程号=(select 课程号 from deleted);
(3)Department表上的触发器 当院系的代号改变时,对应的学生所在院系、专业所属院系以及教师所在院系都应当做相应的更改。
① Dupdata:
CREATE TRIGGER Dupdate ON [dbo].[Department]
FOR UPDATE
AS
www.751com.cn
号from inserted)
where StudentsInfo.专业号=(select 专业号 from deleted)
update Major
set Major.专业号 = ( select专业号from inserted)
where Major.专业号=(select 专业号 from deleted)
update Teacher
set Teacher.专业号 = ( select专业号from inserted)
where Teacher.专业号=(select 专业号 from deleted);
(4)Teacher 表上的触发器 当教师号改变或教师离任时,TC表上的信息应相应的得到改变。
上一页 [1] [2] [3] [4] [5] [6] 下一页