转专业数据库系统设计.docx
- 文档编号:23033552
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:14
- 大小:114.26KB
转专业数据库系统设计.docx
《转专业数据库系统设计.docx》由会员分享,可在线阅读,更多相关《转专业数据库系统设计.docx(14页珍藏版)》请在冰豆网上搜索。
转专业数据库系统设计
转专业数据库系统设计
计本0813班
一、需求分析
1.设计原因
因为有些学生在进大学前认为大学只需要好好学习就够了,对大学专业的事不太了解。
因此报考选专业时没有仔细思考,只是想在大学里好好实现自己的理想,好好用功,到了大学后才发现自己对自己所学的专业不感兴趣。
还有一些学生是因为高考分数低被院校调剂到自己不喜欢的专业,所以想转专业,随着学校规模的不断扩大,学生数量的急剧增加,要求转专业人数也在增多,学校为了满足同学们的需求,更好的发挥同学们的能力,所以设计这个转专业数据库系统。
2.设计要求
1)首先某专业应提供招生的要求,如招生的人数、最低录取分数线以及对考生的其他条件的限制。
2)然后应建立一个报名信息表和录取信息表,报名信息表用于存取考生的基本信息,包括考生的成绩和报考志愿,专业信息表用于存取专业的基本信息和招生信息。
为了简化录取过程,我们由系统投档程序来完成学生的录取工作,一旦考生满足专业信息的招生条件,即视为被录取。
被录取的学生,在数据库中要标识成录取状态,并记录录取专业的信息,在专业信息表中要回填录取人数的有关信息。
在录取过程中或录取结束后,招生部门要进行查询和统计,主要是在录取结束后统计所有专业的招生情况。
3)数据库中的专业信息表和报名信息表,由相应的数据库应用程序来完成一系列的数据加工处理过程,其中最主要的就是投档录取过程。
所谓投档,就是把满足要求的学生档案信息发送给某专业,由专业审查档案后决定学生的录取与否,学生在录取过程中需要查询其录取状态。
4)数据录入要完成录取信息表的数据输入及修改工作。
在本系统中,我们选取了08级信息系学生的信息,有六个专业,在专业录取信息表里我们可以录入专业的基本信息和录取要求,学生的基本信息以及考试成绩由老师提供的JSJBK08用户下的成绩表和学籍表导出。
5)录取的条件是:
首先学生成绩应达到某专业的最低录取分数,并应达到本班的前10%。
录取的原则是:
一志愿要求优先录取,一志愿全部录取完毕后,才能开始二志愿的录取;二志愿录取对没有达到计划招生人数的专业进行补充录取,二志愿全波录取完毕后,才能开始三志愿的录取;三志愿录取对没有达到计划招生人数的专业继续进行补充录取。
根据以上原则,投档可分为一志愿投档、二志愿投档和三志愿投档。
一志愿投档是根据专业号完成对一个专业的一志愿投档的;二志愿投档是根据专业号完成对一个专业的二志愿投档的,二志愿投档应该在一志愿投档完成以后进行。
三志愿投档也是根据专业号完成对一个专业的三志愿投档的,三志愿投档应该在二志愿投档完成以后进行。
一次完成全部院校的投档称为自动投档。
自动投档一次完成对所有专业的一志愿或二志愿或三志愿投档。
如果使用自动投档,只需为一志愿、二志愿和三志愿分别投档一次,即完成投档过程。
作为补充,可以设计一个调剂投档功能,对一、二、三志愿没有被录取的考生,如果存在没有招满的专业,补充录取同意调剂的学生。
6)查询统计在投档过程中或投档结束之后,根据专业号显示专业的录取结果,即录取学生按分数排序的名单,同时应该显示学生的分数、录取的志愿等信息。
在录取结束之后,按专业的录取平均分数排名,显示所有专业的招生统计信息。
3.利用asp可以设置学生登录界面,用户名和密码为自己的学号,这个网页要和学籍表里的学号链接。
再设置一个招生部门查看学生录取情况的一个asp网页,还应设置管理员权限,保证数据的安全性。
二、概念结构的设计(ER图)
三、逻辑结构的设计
录取信息表
字段名称
类型
宽度
约束条件
简要说明
专业号
Number
5
主键
专业编号
专业名称
Varchar2
20
不允许为空
专业名称
录取分数线
Number
3
0~100
专业最低录取控制分数线
招生人数
Number
3
《=10
计划招生总人数
录取人数
Number
3
默认初值为0
已经录取的人数
字段含义说明:
专业号:
为该表的主键,各个专业的编号。
专业名称:
专业的全称,必须填写。
录取分数线:
是专业确定的考生最低录取分数线,低于录取分数线的考生不能被录取。
招生人数:
是某专业计划招生的人数。
录取人数:
在某专业录取过程中回填的已经被录取的一、二志愿人数的和。
当录取人数等于招生人数时录取结束。
报名信息表
字段名称
类型
宽度
约束条件
简要说明
学号
Number
10
主键
学号
姓名
Varchar2
8
不允许为空
学生的姓名
性别
Varchar2
2
男,女
学生的性别
均分
Number
3
0~100
考试成绩的均分
报考专业1
Number
6
外键,参照专业表的专业号
1志愿的专业号
报考专业2
Number
6
外键,参照专业表的专业号
2志愿的专业号
报考专业3
Number
6
外键,参照专业表的专业号
3志愿的专业号
是否调剂
Varchar2
2
是,否
是否同意调剂
录取状态
Varchar2
1
默认值为0
0:
未录取,1:
录取
录取志愿
Number
6
外键,参照专业表的专业号
1:
1志愿2:
2志愿3:
3志愿4:
调剂的专业
字段含义说明:
学号:
为该表主键,是学生的学号。
姓名:
不允许为空值,学生的姓名。
性别:
只能是男或女,使用约束条件控制。
均分:
为学生一学年的所有课程的均分,约束条件是0~100,假定满分为100分。
是否调剂:
默认值为不同意调剂,可以选择同意调剂。
同意调剂的考生,在一志愿、二志愿、三志愿录取结束后,可以参加调剂录取。
一志愿:
为学生填写的一志愿专业。
该字段参照专业表的专业号。
二志愿:
为学生填写的二志愿院校的编号。
该字段参照专业表的专业号。
三志愿:
为学生填写的三志愿院校的编号。
该字段参照专业表的专业号。
录取状态:
默认为0,代表没有录取,录取时改为1,代表已经录取。
录取院校:
默认为空,在录取时填入录取专业号。
该字段参照专业表的专业号。
录取志愿:
为1、2、3或4,代表考生被录取的志愿,1代表一志愿录取,2代表二志愿录取,3代表三志愿录取,4代表通过调剂被录取。
四、建立表和视图
(一)创建表
createtablecjb//建成绩表
selectkch,kcm,kxh,xh,qmcjfromjsjbk08.jsjbk_xj;
createtablexjb//建学籍表
asselectxh,xm,xb,xsh,zyh,bm,xz fromjsjbk08.jsjbk_xj;
createtablezyb//建专业表
asselect*fromjsjbk08.jsjbk_zyb;
createtablecjb1(xh,qmcj)//只包含学号和平均成绩的成绩表
as
selectxh,avg(qmcj)fromcjbgroupbyxh;
createtablexscjb//按班级分组、成绩降序排列并划分出前10%的人
as
selectcjb1.xh,xm,pjcj,bm,ntile(10)over(partitionbybmorderbypjcjdesc)tile
fromxjb,cjb1
wherexjb.xh=cjb1.xh;
createtablelqb//把班级的前10%的人罗列出来
as
selectxh,xm,pjcj,bmfromxscjbwheretile=1;
createtablelqxxb//录取信息表,各专业录取原则
(zyhnumber(6)primarykey,
Zymcvarchar2(20)notnull,
Lqfsxnumber(3)check(lqfsxbetween0and100),
Zsrsnumber(3)check(zsrs<=10),
Lqrsnumber(3)default‘0’);
Createtablebmxxb//报名信息表
(xhvarchar2(10)primarykey,
xmvarchar2(8)notnull,
xbvarchar2
(2)check(xbin('男','女')),
pjcjnumber(3)check(pjcjbetween0and100),
sftjvarchar2
(2)check(sftjin(‘是’,’否’),
bkzy1varchar2(8),
bkzy2varchar2(8),
bkzy2varchar2(8),
lqztvarchar2
(1)default‘0’,
lqzyvarchar2
(1)defaultnullcheck(lqzyin(‘1’,’2’,’3’,’4’)),
foreignkey(bkzy1)referenceszyb(zyh),
foreignkey(bkzy2)referenceszyb(zyh),
foreignkey(bkzy3)referenceszyb(zyh),
foreignkey(lqzy)referenceszyb(zyh));
(二)创建视图
一旦建立视图,通过直接对视图进行查询而不是对基表进行查询,可以实现对数据的保护,并简化操作。
同时可建立视图的同义词,用于为复杂对象名生成一个简化和便于记忆的别名。
1、考生成绩视图
基表:
xscjb
结构:
考生成绩(学号,姓名,考试成绩,班名),只读视图。
功能:
为了方便查看学生的成绩,建立成绩视图,显示全部学生的学号、姓名、考试成绩和班名。
createviewcjst
as
selectxhas学号,xmas姓名,pjcjas平均成绩,bmas班名
fromxscjb
withreadonly;
2、录取考生视图
基表:
lqxxb和bmxxb。
结构:
录取考生(学号,姓名,专业名称),条件是只显示录取的考生信息,只读视图。
需要通过建立相等连接来实现。
功能:
为了方便查看学生的录取结果,建立录取学生的视图,显示被录取学生的考号、姓名和录取院校名称。
createviewlqks(xh,xm,lqzymc)
asselectxh,xm,zymfromlqxxb,bkxxb
wherelqzt='1'andlqxxb.lqzy=bmxxb.zyh
withreadonly;
3、录取情况视图
基表:
lqxxb。
结构:
录取情况(专业号,专业名称,录取状态,招生人数,缺额),只读视图。
功能:
显示招生计划完成情况,计划招生人数和录取的缺额。
创建视图:
createviewlqqk(zyh,zymc,lqzt,zsrs,qe)
asselectzyh,zymc,decode(sign(zsrs-lqrs),1,'未完成','完成'),zsrs,zsrs-lqrs
fromlqxxb
withreadonly;
说明:
sign函数返回算术运算结果的符号,结果大于0返回1,等于0返回0,小于0返回-1。
如果招生人数大于录取人数,则表达式sign(招生人数-录取人数)的结果为1。
此时,decode函数返回“未完成”;否则返回“完成”。
五、物理设计
数据库的物理设计就是为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程。
物理结构设计阶段实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。
因此在确定数据库的存储结构和存取方法之前,对数据库系统所支持的事务要进行仔细分析,获得优化数据库物理设计的参数
数据库的物理设计通常分为两步:
(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存取结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
而主要体现在后者
1)建立索引:
1对cjb在pjcj属性列上建立非聚集索引。
Createindexcjb_pjcjoncjb(pjcj);
2对在lqb在pjcj上建立非聚集索引。
Createindexlqb_pjcjonlqb(pjcj)
3对xjb表在xh上建立唯一索引,在bm上建立非聚集索引
Createindexxjb_xhonxjb(xh);
Createindexxjb_bmonxjb(bm);
4对xscjb表在pjcj列上建立非聚集索引
Createindexxscjb_pjcjonxscjb(pjcj);
2)存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
将日志文件和数据库对象(表、索引等)分别放在不同的磁盘可以改进系统的性能。
所以系统将日志文件和数据文件存放在不同磁盘上。
六、触发器的设计
通过触发器可以为数据提供进一步的保护。
下面设计两种常见类型的触发器。
1.分数修改触发器
如果要自动记录对数据库的数据进行的某些操作,可以通过创建触发器来实现。
在学生成绩表中,考试成绩字段的内容十分重要,是录取的最重要依据,应该正确设置对其进行操作的权限,并做好操作的记录。
权限可以通过设定特定权限的账户进行控制,记录操作可以通过触发器来实现。
通过触发器来记录对学生成绩表考试成绩字段的插入、删除和修改操作,记录的内容可以包括:
操作时间、操作人账户、执行的操作、学号、原分数和修改后的分数。
以上内容记录到表操作表(operation)里。
operation的结构
字段名称
类型
宽度
约束条件
简要说明
序号
number
10
主键
记录编号,从1开始递增,取自序列
登录名
varchar2
15
不允许为空
操作人账户
时间
date
操作时间,取自SYSDATE
操作
varchar2
10
操作种类
学号
number
5
考生编号
原分数
number
3
修改前的分数
新分数
number
3
修改后的分数
1.创建如下的记录表:
createtableoperation
(xhnumber(10)primarykey,
dlmvarchar2(15)notnull,
sjdate,
czvarchar2(10),
xhnumber(10),
ycjnumber(3),
xcjnumber(3)
);
创建一个主键序列operation_id:
createseguenceoperation_idincrementby1
startwith1maxvalue9999999nocyclenocache;//创建和编译以下触发器:
createtriggeroperation
before//触发时间为操作前
deleteorinsertorupdateofpjcj//由三种事件触发
onbmxxb
foreachrow//行级触发器
begin
ifinsertingthen
insertintooperation
values(operation_id.nextval,user,sysdate,'insert',:
new.xh,null,:
new.pjcj);
elsifdeletingthen
insertintooperation
values(operation_id.nextval,user,sysdate,'delete',:
old.xh,:
old.pjcj,null);
else
insertintooperation_log
values(operation_id.nextval,user,sysdate,'update',:
old.xh,:
old.pjcj,:
new.pjcj);
endif;
end;
2.级联修改触发器
我们还可以创建级联修改触发器update_bmb,以实现如下的功能:
当修改专业号时,自动修改报名表中与专业号关联的字段内容。
报名信息表共有4个字段与院校编号关联,即报考专业1,报考专业2,报考专业3和录取专业。
创建级联修改触发器:
createtriggerupdate_bmb
after
updateofzyh
onbmxxb
foreachrow//行级触发器
begin
updatestudentsetbkzy1=:
new.zyhwherebkzy1=:
old.zyh;
updatestudentsetbkzy2=:
new.zyhwherebkzy2=:
old.zyh;
updatestudentsetbkzy3=:
new.zyhwherebkzy3=:
old.zyh;
updatestudentsetlqzy=:
new.zyhwherelqzy=:
old.zyh;
end;
七、前台开发平台的选择(asp)
这些是网页应和数据库链接。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业 数据库 系统 设计