




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库系统课程设计指导书一、课程设计的目的和意义数据库系统课程设计是实践性教学环节之一,是数据库系统课程的辅助教学课程。通过课程设计,使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容,使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。二、设计要求通过设计一个完整的数据库,使学生掌握数据库设计各阶段的输入、输出、设计环境、目标和方法。熟练掌握两个主要环节概念结构设计与逻辑结构设计;熟练的使用SQL语言实现数据库的建立、应用和维护。集中安排3周进行课程设计,教师讲解数据库的设计方法以及布置题目,要求学生根据题目的需求描述,进行实际调研,提出完整的需求分析报告。要求如下:1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。2、既要虚心接受老师的指导,又要充分发挥主观能动性。结合课题,独立思考,努力钻研,勤于实践,勇于创新。3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。4、课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。5、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。6、如分组,小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良好的互相帮助和团队协作精神。三、课程设计选题的原则课程设计题目以选用学生相对比较熟悉的业务模型为宜,要求通过本实践性教学环节,能较好地巩固数据库的基本概念、基本原理、关系数据库的设计理论、设计方法等主要相关知识点,针对实际问题设计概念模型,并应用现有的工具完成小型数据库的设计与实现。具体选题见附录1。四、课程设计的一般步骤课程设计大体分五个阶段:1、选题与搜集资料:根据分组,选择课题,在小组内进行分工,进行系统调查,搜集资料。2、分析与设计:根据搜集的资料,进行功能与数据分析,并进行数据库、系统功能等设计。3、程序设计:运用掌握的语言,编写程序,实现所设计的模块功能。4、调试与测试:自行调试程序,成员交叉测试程序,并记录测试情况。5、验收与评分:指导教师对每个小组的开发的系统,及每个成员开发的模块进行综合验收,结合设计报告,根据课程设计成绩的评定方法,评出成绩。五、本课程设计内容与要求掌握数据库的设计的每个步骤,以及提交各步骤所需图表和文档。通过使用目前流行的DBMS(SQL Server 2005或2008),建立所设计的数据库,并在此基础上实现数据库查询、连接,视图、游标、存储过程和触发器的创建等数据库的后台操作。1、需求分析:根据自己的选题,绘制相应的数据流图(DFD)以及书写相关的文字说明。2、概念结构设计:绘制所选题目详细的E-R图。3、逻辑结构设计:将E-R图转换成等价的关系模式;按需求对关系模式进行规范化;对规范化后的模式进行评价,调整模式,使其满足性能、存储等方面要求;根据局部应用需要设计外模式。4、物理结构设计:选定实施环境,存取方法等。5、数据实施和维护:用SQL Server 2005建立数据库结构,加载数据,实现各种查询、链接应用程序,并能对数据库做简单的维护操作(视图、索引、游标、存储过程和触发器的创建)。6、设计小结:总结课程设计的过程、体会及建议。7、其他:参考文献等。七、课程设计报告格式要求1、课程设计要求不少于A4纸10页,5号字1.5倍行距。2、结构要求:一般要求有题目、序言、需求分析(用户需求分析、业务流程分析、信息需求分析、功能需求分析)、概念结构设计(数据库需求分析、设计E-R图)、逻辑结构设计(数据库关系模式、逻辑模型设计)、物理结构设计、数据实施和维护(创建数据库和表、设计表的索引和表间的关系、创建视图和游标、创建存储过程和触发器、数据库的备份还原及数据的导入/导出)、设计小结、参考文献、附录(核心代码)。 附录1:课程设计题目各选题的功能及数据库的参考关系如下:一、学生成绩管理系统学生成绩管理系统数据库总共包含4个数据表:学生表、教师表、课程表、成绩表,其结构和有关数据可参考excel数据表“xscj.xls”或学生成绩管理系统数据库备份文件,要求使用SQL语句完成下列功能:1、对上述数据库进行需求分析,然后进行概念结构设计和逻辑结构设计,画出详细的E-R图,并转换成等价的关系模式。2、对上述4个表分别设定主键、外键,建立彼此的关联。3、使用SQL语句或用SQL Server Management Studio建立上述学生成绩数据库和它所包含的4个数据表。4、查询数据库(1)查询女教师的教师编号、姓名和出生日期。select 教师编号,姓名,出生日期from 教师表where 性别=女;go(2)根据教师的年龄,将教师分为:老年(大于等于50岁)、中年(40岁至50岁之间)和青年(小于等于40岁)。select 教师编号,姓名,年龄=casewhen(2016-year(出生日期)between 40and 50then 中年when(2016-year(出生日期)=80 then 优秀when 分数=60 then 及格else 不及格endfrom 成绩表go(7)统计选修了5号课程的学生的总分、平均分、最高分和最低分。select sum(分数),avg(分数),max(分数),min(分数)from 成绩表where 课程号=5;go(8)统计每门课程的总分和平均分,并按平均分从高到低排序输出。select 课程号,总分=sum(分数),平均分数=avg(分数)from 成绩表group by 课程号order by avg(分数) desc;go (9)统计每个学院学生的男女生人数。select 院系名称,性别,count(*)from 学生表group by 院系名称,性别;go(10)查询选修了“数据库应用”课程的学生的学号和姓名。USE xscjGOSELECT 学号,姓名FROM 学生表WHERE 学号 IN(SELECT 学号FROM 成绩表WHERE 课程号 IN(SELECT 课程号FROM 课程表WHERE 课程名=数据库应用) GO(11)查询分数都大于王林分数的学生、课程名和分数。use xscjgoselect 姓名,课程名,分数from 学生表,课程表,成绩表where 学生表.学号=成绩表.学号and 课程表.课程号=成绩表.课程号and 分数all(select 成绩表.分数from 学生表,课程表,成绩表where 学生表.学号=成绩表.学号and 课程表.课程号=成绩表.课程号and 学生表.姓名=汤腾飞)and 姓名汤腾飞go(12)定义一个函数,该函数用来查询每个学生每门课程的分数,并返回查询结果。然后调用函数,求出某个学生的学号、姓名、课程名、课程号和分数。use xscjgocreate view scoreasselect 姓名,课程名,分数,课程表.课程号,学生表.学号from 学生表,课程表,成绩表where 学生表.学号=成绩表.学号and 课程表.课程号=成绩表.课程号gocreate function stu_score( stu_name char(6)returns table as return (select * from scorewhere 姓名= stu_name)select * from dbo.stu_score(高黎明)go(13)查询年龄最小的学生的学号和姓名。(14)查询每个学生的平均分。select 姓名,平均分= (select avg(分数) from 成绩表 where 学生表.学号=成绩表.学号) from 学生表;go(15)将学生表中计算机学院的学生的学号、姓名、性别数据添加到student表中。select 学号,姓名,性别into studentfrom 学生表where 院系名称=计算机学院;go5、创建视图(1)创建“学生_课程_分数”视图,包括计算机学院的学生的学号、姓名,和他们选修的课程号、课程名、分数。create view 学生_课程_分数as select 学生表.学号,姓名,课程表.课程号,课程名,分数from 学生表,课程表,成绩表where 学生表.学号= 成绩表.学号and 课程表.课程号= 成绩表.课程号and 学生表.院系名称= 计算机学院(2)创建“不及格学生信息”视图,包括全校学生中有不及格成绩的姓名、课程名、分数。use xscjgocreate view 不及格学生asselect 姓名,课程名,分数from 学生表,课程表,成绩表where 学生表.学号=成绩表.学号and 课程表.课程号=成绩表.课程号and 分数=90 THEN A WHEN 分数=80 THEN B WHEN 分数=70 THEN C WHEN 分数=60 THEN D WHEN 分数=50 then 老年when (2013-YEAR(出生日期)= 80 then 优秀when 分数between 60 and 80 then 及格when 分数 100 or result 1987-01-01 00:00:00go(7)查询每位同学的课程门数、总成绩、平均成绩select StuID,count(StuID) as 课程门数,sum(result) as 总成绩,avg(result) as 平均成绩from Resultgroup by StuIDgo(8)显示平均成绩大于等于80分以上的学生情况。select StuID,avg(result) as 平均成绩from Resultgroup by StuIDhaving avg(result)=80go(9)按学号显示学生成绩,并计算每人的平均成绩和总成绩。select StuID,sum(result) as 总成绩,avg(result) as 平均成绩from Resultgroup by StuIDgo(10)从系部表中检索系部名称,从班级表中检索班级名称。(11)查询不及格学生成绩信息。select StuID,result,CouNamefrom Course,Resultwhere Course.couID=Result.CouIDand result1)go(18)查看“数据库原理”和“高等数学”两门课程的成绩。use Studgoselect CouPer from Coursewhere CouName=数据库原理 or CouName=高等数学go(19)查询单科成绩高于全班平均分的学生成绩信息。select StuID,result from Resultwhere result(select avg(result)from Result)go(20)查询系部信息和班级信息,要求连接起来的列只显示一次,不能出现重复。select Class.DepID,Claname,MinName,subject,Department.*from Classinner join Department on Class.DepID=Department.DepIDgo5、视图的创建和维护在数据库Stud中,基于Student、Department和Class表,完成下列操作。(1)创建一个视图“V_信管系学生”,要求视图中包括StuID、StuName、Department、Claname四列,并且还要限定视图中返回的行为“信息管理系”的学生。use Studgocreate view V_信管系学生as select StuID,Student.ClaID,StuName,Depname,Clanamefrom Student,Department,Classwhere Student.ClaID=Class.ClaID and Class.DepID=Department.DepID(2)修改上面的视图,视图中显示“计算机科学系”的学生。use Studgoalter view V_信管系学生as select StuID,Student.ClaID,StuName,Depname,Clanamefrom Student,Department,Classwhere Student.ClaID=Class.ClaID and Class.DepID=Department.DepID and Depname=计算机科学系(3)使用DROP VIEW语句删除上面创建的视图。use Studgodrop view V_信管系学生go6、游标和事务的创建和使用(1)定义一个游标,以实现逐行输出Stud数据库中“Student表”男性学生的记录。use Studgodeclare Student cursorforSELECT StuID,StuName,Stusex,StuBir,StuAddr,ClaIDFROM StudentWHERE Stusex=男(2)在Stud数据库中,对学号为“”的学生成绩加10分,若其分数高于90分,则事务回滚并输出相应的信息。use Studgobegin transactionupdate Resultset result=result+10where StuID=if(select result from Result where StuID=)90beginrollback transactionendelsebegincommit transactionend7、创建存储过程(1)创建带通配符的输入参数存储过程,返回满足指定条件的学生信息。如果没有提供参数,则返回所有学生的信息。use Studgocreate procedure stu_al_procxm varchar(8)=%asselect * from Studentwhere StuName like xmgo(2)设计一个存储过程,查询课程学时数在6070之间的课程名称、学时数和学分。use Studgocreate procedure stu_xs_procasselect CouName,CouPer,Coucrefrom Coursewhere CouPer60 and CouPer70go8、创建触发器(1)创建一触发器,当向Result表插入一记录时,检查该记录的学号是否在Student表中存在,课程号是否在Course中存在,若有一项为否,则不允许插入。use Studgocreate trigger res_insert_trigger on Resultfor inserta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5G通信塔建设项目总承包施工及信号覆盖合同
- 农业合作经营管理制度设计协议
- 标准劳务合同模板及注意事项
- 小型合伙企业合作协议范本
- 2025年哈尔滨市星光小学校招聘教师1人考试模拟试题及答案解析
- 2025年度湖南株洲市市直机关公开遴选73名公务员备考模拟试题及答案解析
- 2025辽宁省中国能源建设股份有限公司北方区域总部(北方建投)岗位竞聘1人考试模拟试题及答案解析
- 2025榆林定边县兴源幼儿园招聘(10-20人)备考考试试题及答案解析
- 2025年安徽省政府机关幼儿园保育员、保洁员招聘6名备考考试题库附答案解析
- 仓储物流管理系统采购协议
- 月饼订购合同模板
- 粮库环保节能技术改造
- 2024至2030年中国钾长石土壤调理剂行业市场深度分析及投资前景展望报告
- 2024事业单位工勤技能考试题库(含答案)
- DL∕T 1935-2018 架空导线载流量试验方法
- 异地就医备案的个人承诺书
- 小学数学解题研究(小学教育专业)全套教学课件
- 个体诊所备案信息表
- 招标代理服务服务方案
- 小提琴培训行业市场前瞻与未来投资战略分析报告
- (带目录)员工劳动合同书版Word模板下载
评论
0/150
提交评论