学生成绩管理系统数据库设计文档全.docx
- 文档编号:12127894
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:28
- 大小:93.10KB
学生成绩管理系统数据库设计文档全.docx
《学生成绩管理系统数据库设计文档全.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据库设计文档全.docx(28页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统数据库设计文档全
“学生成绩管理”数据库设计文档
0、前言(一些必要的说明。
)
数据库说明
数据库名:
PXSCJ
逻辑名称:
学生成绩数据库
数据文件:
日志文件:
PXSCJ_Log
登录名:
admin,密码:
123456
表命名说明
庄二dbo.CJB(T二dbo.CXB
dbo.KCB
&二dbonTJB
1+二dbo.XSB
S口dbo^yhb
\±Z3dbo.jsb
F二dboiskb
Cjb:
成绩表,保存选课信息
Cxb查询表,记录boolean值对应信息,1代表男,0代表女。
Kcb课程表。
Tjb:
统计表,统计成绩段分布。
Xsb:
学生表。
Yhb:
用户表,保存系统用户信息。
Jsb:
教师表。
Skb:
授课表,记录授课信息。
系统功能模块图
"1
T
t
0
1
1
*
□
1
',\
□
V
JL
f
f
询学戒性
.
1
ir-A.|
f
"iSl
应
査询IJa・
崂改巧业讦划
1、需求分析阶段
说明:
学生成绩管理系统需要实现以下功能:
一个学生可以选修多门课程,一门课程可以由多个学生选修,学生选修一门课会有一个成绩。
一个教师可以教授多个班级,一个教师也可以教授多门课程,一个班级有多个学生,一门课程也可以由多个老师来上,一个老师给一个班级上一门课有确定的时间和地点。
不同的用户根据身份不同拥有不同的权限。
(1)数据流图
老师----成绩管理,学生信息管理,权限管理---学生成绩管理系统一成绩查询--学生
(要求:
用visio实现第一层数据流图,第二层数据流图,第三层数据流图)p121
第一层数据流图
第二层数据流图
第三层数据流图(略)
(2)数据字典
(每个实体的详细说明)
数据库编号:
pxscj
基表编号:
fl
基表央文名称:
yhb
基表中文名称:
用户表
字段编号
英文字段名
中文字段
名
字段类型
备注
1
Yhbh
用户编号
Char(6)
2
yhm
用户名
Char(8)
3
sf
身份
Varcha(20)
4
mm
密码
Char(6)
5
bz
备注
Varcha(50)
说明:
数据库编号:
pxscj
基表编号:
f2
基表央文名称:
cjb
基表中文名称:
成绩表
字段编号
英文字段名
中文字段
名
字段类型
备注
1
Xh
学号
Char(6)
2
Kch
课程号
Char(3)
3
Cj
成绩
Int
说明:
xh参照学生表的xh;kch参照课程表的kch;cj介于0-100之间。
数据库编号:
pxscj
基表编号:
f3
基表央文名称:
kcb
基表中文名称:
课程表
字段编号
英文字段名
中文字段
名
字段类型
备注
1
Xh
学号
Char(6)
2
XM
姓名
Char(8)
3
XB
性别
Bit
4
CSSJ
出生时间
Datetime
5
Bj
班级
Varchar(50)
6
Zy
专业
Char(12)
7
ZXH
总学分
Int
8
Lxfs
联系方式
Varchar(50)
9
zp
照片
Varbinary(
MAX)
10
BZ
Varchar(500
)
说明:
xh参照学生表的xh;kch参照课程表的kch;cj介于0-100之间。
xb参照查询
表的xb
数据库编号:
pxscj
基表编号:
f4
基表央文名称:
jsb
基表中文名称:
教师表
字段编号
英文字段名
中文字段
名
字段类型
备注
1
Jsbh
教师编号
Char(6)
2
Jsxm
教师姓名
Char(8)
3
zy
专业
Varchar(30)
4
Fy
分院
Varchar(30)
5
Zc
职称
Varchar(20)
6
Zc
职务
Varchar(20)
7
Bz
Varchar(50)
说明:
xh参照学生表的xh;kch参照课程表的kch;cj介于0-100之间
数据库编号:
pxscj
基表编号:
f5
基表央文名称:
kcb
基表中文名称:
课程表
字段编号
英文字段名
中文字段
名
字段类型
备注
1
KCH
课程号
Char(3)
2
KCM
课程名
Char(16)
3
Cj
成绩
Int
说明:
xh参照学生表的xh;kch参照课程表的kch;cj介于0-100之间。
数据库编号:
pxscj
基表编号:
f6
基表央文名称:
cjb
基表中文名称:
课程表
字段编号
英文字段名
中文字段
名
字段类型
备注
1
Xh
学号
Char(6)
2
Kch
课程号
Char(3)
3
KKXQ
Tinyint
4
XS
学生
tinyint
5
XF
学分
tinyint
说明:
xh参照学生表的xh;kch参照课程表的kch;
数据库编号:
pxscj
基表编号:
f7
基表央文名称:
skb
基表中文名称:
授课表
字段编号
英文字段名
中文字段
名
字段类型
备注
1
Jsbh
教师编号
Char(6)
2
Kch
课程号
Char(3)
3
Bj
班级
Varchar(50)
4
Sj
时间
Varchar(50)
5
dd
地点
Varchar(50)
说明:
jsbh参照教师表的jsbh;kch参照课程表的kch;
数据库编号:
pxscj
基表编号:
f8
基表英文名称:
CXB
基表中文名称:
查询表
字段编号
英文字段名
中文字段
名
字段类型
备注
1
XB
性别
Bit
2
XBM
性别名
Char(4)
说明:
2、概念设计阶段
(1)分ER图
(2)总ER图
(由分ER图画出总ER图)
3、逻辑设计阶段
(1)表关系图
(看是否可以画出)
(2)表结构图
列名勧拥类型允详Null值
dnar⑹
□
diar⑻
XB
bit
2
CGSJ
datefefTiE
J
历
varch3r[50)
□
ZY
char(12)
J
ZXF
毗
3
B2
varchar^OO}
J
Ixfs
varcharCSO)
y]
►
却
ivartsinarvtMAX^]
v
Xsb结构
数据类型允许Nd值
啣333
char⑶
KCM
diar(16}
KKXQ
XS
bnyinty
tinyint丿
XF
tinylntV
Kcb结构
数据类型N』值
昨S3
char(6)□
7KCH
CJ
char(3)
] Cjb结构 埶抹类型 允诈Null(f |lilv-lllll#-illli-illlli-illllM'llllf-B4illIHlIlli-ilIIIHlllll*«l\ ►? |VhWi char[6) □ 加 diar[S) sf vardi3rf20) 團 mn char[6) m br v3rdiart50) a Yhb结构 列容敎拐粪型冗许N』值 diar(6} char{8^warcharf^fl)varchar(30) varchar(20) varchar^O) varchar(50) Jsb结构 □ Vgj 圍 O jsxm 竹 ZWbz 藪攜类型允许Niil值 7 jsbh char⑹ kdi diar(3) 时 varcharCSO) SJ varcharC2O) dd varchar[50) 0 Skb结构 列名 数据类型 冗许Null值 ►7S3 char⑷ □ R51 int 0 RS2 int RE3 int RS4 int RS5 int □ Tjb结构 埶拐类型 冗许恥II值 ►阖 bit 甲XBM char(4) B Cxb结构 (3)表优化(判断每个关系是否达到3NF要求,如果没有达到,则继续规范) 按照(1nf->2nf->3nf进行判断和优化) Cjb(xh,kch,cj) 码: (xh,kch) 非主属性: cj因为cj完全依赖于(xh,kch),所以属于2NF 因为不存在传递函数依赖,所以属于3NF Cxb(xb,xbm) 码: (xbm) 非主属性: xb 因为xb完全依赖于(kch),所以属于2NF 因为不存在传递函数依赖,所以属于3NF Jsb(isbh,jsxm,zy,fy,zc,zw,bz) 码: (jsbh) 非主属性: jsxm,zy,fy,zc,zw,bz 因为jsxm,zy,fy,zc,zw,bz完全依赖于(kch),所以属于2NF 因为不存在传递函数依赖,所以属于3NF Kcb(kch,kcm,kkxq,xs,xf) 码: (kch) 非主属性: kcm,kkxq,xs,xf 因为kcm,kkxq,xs,xf完全依赖于(kch),所以属于2NF 因为不存在传递函数依赖,所以属于3NF Skb(jsbh,kch,bj,sj,dd) 码: (jsbh,kch,bj)非主属性: sj,dd 因为sj,dd完全依赖于(jsbh,kch,bj),所以属于2NF 因为不存在传递函数依赖,所以属于3NF Tib(kch,rs1,rs2,rs3,rs4,rs5) 码: (kch) 非主属性: rs1,rs2,rs3,rs4,rs5 因为rs1,rs2,rs3,rs4,rs5完全依赖于(kch),所以属于2NF 因为不存在传递函数依赖,所以属于3NF Xsb(xh,xm,xb,cssj,bj,zy,zxf,bz,lxfs,zp) 码: (xh) 非主属性: xm,xb,cssj,bj,zy,zxf,bz,lxfs,zp 2NF 因为xm,xb,cssj,bj,zy,zxf,bz,lxfs,zp完全依赖于(xh),所以属于 因为不存在传递函数依赖,所以属于3NF Yhb(yhbh,yhm,mm,bz) 码: (yhbh) 非主属性: yhm,mm,bz 因为yhm,mm,bz完全依赖于(yhbh),所以属于2NF 因为不存在传递函数依赖,所以属于3NF 4、物理设计 选择合适的DBMS(要求用sqlserver2008) 5、实施(把sql语句贴在下面) (1)创建数据库 (把sql语句贴在下面)createdatabasepxscj1on ( name='pxscj1_data', filename='f: \', size=3mb, filegrowth=10% ) logon ( name='pxscj1_log',filename='f: \',size=4mb,maxsize=6mb,filegrowth=1mb ) (2)创建表 (把sql语句贴在下面)createtablexsb(xhchar(6)notnullprimarykey,xmchar(8)notnull,xbbit,cssjdatetime,bjvarchar(50)notnull,zychar(12), zxfint,bzvarchar(500), lxfsvarchar(50), zpvarbinary(max) ) createtablekcb( kchchar(3)notnullprimarykey, kcmchar(16)notnull, kkxqtinyint, xstinyint, xftinyint ) createtablecjb( xhchar(6), kchchar(6), cjint, constraintc1primarykey(xh,kch) ) createtableyhb( yhbhchar(6)primarykeynotnull, yhmchar(8), sfvarchar(20), mmchar(6), bzvarchar(5) createtablejsb( jsbhchar(6)notnullprimarykey,jsxmchar(8),zyvarchar(30),fyvarchar(30),zcvarchar(20),zwvarchar(20),bzvarchar(50) ) createtableskb(jsbhchar(6)notnull,kchchar(3)notnull,bjvarchar(50)notnull,sjvarchar(20),ddvarchar(50),constraintc2primarykey(jsbh,kch,bj)) createtabletjb(kchchar(3)primarykeynotnull,rs1int,rs2int,rs3int,rs4int,rs5int createtablecxb(xbbitnotnull, xbmchar(4)notnullprimarykey ) (3)数据库完整性 2)视图 学生选课情况视图(学号,姓名,课程号,课程名,成绩,学分,总学分,教师)createviewxs_xk_view as select,XM,,kcm,CJ,xf,zxf,,jsxm fromxsb,KCB,CJB,jsb,skb where=and= and=and= select*fromxs_xk_view 3)自定义数据库类型 学号,课程号可以考虑用自定义的数据类型。 sp_addtype'xh','char(6)'sP_addtype'kch','char(3)' 4)默认值对象 Xsb: 性别默认为1,总学分默认为0。 Kcb: 学生人数默认为40,学分默认为2。 Jsb: zy计算机,fy信息,zc讲师,zw无。 Yhb: mm'123456' Xsb: 性别默认为1, altertablexsbaddconstraintb1DEFAULT1forxb 总学分默认为0。 altertablexsbaddconstraintb2DEFAULT0forzxf Kcb: 学生人数默认为40, altertablekcbaddconstraintb3DEFAULT40forxs学分默认为2。 altertablekcbaddconstraintb4DEFAULT2forxf Jsb: zy计算机, altertablejsbaddconstraintb5DEFAULT计算机'forzy fy信息, altertablejsbaddconstraintb6DEFAULT'信息'forfy zc讲师, altertablejsbaddconstraintb7DEFAULT讲师'forzczw无。 altertablejsbaddconstraintb8DEFAULT'无'forzw Yhb: mm'123456' altertableyhbaddconstraintb9DEFAULT'123456'formm 5)规则和check约束 Xsb: zxf范围在0-160之间。 Kcb: kkxq范围在1-8之间,xf在1-15之间 Cjb: cj范围在0-100之间 Xsb: zxf在0-160之间。 altertablexsb addconstraintpk_1check(zxfbetween0and160) Kcb: kkxq在1-8之间,xf在1-15之间 altertablekcbaddconstraintpk_2check(kkxqbetween1and8) altertablekcb addconstraintpk_3check(xfbetween1and15) Cjb: cj在0-100之间 altertablecjb addconstraintpk_4check(cjbetween0and100) 6)参照关系 cjb(xh)参照xsb(xh) cjb(kch)参照kcb(kch) yhb(yhbh)参照xsb(xh)和jsb(jsbh)必须用触发器实现 skb(jsbh)参照jsb(jsbh) skb(bj)参照xsb(bj) skb(kch)参照kcb(kch) cjb(xh)—xsb(xh) altertablecjb addconstraintfk_1foreignkey(xh)referencesxsb(xh) cjb(kch)—kcb(kch) altertablecjb addconstraintfk_2foreignkey(kch)referenceskcb(kch) skb(jsbh)—jsb(jsbh)altertableskbaddconstraintfk_4foreignkey(jsbh)referencesjsb(jsbh)skb(kch)—kcb(kch) altertableskb addconstraintfk_6foreignkey(kch)referenceskcb(kch) skb(bj)—xsb(bj)--用触发器实现 createtriggert1onskb forinsert as begin ifnotexists(select*fromxsbwherebj=(selectbjfrominserted)) begin print'插入的班级不存在! ' rollbacktransaction end end yhb(yhbh)—xsb(xh)和jsb(jsbh)--必须用触发器实现 altertriggert2onyhb forinsert as begin ifnotexists(select*fromxsbwherexh=(selectyhbhfrominserted)) ifnotexists(select*fromjsbwherejsbh=(selectyhbhfrominserted))begin print'插入的编号出错! ' rollbacktransaction end end end (4)用户自定义函数 (把sql语句贴在下面) (5)用户自定义存储过程 1)根据学号查询学生的选课情况 (把sql语句贴在下面) CREATEPROCEDURExhcxxs@xhchar(6) as begin ifexists(select*fromcjbwherexh=@xh) select*fromcjbwherexh=@xh else print'无此学生选课信息' end 2)根据课程号查询课程的选修情况 (把sql语句贴在下面) CREATEPROCEDUREkchcxxk@kchchar(3)as begin ifexists(select*fromcjbwherekch=@kch)select*fromcjbwherekch=@kch else print'无此课程选课信息' end 根据教师编号查询授课情况 (把sql语句贴在下面) CREATEPROCEDUREjsbhcxsk@jsbhchar(6)as begin ifexists(select*fromskbwherejsbh=@jsbh)select*fromskbwherejsbh=@jsbh else print'无此教师授课信息' end 3)根据班级查询该班级的授课情况 (把sql语句贴在下面) CREATEPROCEDUREbjcxsk@bjvarchar(50) as begin ifexists(select*fromskbwherebj=@bj)select*fromskbwherebj=@bj else print'无此班级授课信息 end 4)根据课程号号查看授课情况 (把sql语句贴在下面) CREATEPROCEDUREkchcxsk@kchchar(3) as begin ifexists(select*fromskbwherekch=@kch) select*fromskbwherekch=@kch else print'无此课程授课信息' end 5)课程成绩分布统计。 存储过程名称TJ_CJ参数: 课程号(@kch)。 实现功能: 把成绩表(CJB中指定课程按照分数段人数进行统计,放入统计表(TJB中。 编写思路: (1)清空TJB表,插入一行所有分数段的人数都为0的所要查找的课程的记 录。 (2)判断所查的课程号在CJB表中是否有记录,若有则查找出各个分数段的人数并且更新到TJB表中。 方法一: createPROCEDURE[d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 数据库 设计 文档