数据库设计实例.docx
《数据库设计实例.docx》由会员分享,可在线阅读,更多相关《数据库设计实例.docx(13页珍藏版)》请在冰豆网上搜索。
数据库设计实例
学生成绩管理系统
目录一:
需求分析
二:
系统功能描述
三:
E-R图
四:
数据库逻辑结构设计
五:
数据库物理设计
六:
代码设计
七:
SQL代码
八:
界面截图
一:
需求分析:
随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长,对学生成绩信息的管理难度随之增大。
面队如此庞大的信息量,这就需要学生成绩管理信息系统来提高学生管理工作的效率。
通过这样的系统,做到信息的规范管理、科学统计以及快速的查询和修改,从而减少管理方面的工作量。
总体任务是要实现学生成绩信息关系的系统化、规范化和自动化。
根据总体任务的要求进行需求分析得出,学生成绩管理信息系统需要完成的功能主要如下:
Ø学生基本信息的输入,其中包括学生学号、姓名、性别、所属学院,所属系别,所属班级、出生年月、籍贯、宿舍、联系方式等。
Ø学校基本课程信息的输入,包括课程编号、课程名称、课程属性、课程描述以及完成该课程所得的学分。
Ø教师基本信息的输入,其中包括教师编号,教师姓名,教师职称,所教课程,所教班级等情况
Ø学生信息,教师信息,课程信息,学生考试成绩的插入,删除,修改、查询和统计。
Ø识别每个用户的身份和密码,从而保证信息的安全性,防止信息的外泄和盗用。
还有,涉及到信息的增,删,改的,主要都是面向教务管理员,教师只能录入成绩,查询成绩,修改成绩,和查询个人信息,而学生只能登录查看自己的信息,查询成绩等。
二:
系统功能描述
学生登录
个人
信息
查询课程
查询成绩
及格课程
班里排名
系里排名
院里排名
不及格课程
总分
单科
班里排名
系里排名
院里排名
基本信息
登录信息
修改密码
三:
E-R图(概念结构建立)
1)学生查询系统的分E-R图
学生
登录
学号
查询
个人信息
学号
性别
班号
籍贯
入学年份
学院号
系号
宿舍
出生年月
课程信息
课程名
课程属性
学分
课程号
课程描述
成绩信息
成绩
课程名
绩点
2)教师查询更新系统的分E-R图
教师
登录
教师号
查询
学生信息
学生信息
学号
性别
班号
籍贯
入学年份
学院号
系号
宿舍
出生年月
修改
成绩信息
成绩
插入
成绩
3)管理员分E-R图
管理员
插入
学生信息
教师信息
修改
学生信息
教师信息
删除
学生信息
教师信息
查看
学生信息
教师信息
课程信息
成绩信息
4)总E-R图
管理员
插入
学生信息
教师信息
修改
学生信息
删除
学生信息
教师信息
查看
学生信息
教师信息
课程信息
成绩信息
授权
学生管理系统
教师管理系统
学生管理系统E-R图
教师查询更新系统的分E-R图
四:
数据库逻辑结构设计
本系统将使用Access2000作为数据库管理系统。
现在需要将上面的数据库概念结构转化为SQLServer2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
这是所有表的建立
学生信息表
列名
数据类型
长度
可否为空
是否主键
是否外键
缺省值
备注
SNO
char
12
N
Y
Y
学生学号
SSEX
char
2
N
N
N
学生性别
SNAME
char
8
N
N
N
学生姓名
COMY
char
4
N
N
N
入学年份
CLNO
char
2
N
N
Y
0
学院号
MNO
char
4
N
N
Y
0
系号
CLANO
char
6
N
N
Y
0
班号
TEL
char
11
Y
N
N
联系电话
DEPT
char
10
N
N
N
宿舍
BIRTH
char
6
N
N
N
出生年月
HT
char
16
N
N
N
籍贯
学院信息表
列名
数据类型
长度
可否为空
是否主键
是否外键
缺省值
备注
CLNO
char
2
N
Y
N
0
学院号
CLNAME
char
24
N
N
N
学院名称
CLPP
int
4
N
N
N
0
学院人数
专业信息表
列名
数据类型
长度
可否为空
是否主键
是否外键
缺省值
备注
MNO
char
4
N
Y
N
0
系号
MNAME
char
16
N
N
N
系名
MPP
int
4
N
N
N
00
系里人数
班级信息表
列名
数据类型
长度
可否为空
是否主键
是否外键
缺省值
备注
CLANO
Char
6
N
Y
N
0
班号
CLANAME
Char
16
N
N
N
班级名称
班级人数
int
2
N
N
N
0
班级人数
课程信息表
列名
数据类型
长度
可否为空
是否主键
是否外键
缺省值
备注
CNO
char
6
N
Y
N
课程号
CNAME
char
16
N
N
N
课程名称
CTERM
char
8
N
N
N
开课学期
CREDIT
char
1
N
N
N
0
课程学分
CTYPE
char
4
N
N
N
课程属性
LESNO
int
1
Y
N
N
周学时
成绩信息表
列名
数据类型
长度
可否为空
是否主键
是否外键
缺省值
备注
SNO
char
12
N
Y
Y
学生学号
CNAME
char
16
N
Y
N
课程名称
SGRD
float
2
Y
N
N
00
学生成绩
教师信息表
列名
数据类型
长度
可否为空
是否主键
是否外键
缺省值
备注
TNO
char
8
N
Y
N
教师编号
TNAME
char
8
N
N
N
教师名称
TSEX
char
2
N
N
N
教师性别
TPOST
char
8
N
N
N
教师职称
TDARP
Char
16
N
N
N
所属部门
教师与课程对应表
列名
数据类型
长度
可否为空
是否主键
是否外键
缺省值
备注
TNAME
char
8
N
N
N
教师名称
CNAME
char
16
N
N
N
课程名称
CLANAME
Char
16
N
N
N
班级名称
用户登录信息表
列名
数据类型
长度
可否为空
是否主键
是否外键
缺省值
备注
USER
char
8
N
Y
N
用户编号
PASSWORD
char
12
N
N
N
welcome
登录密码
USER_KIND
char
4
N
N
N
用户类型
五:
数据库物理设计
这个阶段的主要任务是为逻辑数据模型选取一个最适合应用环境的物理结构,包括存储结构和存取方法等。
六:
代码设计:
院号:
两位整数(00~99),其中00用于另外的用途
系号:
院号+两位整数(00~99),其中00用于另外的用途
班号:
系号+两位整数(00~99)
学号:
班号+班里序号(两位整数00~99)
课程编码:
系号+三位整数(000~999),其中院号为00时,表示为校内的公共课,系号为00时,表示为院内的公共课
教师编码:
院号+六位整数(后六位编号按先来后到的顺序随机给出未被占用的编号)
七:
SQL代码
建立所有表的代码
1.建立学生表
createtablestudent_infor
(SNOchar(12)NOTNULLUNIQUECHECK(SNOLIKE'[1-2][0,9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
SNAMEchar(8)NOTNULLCHECK(SNAMENOTLIKE'%[0-9]%'),
SSEXchar
(2)NOTNULLCHECK(SSEXLIKE'男'ORSSEXLIKE'女'),
COMYchar(4)NOTNULLCHECK(COMYLIKE'[1-2][0,9][0-9][0-9]'),
CLNOchar
(2)NOTNULLUNIQUECHECK(CLNOLIKE'[0-9][0-9]'),
MNOchar(4)NOTNULLUNIQUECHECK(MNOLIKE'[0-9][0-9][0-9][0-9]'),
CLANOchar(6)NOTNULLUNIQUECHECK(CLANOLIKE'[0-9][0-9][0-9][0-9][0-9][0-9]'),
TELchar(11)CHECK(TELLIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
DEPTchar(10)NOTNULLCHECK(DEPTLIKE'[0-9]栋[2-7][1-3][0-9]'),
BIRTHchar(10)NOTNULLCHECK(BIRTHLIKE'19[8,9][0-9]-%[0-9]-[0-3][0-9]'),
HTchar(16)NOTNULLCHECK(HTNOTLIKE'%[0-9]%'),
PrimaryKey(SNO));
2.建立学院信息表
createtablecollege_infor
(CLNOchar
(2)NOTNULLUNIQUECHECK(CLNOLIKE'[0-9][0-9]'),
CLNAMEchar(24)NOTNULLCHECK(CLNAMENOTLIKE'%[0-9]%'ANDCLNAMENOTLIKE'%[A-Z]%'ANDCLNAMENOTLIKE'%[a-z]%'ANDCLNAMELIKE'%学院'),
CLPPintNOTNULLCHECK(CLPP<10000ANDCLPP>0),
PrimaryKey(CLNO));
3.建立专业信息表
createtablemajoy_infor
(MNOchar(4)NOTNULLUNIQUECHECK(MNOLIKE'[0-9][0-9][0-9][0-9]'),
MNAMEchar(16)NOTNULLUNIQUECHECK(MNAMENOTLIKE'%[0-9]%'ANDMNAMENOTLIKE'%[A-Z]%'ANDMNAMENOTLIKE'%[a-z]%'),
MPPintNOTN