五物理结构设计
(1) 数据结构:设置每一数据表的属性名,类型,宽度。 (2)设置参照属性:
成绩信息(课程号,学号,分数)的学号参照学生基本信息的学号。 成绩信息(课程号,学号,分数)的课程号参照课程基本信息的课程号。 (3)关系:
学生基本信息与成绩信息建立关于学号的关系。 课程基本信息与成绩信息建立关于课程号的关系。 (4)数据库名称:选课管理系统。 逻辑数据名称:选课管理系统。
数据文件:选课管理.mdf,初始大小:2MB,最大空间:20MB,增加量:2MB。 日志文件:选课管理_log.ldf,初始大小:2MB,最大空间:20MB,增加量:2MB。 备份设备名:rsxtbf,备份文件:rsbf.bak
(5)索引:对于每一数据表关于主关键字建立索引文件。 (6)设置触发器:
要求学生基本信息中的学号被修改时,学生的选修课信息表被修改。
要求在学生基本信息中插入新的学号时,学生的选修课信息表被插入新的学号。
要求在学生基本信息中删除工号时,学生的选修课信息表的学号被删除。
(7)设置视图:
为用户提供包含学号,姓名,性别,年龄,地址,专业班级,成绩,课程号的视图。 (8)设置存储过程:
根据用户所提交的成绩信息,为用户提供关于学生的学生基本信息(学号,姓名,
性别,年龄,地址,专业班级)。
根据用户所提交的成绩信息,为用户提供关于学生的选课信息(课程号,学号,
分数)。
6.源程序代码
6.1 数据库程序
create database 学生选课管理系统 on primary
(name=选课管理,
filename='d:\\选课管理.mdf', size=2,
maxsize=20, filegrowth=2) log on
(name=选课管理_log,
filename='d:\\ 选课管理_log.ldf', size=2,
maxsize=20,
filegrowth=2)
6.2 备份程序
sp_addumpdevice 'disk','rsxtbf','d:\\beifen\\rsbf.bak' go
backup database 学生选课管理系统 to rsbf
6.3 表程序
(1)学生表基本信息表的建立 Create table 学生基本信息
( 学号 char(9) not null,
专业班级 varchar(20) not null, 姓名 varchar(10) not null, 性别 varchar(2) not null, 年龄 char(2) ,
地址 varchar(20) not null, 电话 varchar(11) not null, constraint PK_STUDENT primary key (学号) )
(2)选修课程基本信息表的建立
Create table 选修课程基本信息
( 课程号 char(5) not null,
课程名 varchar(10) not null, 任课教师 varchar(8) not null,
教师电话 varchar(11) not null,
上课地点 varchar(20) not null, 学时 smallint not null, 学分 int not null,
constraint PK_COURSE primary key (课程号)
)
(3)成绩信息表的建立
Create table 成绩信息
( 成绩 varchar(3) not null,
学号 char(9) not null, 课程号 char(5) not null,
foreign key(学号) references 学生基本信息(学号),
foreign key(课程号) references 选修课程基本信息(课程号) )
6.4 视图
create view 学生基本信息视图(学号,专业班级,姓名,性别,年龄,地址,电话) as select.学生基本信息.学号,学生基本信息.专业班级,姓名,性别,年龄,地址,电话
from 学生基本信息,成绩信息
where 学生基本信息.学号=成绩信息.学号
6.5 存储过程定义
1.关于学生基本信息表的存储过程
create procedure yg
@xl varchar(8)=null
as if @xl is null
print '请输入学号!'
else
select 学生姓名,性别,地址,年龄,专业
from 学生基本信息,成绩信息
where学生基本信息.学号=成绩信息.学号
2.关于课程基本信息表的存储过程
create procedure yg
@xl varchar(8)=null
as if @xl is null
print '请输入课程号!'
else
select 学生姓名,性别,地址,年龄,专业
from 基本信息,成绩信息
where课程基本信息.课程号=成绩信息.课程号
6.6 触发器
(1).修改学号的触发器
create trigger goha on学生基本信息 for update as begin
if(columns_updated()&01)>0
update 成绩信息
set成绩信息.学号=(select a.学号 from inserted a)
where成绩信息.学号=(select b.学号 from deleted b) end
(2)修改课程号的触发器
create trigger goha on课程基本信息 for update as begin
if(columns_updated()&01)>0
update 成绩信息
set成绩信息.课程号=(select a.课程号 from inserted a) where成绩信息..课程号=(select b.课程号 from deleted b) end
(3)插入新学号的触发器
create trigger jbinsert on 学生基本信息
for insert as
if(columns_updated()&1)>0 begin
insert into 成绩信息(学号) select 学号,
end
(4)插入课程号的触发器
create trigger jbinsert on 选修课程基本信息
for insert as
if(columns_updated()&1)>0 begin
insert into 成绩信息(课程号) select 课程号,
end
(5)删除学号的触发器
create trigger check_delete on 学生基本信息 for delete as begin
delete成绩信息
where成绩信息.学号=(select 学号 from deleted) end
(6)删除课程号的触发器
create trigger check_delete on 选修课程基本信息 for delete as begin
delete成绩信息
where成绩信息.课程号=(select 课程号 from deleted) end
7.数据库表及时视图截图 (1)学生表基本信息表
(2)选修课程基本信息表