《数据库原理》课程设计报告 - 16 -
立数据库时,系统都提供了默认参数,但是默认参数不一定适用每一个应用环境,要做适当的调整。此外,在物理结构设计的参数,只是初步的,要在系统运行阶段根据实际情况进一步调整和优化。 存取方法的选择
索引是数据库表的一个附加表,存储了建立索引猎德值和对应的地址。查询数据时,先在索引中根据查询的条件值找到相关地址,然后在表中存取对应的记录,所以能加快查询速度。但索引本身占用存储空间,索引是系统自维护的。建立索引的一般原则是:
1.如果某属性或属性组经常出现在查询中,则考虑为该属性或属性组建立索引; 2.如果某个属性经常作为最大值和最小值等聚集函数的参数,则考虑建立索引; 3.如果某属性和属性组经常出现在连接操作的连接条件中,则考虑建立索引;
3.4.2数据的易变与稳定部分
1.由于基本表Teacher,Student的主码Tno,Sname经常在查询条件和连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引;
2.由于基本表Elective的属性Sno,Grade经常在查询条件中出现,在两个属性上建立唯一索引;
3.4.3索引的建立
create unique index snograde on Elective(Sno asc,Grade desc); create unique index teadno on Teacher(Tno); create unique index stusname on Student(Sname);
3.5数据库、表建立的代码
create database 教学信息管理系统 on primary
(name='教学信息管理系统',
filename='E:\\教学信息管理系统\\教学信息管理系统.mdf', size=10MB, maxsize=20mb, filegrowth=15%) log on
(name='教学信息管理系统_log',
filename='E:\\教学信息管理系统\\教学信息管理系统_log.ldf',
16
《数据库原理》课程设计报告 size=5mb, maxsize=10mb, filegrowth=3MB) go
1.教师表基本信息的建立
create table Teacher(
Tno char(10) primary key,--教工号 Tname char(10)not null,--姓名
Tsex char(10) not null check(Tsex in('男','女')),--性别
Tpos char(10) not null check(Tpos in('教师','主任','辅导员')),--职称Tage smallint not null,--年龄 Tsal smallint not null,--工资 )
2.院系基本信息表的建立:
Create table Department(
Xno char(10) primary key not null,--系号 Xname char(10)not null,--系名称
Xdirector char(10),--系主任
foreign key(Xdirector) references Teacher(Tno) on delete cascade )
3.班级基本信息表的建立:
Create table Class(
Cno char(20)primary key,--班级号 Cname char(10)not null,--班级名称 Xno char(10),--所属系
Cdirector char(10),--班主任
foreign key(Xno) references Department(Xno),
foreign key(Cdirector) references Teacher(Tno) on delete cascade )
4.学生基本信息表的建立:
Create table Student(
Sno char(20)primary key,--学号 Sname varchar(30) not null,--姓名
Ssex char(4)not null check(Ssex in('男','女')),--性别 Saddr char(30)not null,--家庭住址 Sage smallint not null,--年龄 Smajor char(20)not null,--专业
Cno char(20)--所属班级
foreign key(Cno) references Class(Cno) )
5.课程基本信息表的建立:
Create table Cource(
Courceno char(10)primary key,--课程号
- 17 -
17
《数据库原理》课程设计报告 - 18 -
Courcename char(10)not null,--课程名称 Credit smallint not null,--学分
Courcedirector char(10),--授课教师
foreign key(Courcedirector) references Teacher(Tno) on delete cascade, )
6.学生所选课程基本信息表的建立:
Create table Elective( Sno char(20),--学号
Courceno char(10),--课程号 Grade float(10)not null,--成绩 primary key(Sno,Courceno),
foreign key(Sno) references Student(Sno) on delete cascade, foreign key(Courceno) references Cource(Courceno), )
7.教室基本信息表的建立:
create table Classroom(
Rno char(10) primary key,--教室号 Rname char(10) not null,--教室名称 Raddr char(10) not null,--教室地址 )
8.占用教室基本信息表的建立:
create table Occupy( Cno char(20),--班级号 Rno char(10),--教室号 Stime datetime,--上课时间 Usetime char(10),--占用学时 primary key(Cno,Rno,Stime),
foreign key(Rno) references Classroom(Rno), foreign key(Cno) references Class(Cno), )
9.授课基本信息表的建立:
create table Teaching( Tno char(10),--教工号 Cno char(20),--班级号 Courceno char(10),--课程号
Teachtime datetime not null,--授课时间 primary key(Tno,Cno,Courceno),
foreign key(Tno) references Teacher(Tno) on delete cascade, foreign key(Cno) references Class(Cno),
foreign key(Courceno) references Cource(Courceno),
)
insert into Teacher values('023134','陈建华','男', '辅导员','25','3600') insert into Teacher values('052325','陈华','男' ,'主任','27','3600')
18
《数据库原理》课程设计报告 - 19 -
insert into Teacher values('033226','张红','女', '教师','29','4000') insert into Teacher values('074354','王伟','男' ,'主任','31','4300') insert into Teacher values('051242','侯芳','女' ,'主任','43','3800') insert into Teacher values('022124','王建','男', '教师','32','4500') insert into Teacher values('087687','王志','男' ,'主任','34','3900') insert into Teacher values('011343','张国龙','男' ,'教师','34','4500') insert into Teacher values('068787','李薇','女' ,'主任','35','3700') insert into Teacher values('068962','史俊','男' ,'主任','27','4200') insert into Teacher values('042315','李芬','女' ,'辅导员','26','3600') insert into Teacher values('027778','高倩','女' ,'主任','29','3300') insert into Teacher values('045477','陈勇','男' ,'主任','30','4300') insert into Teacher values('043276','杨飞','男' ,'主任','29','4500') insert into Teacher values('054122','李刚','男' ,'辅导员','27','3600') insert into Teacher values('085426','李裕达','男' ,'主任','36','4400')
insert into Department values ('01','土木学院','052325') insert into Department values ('02','交通学院','074354') insert into Department values ('03','计算机学院','051242') insert into Department values ('04','生科学院','087687') insert into Department values ('05','化工学院','068787') insert into Department values ('06','管理学院','068962')
insert into Class values ('0313','软工-2','03','068787') insert into Class values ('0213','道桥-1','02','068962') insert into Class values ('0513','化学材料-3','05','027778') insert into Class values ('0613','工程造价-4','06','045477') insert into Class values ('0113','土木工程-1','01','043276') insert into Class values ('0413','制药-3','04','085426')
insert into Student values('0113001','王洋','男','平顶山市新华区','20','土木工程','0113')
insert into Student values('0413005','马思琪','女','平顶山市新华区','19','制药','0413')
insert into Student values('0213001','师杰','男','平顶山市新华区','20','道桥','0213')
insert into Student values('0613001','吴迪','男','平顶山市新华区','21','工程造价','0613')
insert into Student values('0513001','李叶风','男','平顶山市新华区','20','化学材料','0513')
insert into Cource values('01001','土木工程',4,'027778') insert into Cource values('02001','道桥',3,'045477') insert into Cource values('03001','软件工程',4,'043276') insert into Cource values('04001','制药',4,'085426') insert into Cource values('05001','制药',4,'085426')
19
《数据库原理》课程设计报告
insert into Elective values('0113001','01001','86') insert into Elective values('0413005','02001','95') insert into Elective values('0213001','03001','96') insert into Elective values('0613001','04001','84') insert into Elective values('0513001','05001','76')
insert into Classroom values('113','A-01','01001') insert into Classroom values('110','A-02','02011') insert into Classroom values('213','B-01','02006') insert into Classroom values('313','C-01','05013') insert into Classroom values('403','B-02','04015') insert into Classroom values('507','A-03','03003')
insert into Occupy values('0113','113','2015-4-26',26) insert into Occupy values('0213','110','2015-5-05',31) insert into Occupy values('0613','213','2015-4-07',38) insert into Occupy values('0313','313','2015-4-15',29) insert into Occupy values('0513','507','2015-5-25',35)
insert into Teaching values('023134','0213','01001','2015-4-07') insert into Teaching values('033226','0313','02001','2015-4-15') insert into Teaching values('022124','0213','03001','2015-5-05') insert into Teaching values('011343','0113','04001','2015-4-26') insert into Teaching values('054122','0513','05001','2015-5-25')
3.5.1建立视图
1.用于查询学生基本信息的视图定义如下:
create view StudentView as
select * from Student
2.用于查询专业基本信息的视图定义如下:
create view MajorView as
select Smajor,Xname from Class, Student, Department where Student.Cno= Class.Cno and Class.Xno= Department.Xno with check option
3.用于查询学生成绩的视图定义如下:
create view GradeView as
- 20 -
20