学生成绩管理系统数据库设计文档全Word格式文档下载.docx

上传人:b****5 文档编号:17214269 上传时间:2022-11-28 格式:DOCX 页数:26 大小:218.66KB
下载 相关 举报
学生成绩管理系统数据库设计文档全Word格式文档下载.docx_第1页
第1页 / 共26页
学生成绩管理系统数据库设计文档全Word格式文档下载.docx_第2页
第2页 / 共26页
学生成绩管理系统数据库设计文档全Word格式文档下载.docx_第3页
第3页 / 共26页
学生成绩管理系统数据库设计文档全Word格式文档下载.docx_第4页
第4页 / 共26页
学生成绩管理系统数据库设计文档全Word格式文档下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统数据库设计文档全Word格式文档下载.docx

《学生成绩管理系统数据库设计文档全Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据库设计文档全Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统数据库设计文档全Word格式文档下载.docx

第三层数据流图(略)

(2)数据字典

(每个实体的详细说明)

数据库编号:

pxscj

基表编号:

f1

基表英文名称:

yhb

基表中文名称:

用户表

字段编号

英文字段名

中文字段名

字段类型

备注

1

Yhbh

用户编号

Char(6)

2

yhm

用户名

Char(8)

3

sf

身份

Varcha(20)

4

mm

密码

5

bz

Varcha(50)

f2

cjb

成绩表

Xh

学号

Kch

课程号

Char(3)

Cj

成绩

Int

xh参照学生表的xh;

kch参照课程表的kch;

cj介于0-100之间。

f3

kcb

课程表

XM

姓名

XB

性别

Bit

CSSJ

出生时间

Datetime

Bj

班级

Varchar(50)

6

Zy

专业

Char(12)

7

ZXH

总学分

8

Lxfs

联系方式

9

zp

照片

Varbinary(MAX)

10

BZ

Varchar(500)

xb参照查询表的xb

f4

jsb

教师表

Jsbh

教师编号

Jsxm

教师姓名

zy

Varchar(30)

Fy

分院

Zc

职称

Varchar(20)

职务

Bz

f5

KCH

KCM

课程名

Char(16)

f6

KKXQ

Tinyint

XS

学生

tinyint

XF

学分

f7

skb

授课表

Sj

时间

dd

地点

jsbh参照教师表的jsbh;

f8

CXB

查询表

XBM

性别名

Char(4)

2、概念设计阶段

(1)分ER图

(两个分ER图,1)学生和课程,2)教师,课程,班级)

(2)总ER图

(由分ER图画出总ER图)

3、逻辑设计阶段

(1)表关系图

(看是否可以画出)

(2)表结构图

Xsb结构

Kcb结构

Cjb结构

Yhb结构

Jsb结构

Skb结构

Tjb结构

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

Jsb(jsbh,jsxm,zy,fy,zc,zw,bz)

(jsbh)

jsxm,zy,fy,zc,zw,bz

因为jsxm,zy,fy,zc,zw,bz完全依赖于(kch),所以属于2NF

Kcb(kch,kcm,kkxq,xs,xf)

(kch)

kcm,kkxq,xs,xf

因为kcm,kkxq,xs,xf完全依赖于(kch),所以属于2NF

Skb(jsbh,kch,bj,sj,dd)

(jsbh,kch,bj)

sj,dd

因为sj,dd完全依赖于(jsbh,kch,bj),所以属于2NF

Tjb(kch,rs1,rs2,rs3,rs4,rs5)

rs1,rs2,rs3,rs4,rs5

因为rs1,rs2,rs3,rs4,rs5完全依赖于(kch),所以属于2NF

Xsb(xh,xm,xb,cssj,bj,zy,zxf,bz,lxfs,zp)

(xh)

xm,xb,cssj,bj,zy,zxf,bz,lxfs,zp

因为xm,xb,cssj,bj,zy,zxf,bz,lxfs,zp完全依赖于(xh),所以属于2NF

Yhb(yhbh,yhm,mm,bz)

(yhbh)

yhm,mm,bz

因为yhm,mm,bz完全依赖于(yhbh),所以属于2NF

4、物理设计

选择合适的DBMS(要求用sqlserver2008)

5、实施(把sql语句贴在下面)

(1)创建数据库

(把sql语句贴在下面)

createdatabasepxscj1

on

name='

pxscj1_data'

filename='

f:

\pxscj1_data.mdf'

size=3mb,

filegrowth=10%

logon

pxscj1_log'

\pxscj1_log.ldf'

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,

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

selectxsb.XH,XM,kcb.KCH,kcm,CJ,xf,zxf,jsb.jsbh,jsxm

fromxsb,KCB,CJB,jsb,skb

wherexsb.XH=cjb.XHandkcb.KCH=cjb.KCH

andcjb.KCH=skb.kchandskb.jsbh=jsb.jsbh

select*fromxs_xk_view

3)自定义数据库类型

学号,课程号可以考虑用自定义的数据类型。

sp_addtype'

xh'

'

char(6)'

sP_addtype'

kch'

char(3)'

4)默认值对象

性别默认为1,总学分默认为0。

学生人数默认为40,学分默认为2。

zy计算机,fy信息,zc讲师,zw无。

mm’123456’

性别默认为1,

altertablexsbaddconstraintb1DEFAULT1forxb

总学分默认为0。

altertablexsbaddconstraintb2DEFAULT0forzxf

