数据库原理张磊.docx
《数据库原理张磊.docx》由会员分享,可在线阅读,更多相关《数据库原理张磊.docx(12页珍藏版)》请在冰豆网上搜索。
![数据库原理张磊.docx](https://file1.bdocx.com/fileroot1/2023-1/4/4c7d4752-ce01-46d5-bb9a-a0ad692fa849/4c7d4752-ce01-46d5-bb9a-a0ad692fa8491.gif)
数据库原理张磊
数据库原理
课程设计报告
班级:
计软11—2班
学号:
1106120222
姓名:
张磊
成绩:
电子与信息工程学院
计算机科学系
题目名称
某高校的学籍管理系统
系统概述
部门、专业、班级等基本信息的管理;
实现学生信息的管理;
实现学生成绩的管理;
实现学生的奖惩管理;
创建视图,查询学生的学号、姓名、性别、院系、专业、班级信息;
创建存储过程,统计各院系、专业学生的男女人数;
创建触发器,当新增、修改或删除学生时自动修改相应班级的学生人数;
创建check约束,限制学生的性别只能输入“男”或“女”;
建立数据库相关表之间的参照完整性约束。
系统功能模块设计
数据库概念结构设计
数据库逻辑结构设计
(确定每个关系模式及其主外键,并根据规范化理论进行优化)
其中有下划线的属性为主键。
学生(姓名,性别,学号,班级号,专业,出生日期,入学日期,家庭住址,备注)
班级(班级号,年级,辅导员,自习室)
用户(用户名,密码,权限)
课程(课程名,课程编号,课程类型,课程描述)
成绩(学生姓名,学号,班级名称,课程名,分数)
奖惩(姓名,学号,年级,辅导员)
数据库物理设计
(1)学生信息表(student),共有10个字段,分别为:
学号、姓名、性别、身份证号、出生日期、专业、班级、联系电话、家庭住址、备注,见表1
表1学生信息表的结构
字段名
字段类型
小数位数
是否主键
是否为空
是否外键
备注
sno
Char(15)
是
否
否
否
sname
Char(8)
否
否
否
否
Ssex
Char
(2)
否
否
否
否
scard
Char(20)
否
否
否
否
saddree
Date(8)
否
否
否
否
sspeciality
Char(20)
否
否
否
否
classname
Char(10)
否
否
否
否
saddree
Char(30)
否
否
否
否
stelphone
Char(15)
否
否
否
否
smemo
Char(50)
否
否
否
否
(2)课程信息表(course),本表有2个字段:
课程名称、所属专业,见表2
表2课程信息表的结构
字段名
字段类型
小数位数
是否主键
是否为空
是否外键
备注
coursename
Char(20)
是
否
否
否
cid
Char(10)
否
否
否
否
classname
Char(20)
否
否
否
否
termname
Char(20)
否
否
否
否
period
Int(4)
否
否
否
否
tid
Char(20)
否
否
否
否
classroomname
Char(20)
否
否
否
否
coursememo
Char(30)
否
否
否
否
(3)班级信息表(class),共有5个字段分别为:
班级名称、所属院系辅导员、教室、人数,见表3
表3班级信息表结构
字段名
字段类型
小数位数
是否主键
是否为空
是否外键
备注
classname
Char(10)
是
否
否
否
tdepartment
Char(20)
否
否
否
否
tname
Char(8)
否
否
否
否
classroom
Char(15)
否
否
否
否
number
Char(3)
否
否
否
否
(4)成绩信息表(score),有5个字段分别为:
学号、姓名、专业、课程名称、成绩,见表4
表4成绩信息表结构
字段名
数据类型
小数位数
是否主键
是否为空
是否外键
备注
sno
Char(15)
是
否
否
否
sname
Char(8)
否
否
否
否
grade
Char(20)
否
否
否
否
coursename
Char(10)
是
否
否
否
score
Int(4)
否
否
否
否
(5)用户表(user),有2个字段为:
用户名称、密码,见表5
表5用户表结构
字段名
字段类型
小数位数
是否主键
是否为空
是否外键
备注
sno
Char(8)
是
否
否
否
mima
Char(8)
否
否
否
否
(6)奖惩信息表(jc),有2个字段为:
学生姓名,年级,奖惩日期,奖惩名称,奖惩备注。
见表5
表5奖惩信息表结构
字段名
字段类型
小数位数
是否主键
是否为空
是否外键
备注
sname
Char(20)
是
否
否
否
grade
Char(20)
否
否
否
否
jdate
Date(8)
否
否
否
否
jname
Char(20)
否
否
否
否
jmemo
Char((20)
否
否
否
否
程序运行环境和开发环境
SQL软件
WINDOWSXP
主要模块程序流程图
1.系统管理
2.学生信息
3.课程管理
4.班级管理
5.成绩及奖惩管理
主要功能实现的程序段
1.建立数据库
Createdatebasestudent;
2.建立数据表
(1)学生信息表的建立。
Creattablestudent
(snochar(20)primarykey
snamechar(20)
ssexchar(20)
scardchar(20)
saddreechar(50)
stelphonchar(15)
smobtelphonchar(15)
classnamechar(20)
sdepartmentchar(50)
coursenamechar(30)
sspecialitychar(30)
);
(2)班级信息表的建立
createtableclass
(classnamechar(20)
cdepartmentchar(30)
cteacherchar(10)
cmemochar(50)
);
(3)课程信息表
createtablecourse
(cidchar(10)
classnamechar(20)
termnamechar(20)
coursenamechar(20)
periodchar(4)
tidchar(20)
classroomnamechar(20)
coursememochar(50)
);
(4)成绩信息数据表。
createtablescore
(snochar(20)primarykey
snamechar(20)
gradechar(20)
coursenamechar(10)primarykey
scoreint(4)
);
(5)奖惩信息数据表。
createtablejc
(snamechar(20)primarykey
gratechar(20)
jdatedate(8)
jnamechar(20)
jmemochar(20)
);
2.建立视图
(1)查询学生基本信息表视图定义
Createviewstudent_view(sno,sname,ssex,scard,saddress,stelphon,sspeciality,
classname,smemo)
as
select*
fromstudent
4.触发器设计
(1)创建规则用于限制性别项只能输入“男”或“女”
createtablestudent
(Ssexchar
(2)
CONSTRAINTC4CHECK(SsexIN(‘男’,‘女’)),
CONSTRAINTstudentKeyPBIMARY(Sno)
);
(2)建立触发器
创建触发器,当新增、修改或删除学生时自动修改相应班级的学生人数
CREATEtriggerdele_numberonstudent
fordelete
as
begin
declare@snoint
set@sno=(selectsnofromdeleted)
If(select*fromstudentwherestudent.sno=@sno)
Updateclasssetclass.number=class.number-1whereclassnamein(selectclassnamefromclasswherestudent.sno=@sno)
end
createtriggerinsert_numberonstudent
forinsert
as
begin
declare@snoint
set@sno=(selectsnofrominserted)
Updateclasssetclass.number=class.number+1whereclassnamein(selectclassnamefromclasswherestudent.sno=@sno)
end
创建存储过程,统计各院系、专业学生的男女人数
createprocedurenumber
@classnamechar
as
Begin
Return(selectcount(sno)男生人数fromstudentwhereclassname=@classnameandssex=’男’)
Return(selectcount(sno)女生人数fromstudentwhereclassname=@classnameandssex=’女’)
end