西电计算机数据库上机报告

上传人:鲁** 文档编号:553647155 上传时间:2023-08-26 格式:DOCX 页数:14 大小:176.79KB
返回 下载 相关 举报
西电计算机数据库上机报告_第1页
第1页 / 共14页
西电计算机数据库上机报告_第2页
第2页 / 共14页
西电计算机数据库上机报告_第3页
第3页 / 共14页
西电计算机数据库上机报告_第4页
第4页 / 共14页
西电计算机数据库上机报告_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《西电计算机数据库上机报告》由会员分享,可在线阅读,更多相关《西电计算机数据库上机报告(14页珍藏版)》请在金锄头文库上搜索。

1、慧翁西安电子科技大学_数据库系统(2016年度)上题目:学生信息管理系统班级:组长姓名:组长学号:-、需求分析1. 数据需求:需要涉及以下几个数据字典,学生基本信息表表,班级表,系表,学生学会学生基本信息表表Sno学生的学号Sname学生姓名Ssex性别Sage年龄Sbirth出生年月班级表Cno班级号Cyear入学年份Cnum班级人数Cname专业名系表Dno系号Dname系名Doffice系办公室地点Dnum系人数Dzone住宿区学生学会表SUno学会号SUname学会名SUyear成立时间SUzone地点2.任务需求:(1) 实现学生基本情况的录人修C,删除等基本操作。(2) 对学生基本

2、信息提供灵活的查询方式。(3) 建立学生学会名和学会人数的视图(4) 触发器可以在增加或者删除学生时自动增加或者删除系人数和班级人数(5) 存储过程,可以更改班级号并返回人数建立一个游标,可以对系的人数统计,如果与人数不相同可以更新系的人数二、数据库设计1.概念结构设计局部ER图整体的ER图逻辑结构设计(1)ER图转换为关系模型由ER图可见:图中有四个实体:学生,班级,系和学会;四个关系:学生学会加入关系,学生与班级之间的届丁关系,学生与系之间的届丁关系,班级与系之间的届丁关系。由丁每个实体必须构造表,所以可以先得到四个实体的信息表,实体的码就是关系的码,实体的届性即关系模型的届性:Stude

3、nt(Sno,Sname,Ssex,Sage,Sbirth,Dno,Cno)Dept(Dno,Dname,Doffice,Dnum,Dzone)Class(Cno,Cyear,Cnum,Cname,Dno)StuUnion(SUno,SUname,SUyear,SUzone)对丁多对多的关系来说,与该联系相连的实体的码以及本身的届性均转换为关系的届性,各实体之间的码组成关系的码或者关系的码的一部分。以上ER图的联系为多对多,所以转换为关系模式为:Join(Sno,SUno,Jyear)2. 物理结构设计(1)基本表学生表Student列名主码候选码外码被参照表允许空数据类型约束条件Sno是否否

4、无否Char(9)Sname否否否无否Char(20)Ssex否否否无是Char(2)只可取男或女Sbirth否否否无是Char(20)Sage否否否无是smallint20-30Dno否否是Dept否Char(3)Cno否否是Class否Char(6)班级表Class列名主码候选码外码被参照表允许空数据类型约束条件Cno是否否无否Char(6)Cyear否否否无是Char(5)Cnum否否否无是IntCname否否否无是Char(6)Dno否否是Dept是Char(3)系表Dept列名主码候选码外码被参照表允许空数据类型约束条件Dept是否否无否Char(3)Dname否否否无是Char(2

5、0)Doffice否否否无是Char(20)Dnum否否否无是IntDzone否否否无是Char(10)学会表StuUnion列名主码候选码外码被参照表允许空数据类型约束条件SUno是否否无否Char(5)SUname否否否无是Char(20)SUyear否否否无是Char(5)SUzone否否否无是Char(20)参加学会表JoinSU列名主码候选码外码被参照表允许空数据类型约束条件Sno是否是Student否Char(9)SUno是否是StuUnion否Char(5)Jyear否否否无是Char(5)(2)视图,索引a. 索引:本数据库中的表除了主键本身生成的主索引外,没有定义其他的索引。