学生人数默认为40,

altertablekcbaddconstraintb3DEFAULT40forxs

学分默认为2。

altertablekcbaddconstraintb4DEFAULT2forxf

zy计算机,

altertablejsbaddconstraintb5DEFAULT'

计算机'

forzy

fy信息,

altertablejsbaddconstraintb6DEFAULT'

信息'

forfy

zc讲师,

altertablejsbaddconstraintb7DEFAULT'

讲师'

forzc

zw无。

altertablejsbaddconstraintb8DEFAULT'

无'

forzw

altertableyhbaddconstraintb9DEFAULT'

123456'

formm

5)规则和check约束

zxf范围在0-160之间。

kkxq范围在1-8之间,xf在1-15之间

cj范围在0-100之间

zxf在0-160之间。

altertablexsb

addconstraintpk_1check(zxfbetween0and160)

kkxq在1-8之间,xf在1-15之间

altertablekcb

addconstraintpk_2check(kkxqbetween1and8)

addconstraintpk_3check(xfbetween1and15)

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)

addconstraintfk_2foreignkey(kch)referenceskcb(kch)

skb(jsbh)—jsb(jsbh)

altertableskb

addconstraintfk_4foreignkey(jsbh)referencesjsb(jsbh)

skb(kch)—kcb(kch)

addconstraintfk_6foreignkey(kch)referenceskcb(kch)

skb(bj)—xsb(bj)--用触发器实现

createtriggert1onskb

forinsert

begin

ifnotexists(select*fromxsbwherebj=(selectbjfrominserted))

begin

print'

插入的班级不存在!

'

rollbacktransaction

end

end

yhb(yhbh)—xsb(xh)和jsb(jsbh)--必须用触发器实现

altertriggert2onyhb

ifnotexists(select*fromxsbwherexh=(selectyhbhfrominserted))

begin

ifnotexists(select*fromjsbwherejsbh=(selectyhbhfrominserted))

插入的编号出错!

end

(4)用户自定义函数

(5)用户自定义存储过程

1)根据学号查询学生的选课情况

CREATEPROCEDURExhcxxs@xhchar(6)

ifexists(select*fromcjbwherexh=@xh)

select*fromcjbwherexh=@xh

else

无此学生选课信息'

2)根据课程号查询课程的选修情况

CREATEPROCEDUREkchcxxk@kchchar(3)

ifexists(select*fromcjbwherekch=@kch)

select*fromcjbwherekch=@kch

无此课程选课信息'

根据教师编号查询授课情况

CREATEPROCEDUREjsbhcxsk@jsbhchar(6)

ifexists(select*fromskbwherejsbh=@jsbh)

select*fromskbwherejsbh=@jsbh

无此教师授课信息'

3)根据班级查询该班级的授课情况

CREATEPROCEDUREbjcxsk@bjvarchar(50)

ifexists(select*fromskbwherebj=@bj)

select*fromskbwherebj=@bj

无此班级授课信息'

4)根据课程号号查看授课情况

CREATEPROCEDUREkchcxsk@kchchar(3)

ifexists(select*fromskbwherekch=@kch)

select*fromskbwherekch=@kch

无此课程授课信息'

5)课程成绩分布统计。

存储过程名称TJ_CJ。

参数:

课程号(@kch)。

实现功能:

把成绩表(CJB)中指定课程按照分数段人数进行统计,放入统计表(TJB)中。

编写思路:

(1)清空TJB表,插入一行所有分数段的人数都为0的所要查找的课程的记录。

(2)判断所查的课程号在CJB表中是否有记录,若有则查找出各个分数段的人数并且更新到TJB表中。

方法一:

createPROCEDURE[dbo].[TJ_CJ](@kchchar(3))

truncatetableTJB

insertintoTJBvalues(@kch,0,0,0,0,0)

ifexists(select*fromCJBwhereKCH=@kch)

updateTJBsetRS1=(selectcount(*)fromCJBwhereCJ>

=0andCJ<

60andKCH=@kch)

updateTJBsetRS2=(selectcount(*)fromCJBwhereCJ>

=60andCJ<

70andKCH=@kch)

updateTJBsetRS3=(selectcount(*)fromCJBwhereCJ>

=70andCJ<

80andKCH=@kch)

updateTJBsetRS4=(selectcount(*)fromCJBwhereCJ>

=80andCJ<

90andKCH=@kch)

updateTJBsetRS5=(selectcount(*)fromCJBwhereCJ>

=90andCJ<

=100andKCH=@kch)

execTJ_CJ'

101'

方法二:

如果选择统计的课程在成绩表(CJB)已经存在,可以采用下列代码完成统计功能,并且代码效率较高。

但CJB表中没有所选择的课程记录,执行的结果是各个分数段的人数为null。

createprocedure[dbo].[TJ_CJ](@KCHvarchar(3))

deletefromTJB

insertintoTJB(KCH,RS1,RS2,RS3,RS4,RS5)

select@KCH,

sum(casewhenCJ<

60then1else0end),

sum(casewhenCJ>

=60andCJ<

=69then1else0end),

=70andCJ<

=79then1else0end),

=80andCJ<

=89then1else0end),

=90andCJ<

=100then1else0end)

fromCJBwhereKCH=@KCH

(6)触发器

1)实现yhb(yhbh)—xsb(xh)和jsb(jsbh)参照关系–必须用触发器实现

createtr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1