6、在查询时即引用主索引即可。表Student的主索引歹U为:Sno表Class的主索引歹U为:Cno表Dept的主索引列为:Dno表StuUnion的主索引列为:SUno表Join的主索引歹U为:Sno,SUnob. 视图:虽然关系数据模型分析的结果表示该数据库需要定义不同的用户视图,但考虑到数据库与前台开发程序的连接比较复杂,所以该数据库中没有单独定义用户视图,不同的用户视图被有选择性的的select语句的结果集取.三、系统实现1. 表的建宜1)系表CREATETABLEDept(DnoCHAR(3)NOTNULL,DnameCHAR(20)NOTNULL,DofficeCHAR(20)NOT

7、NULL,DnumINT,DzoneCHAR(10),PRIMARYKEY(Dno);2) 班级表CREATETABLEClass(CnoCHAR(6)NOTNULL,CyearCHAR(5),CnumINT,CnameCHAR(6),DnoCHAR(3),PRIMARYKEY(Cno),FOREIGNKEY(Dno)REFERENCESDept(Dno)ONDELETECASCADEONUPDATECASCADE);3) 学生表CREATETABLEStudent(SnoCHAR(9)NOTNULL,SnameCHAR(20)NOTNULL,SbirthCHAR(20),SsexCHAR(2

8、)CHECK(SsexIN(男,女),SageSMALLINTCHECK(Sage10ANDSage30),DnoCHAR(3)NOTNULL,CnoCHAR(6)NOTNULL,PRIMARYKEY(Sno),FOREIGNKEY(Dno)REFERENCESDept(Dno)ONDELETECASCADEONUPDATECASCADE,FOREIGNKEY(Cno)REFERENCESClass(Cno)ONUPDATECASCADEONDELETECASCADE);4) 学会表CREATETABLEStuUnion(SUnoCHAR(5)NOTNULL,SUnameCHAR(20),SU

9、yearCHAR(5),SUzoneCHAR(20),PRIMARYKEY(SUno);5) 参加学会表CREATETABLEJoinSU(SnoCHAR(9)NOTNULL,SUnoCHAR(5)NOTNULL,JyearCHAR(5),PRIMARYKEY(Sno,SUno),FOREIGNKEY(Sno)REFERENCESStudent(Sno)ONDELETECASCADEONUPDATECASCADE,FOREIGNKEY(SUno)REFERENCESStuUnion(SUno)ONDELETECASCADEONUPDATECASCADE);2. 创建学会的视图CREATEVIE

10、WClub(SUNAME,SNUM)ASSELECTMAX(SUname),COUNT(DISTINCTSno)FROMJoinSU,StuUnionWHEREStuUnion.SUno=JoinSU.SUnoGROUPBYStuUnion.SUno3. 建立在学生表上的触发器(能根据每个班的学生变动情况自动增减班级表和系表的人数字段的值)CREATETRIGGERUpdate_peopleONStudentFORINSERT,DELETEASUPDATEDeptSETDept.Dnum=Dept.Dnum+1WHEREDept.Dno=(SELECTINSERTED.DnoFROMINSER

11、TED)UPDATEDeptSETDept.Dnum=Dept.Dnum-1WHEREDept.Dno=(SELECTDELETED.DnoFROMDELETED)UPDATEClassSETClass.Cnum=Class.Cnum+1WHEREClass.Cno=(SELECTINSERTED.CnoFROMINSERTED)UPDATEClassSETClass.Cnum=Class.Cnum-1WHEREClass.Cno=(SELECTDELETED.CnoFROMDELETED)4. 建立存储过程(给定一个班的旧班号和新班号,把所有相关表中此班的旧班号改为新班号,并返回此班的人数(

12、使用输出参数)CREATEPROCEDURECHANGEoldnumCHAR(6),newnumCHAR(6),CnumINTOUTPUTASUPDATEClassSETClass.Cno=newnum,Cnum=CnumWHEREClass.Cno=oldnumUPDATEStudentSETStudent.Cno=newnumWHEREStudent.Cno=oldnumDECLARECnumINTEXECCHANGE1403,1421,CnumOUTPUTPRINTSTR(Cnum)5. 建立游标(确定系表中人数字段的值与实际学生数是否相符。如果不相符,把人数字段的值改为实际数,并在窗口

13、打印此系的系号、系名、原人数、实际人数)DECLAREMycursorCURSORFORSELECTDnum,DnoFROMDeptFORUPDATEDECLARElocal_sumINT,local_noCHAR(3),sumINTOPENMycursorFETCHNEXTFROMMycursorINTOlocal_sum,local_noWHILEFETCH_STATUS=0BEGINSELECTsum=COUNT(Sno)FROMStudentWHEREDno=local_noGROUPBYDnoIFlocal_sum!=sumBEGINUPDATEDeptSETDnum=sumWHERECURRENTOFMycursorENDFETCHNEXTFROMMycursorINTOlocal_sum,local_noENDCLOSEMycursorDEALLOCATEMycursor;四、设计总结通过这次的实验,我对数据库在生活中的广泛应用有了更深的体会,同时也加深了对SQL2008的认识,尤其对数据库与开发程序的链接有了进一步的认识。这次课程设计我最大的收获并不是对书本知识的巩固,而是通过实验我的自学能力得到了很好的锻炼,实践能力也提高了不少。由于之前对很

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号