昆工数据库原理课程设计
数据库原理课程设计报告

数据库原理课程设计》课程设计任务书一、目的与要求1. 本实验是为网络工程、信息安全等专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力而设置的实践环节。
通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。
为后继课程和毕业设计打下良好基础。
2. 通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。
3. 通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界面设计和软件调试等各方面的能力。
是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。
二、主要内容针对一个具有实际应用场景的中小型系统 (见题目附录) 进行数据库设计,重点分析系统涉及的实体、实体之间的联系,实现增加、删除、更新、查询数据记录等基本操作。
大致分为如下步骤:1. 理解系统的数据库需求,分析实体及实体间联系,画出E-R 图:1.分析确定实体的属性和码,完成对该实体的实体完整性、用户自定义完整性的定义。
2.设计实体之间的联系,包括联系类型和联系的属性。
最后画出完整的E-R 图。
2.根据设计好的E-R 图及关系数据库理论知识设计数据库模式:1) 把E-R 图转换为逻辑模式;2) 规范化设计。
使用关系范式理论证明所设计的关系至少属于3NF并写出证明过程;如果不属于3NF则进行模式分解,直到该关系满足3NF为止,要求写出分解过程。
3) 设计关系模式间的参照完整性,要求实现级联删除和级联更新。
4) 用SQL语言完成数据库内模式的设计。
3.数据库权限的设计:1) 根据系统分析,完成授权操作;2) 了解学习收回权限的操作。
4.完成用户界面的设计,对重要数据进行加密。
5.连接数据库,用宿主语言实现系统所需的各种操作:1) 实现数据记录的录入、删除、查询和修改。
2) 以视图的形式完成复杂查询,比如多表、多条件等。
三、进度计划四、设计(实验)成果要求1. 在DBMS(如oracle , SQL Server 2005/2008 , DB2等)上完成完整的数据库的设计;2. 使用可视化开发平台完成信息系统,要求可以正确运行;3. 完成实验报告。
《数据库原理》课程设计

数据库原理课程设计报告2010 年12 月 25 日一、需求分析系统描述:随着计算机技术的快速发展,计算机在日常生活中的应用越来越广泛,无论是国防,军事,科技,医疗卫生,教育,计算机总是不可或缺的。
在如今这个飞速发展的信息化世界,每时每刻都有海量的数据在产生,传输和存储。
最为贴近我们学生生活的,比如大量的学生信息的管理,用传统的纸笔已经不现实,正式基于这一点,本人开发了这个简单的学生宿舍管理系统,以方便的对学生宿舍的学生信息进行管理,提高宿舍管理员的工作效率。
学生宿舍管理系统对于一个学校来说是必不可少的组成部分。
目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。
而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。
当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。
信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。
21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。
我们针对如此,设计了一套学生宿舍管理系统。
学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。
由于数据库的存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。
这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。
由于现在的大学生数量较多,并且对于一个大学,管理好学生的宿舍是至关重要的,所以开发一个较好的宿舍管理系统是很有必要的,而且在开发的基础上,设计一个较好的数据库是很重要的,并且对于每一个访问数据库的成员也是很重要的,在此基础上,数据库设计的结构同样是很重要的,基于数据库的开发必然涉及到前台的开发,在这里使用MFC进行前台开发,利用对话框来实现可视化连接数据库以及对数据库的操作,可以以一种直观的角度来实现对数据库操作,同时,这也是现在可视化发展的需要,由于现在绝大多数用户使用的是windows操作系统,可视化的编程显得尤为重要,而且用可视化的界对数据库实现操作,具有直接、简单、简洁等一系列功能与作用,在从数据库的角度来说,管理好一个宿舍,也就相当于管理好一个学校,学校是由学生组成的,对于学生的基本信息,要有一个系统的信息管理系统,也只有这样,才能使得管理员有较好的管理方向,也只有管理好,才能实现宿舍系统的可用性与实用性,在此的基础上,才能实现对于学生的基本信息管理,开发环境:CPU:Intel Pentium4 2.1GHz内存:2G操作系统:Microsoft Windows XP后台数据库在Microsoft SQL Server 2000 中文企业版前台最终用户接口程序在 Microsoft Visual C++ 6.0 Enterprise推荐用户配置:CPU:Intel Pentium3 1.2 GHz 或更高内存:256MB 或更高操作系统:Windows 2000 Server 或更高数据库系统:Microsoft SQL Server 2000管理员可进行的操作:宿舍管理员数据流图:查询学生信息 增加学生记录删除学生记录 修改学生信息二、概念结构设计E-R 图:N 1N1三、逻辑结构设计模式设计:属性名存储代码 类型 长度 备注 登记编号ID int 4 登记编号 姓名Name Nvarchar 10 姓名 学号Sno Nvarchar 20 学号 年龄 Age Nvarchar 10 年龄登记编号学号 年龄 登记时间 系别 寝室号 姓名 学生 寝室 寝室号 空闲床位数 寝室电话寝室长入住 宿舍管理员 管理系别Dept Nvarchar 20 系别联系电话Phone Nvarchar 20 联系电话入住时间Date Datetime 8 入住时间属性名存储代码类型长度备注寝室号DVDID Int 4 寝室号寝室长DVDName Nvarchar 50 寝室长空闲床位数Num Int 4 寝室还可容纳人数寝室电话Note Nvarchar 100 寝室电话关系模式:学生(登记编号,姓名,学号,年龄,系别,联系电话,寝室号,入住时间)寝室(寝室号,寝室长,空闲床位数,寝室电话)四、数据库的物理设计为了提高在表中搜索元组的速度,在实际实现的时候应该基于某些属性建立索引。
《数据库原理》课程设计安排

《数据库原理》课程设计一、课程设计目的1、培养学生运用所学课程《数据库原理》的理论知识和技能以及对数据库组织、管理和使用能力。
2、掌握数据库应用系统的整个设计过程(包括需求分析、概念结构设计、逻辑结构设计与物理设计与实施)二、实施时间本课程设计时间为一周。
三、课程设计的具体要求1.从附录一中按要求选择一个题目进行数据库设计。
2.数据库的设计:根据数据库应用系统设计过程,通过需求分析和系统分析,进行数据库的概念结构设计、逻辑结构设计等工作:●概念结构设计的E-R图●数据库逻辑结构设计是以表格的形式说明数据库中有几个表,每个表的表名以及每个表的各字段名,类型和约束(主、外键);●确定表之间的关联(一对一、一对多、多对多)●运用数据库理论确定每个表至少属于3NF。
四、编写课程设计报告1、封面2、课程设计任务书3、中文摘要,关键字4、目录5、前言:前言主要对本课题的目的和意义进行简要的说明。
6、系统分析与设计(1)需求分析,收集有关数据;(2)数据库的E-R图;(3)数据库的逻辑结构;(4)符合3NF标准。
7、结论。
对本系统作一个全面的评价:包括有何特点、存在的问题、改进意见等。
8、结束语。
通过做课程设计,你有何感想,学到了什么?9、参考文献。
五、课程设计的验收设计中期(具体时间待定)检查E-R图及表结构。
学生的课程设计说明书编写好之后,应交指导教师审阅,教师根据学生的设计资料,设计结果进行评定并给出成绩。
评分标准:1.数据库结构正确性(30%)。
2.数据库结构复杂性,由题目等级决定(30%)。
3.设计报告完成的质量(30%)。
4.出勤(10%)。
5.成绩采用五级分制评定。
六、其他1、论文要求上交纸质版及电子版。
2、纸质版论文要求使用论文模板,左侧装订,可以使用订书钉或拉杆夹。
论文中出现的表格及图要求居中,表格的标题至于表格之上,图的标题至于图之下。
3、电子版文件名命名规则:学号姓名.doc。
设计题目四:仓库管理系统(题目等级60)3、系统功能的基本要求:产品入库管理,可以填写入库单,确认产品入库;产品出库管理,可以填写出库单,确认出库;借出管理,凭借条借出,然后能够还库;初始库存设置,设置库存的初始值,库存的上下警戒限;可以进行盘库,反映每月、年的库存情况;可以查询产品入库情况、出库情况、当前库存情况,可以按出库单、入库单,产品、时间进行查询;2、数据库要求:在数据库中至少应该包含下列数据表:库存情况表;出库单表;入库单表;出库台帐;入库台帐;借条信息表,反映,借出人,借出时间,借出产品,借出数量,还库时间等。
数据库原理课程设计教案

一、课程设计的任务:
使用现行教流行的开发工具和SQL Server进行数
据库应用的开发,主要完成:
1、创建所用的数据库,创建所需要的表并设置好整性 约束。 2、开发出有相当完善功能并有一定规模的数据库应用
系统,系统中要能实现对数据的插入、删除、修改、
简单查询、复杂查询、数据的统计等。
三、数据库课程设计内容及要求
课题五:学生信息管理系统开发(1人)
(1) 用户管理:系统分为管理员、教师及学生用户, 每类用户对数据具有不同的操作权限。 (2)学生基本信息管理:对学生的学号、姓名、性别等基 本信息的录入、修改和删除。 (3)学生奖惩信息管理 (4)各类信息的查询:按简单条件和复合条件对各类信 息进行查询。 (5)学生信息的统计:自己设计统计条件对学生信息 进行统计。
育出版社
[3] 施伯乐 丁宝康 汪卫.《数据库系统教程》 高等教
育出版社2003年第2版 [4]庄成三等.《数据库系统原理及其应用》.电子工业 出版社
设计报告按照以下提纲书写
1) 摘要。 2) 需求分析。 3) 数据库概念结构设计。 4) 数据库逻辑结构设计。 5) 数据流图及程序结构框图。 6) 程序原代码及其说明。 7) 总结。
课题十一:商品交易系统开发(1-2人)
(1)商品信息管理:录入、修改与删除商品信息;
(2)供货商信息管理:录入、修改与删除供货商信息;
(3) 商品交易信息管理:录入、修改与删除商品交易信息; (4) 各类信息的查询:按不同条件对各类信息进行查询。 (5)各类信息的统计:按不同条件对各类信息进行统计。 (6)用户管理:录入、修改与删除用户信息以及对用户授权 的管理。
VB、Delphi、ASP等)完成系统开发。
数据库原理课程设计P

02
数据操作功能
支持插入数据、更新数据、删除 数据等操作。
04
数据控制功能
支持用户权限管理,包括用户登 录验证、角色分配、权限控制等
。
性能指标要求
数据一致性
确保数据库中的数据在并发操作下保持一致性, 避免数据冲突和脏读等问题。
性能测试结果展示
将性能测试数据以图表形式展示,便于分析和比较。
性能测试结果分析
对性能测试结果进行分析,找出系统性能瓶颈和优化方向。
07 课程总结与展望
课程成果总结
知识体系构建
通过本课程的学习,学生掌握了数据库的基本概念、原理和设计 方法,形成了完整的数据库知识体系。
实践能力提升
课程中设置了多个实验项目,学生通过实践操作,加深了对理论知 识的理解,并提升了数据库设计和应用能力。
根据测试目标和需求,设计覆盖所有功能和场景的测 试用例。
测试用例评审
组织相关人员对测试用例进行评审,确保测试用例的 准确性和完整性。
测试用例执行
按照测试用例的步骤和预期结果,执行测试用例并记 录测试结果。
性能测试结果分析
性能测试数据收集
收集系统性能测试的相关数据,包括响应时间、吞吐量、并发用户 数等。
感谢您的观看
THANKS
理论与实践结合
传统的数据库原理课程往往偏重于理论知识的传授,缺乏实 践环节。本课程设计旨在通过实践项目,帮助学生将理论知 识应用于实际场景,提高分析和解决问题的能力。
目的和意义
培养学生实践能力
通过课程设计,使学生能够将所学的数据库原理知识应用于实际 项目,培养学生的实践能力和动手能力。
数据库原理课程设计指导书

数据库原理课程设计指导书课程名称:数据库原理课程设计课程编号:40406051课程类型:必修学时:1周学分:1适用专业:计算机科学与技术、网络工程编制人:数据库原理课程组一、课程设计的目的和意义《数据库原理课程设计》是实践性教案环节之一,是《数据库原理》课程的辅助教案课程。
通过课程设计,使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教案内容,使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库经管系统软件,规范、科学地完成一个小型数据库的设计与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。
二、设计要求:通过设计一个完整的数据库,使学生掌握数据库设计各阶段的输入、输出、设计环境、目标和方法。
熟练掌握两个主要环节——概念结构设计与逻辑结构设计;熟练的使用SQL语言实现数据库的建立、应用和维护。
集中安排1周进行课程设计,以小组为单位,一般2~3人为一组,组内自由分工协作。
教师讲解数据库的设计方法以及布置题目,要求学生根据题目的需求描述,进行实际调研,提出完整的需求分析报告,建立概念模型、逻辑模型、物理模型,在物理模型中根据需要添加必要的约束、视图、触发器和存储过程等数据库对象,生成创建数据库的脚本,提出物理设计的文档,最后应用某种宿主语言完成主要功能设计和实现。
要求如下:1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。
2、既要虚心接受老师的指导,又要充分发挥主观能动性。
结合课题,独立思考,努力钻研,勤于实践,勇于创新。
3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
4、课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。
5、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。
数据库原理课程设计实验指导书(通用)

数据库原理课程设计实验指导书(通⽤)《数据库原理课程设计》实验指导书实验名称:数据库原理课程设计实验类型: 综合性实验学时:⼀周适⽤对象: 计算机科学与技术⼀、实验⽬的这门课是为计算机科学与技术专业的学⽣在学习数据库原理B后,为培养更好的解决问题和实际动⼿能⼒⽽设置的实践环节。
通过这个环节,使学⽣拥有能够应⽤数据库原理对数据库系统进⾏设计的能⼒。
为后继课程和毕业设计打下良好基础。
⼆、实验要求设计⼀个基于数据库的综合数据库管理系统,包括后台数据库的设计和前台⽤户终端的设计,具体题⽬四年不重复,要求:1.准备⼯作:在课外安装相关的数据库管理系统软件和开发⼯具软件,并根据参考书熟悉DBMS 的功能、结构,为后期综合实验打好基础。
2.概念模型的设计:根据题⽬要求,列出实体集,并应⽤E-R图描述实体的属性和实体之间的联系。
3.逻辑模型的设计:根据已建⽴好的E-R图选⽤关系模型设计关系表,包括设计关系表的属性、主码等,要求关系表中的属性名必须使⽤英⽂,呈现给⽤户的视图时显⽰中⽂。
4.完整性设计:包括实体完整性、参照完整性和⽤户⾃定义完整性的设计;⽐如年龄的范围、考试成绩的范围、职务的范围等。
并设计多表间的联系,⽐如学⽣表和成绩表,要求根据E-R图的设计设计关系表的外码,并举例说明。
5.规范化设计:使⽤范式理论证明你所设计的关系⾄少属于3NF,写出证明过程;否则进⾏模式分解,直到该关系满⾜三范式,并写出分解过程;6.SQL语⾔的考察:使⽤DBMS所⽀持的SQL语⾔完成关系表的建⽴,数据的插⼊、修改和更新等功能,着种考查关系表的查询(单表查询、多表查询和组合查询等,跟关系代数⼀起考查);7.图形化⽤户界⾯的设计:完成题⽬所要求的各种功能,并⽤菜单或者⼯具栏的形式组织各种功能(如数据的录⼊、查询、更新维护等);8.权限管理的设计:所设计的系统应该有⼀定的权限管理,不同的⽤户登陆完成功能是不⼀样的,对数据表的权限也不同。
《数据库原理》课程设计

《数据库原理》课程设计一、课程设计的性质、目的和意义《数据库原理》课程设计是实践性教学环节之一,是《数据库系统原理》课程的辅助教学过程,是计算机科学与技术专业的必修课。
通过课程设计,结合实际的操作和设计,巩固课堂教学内容,使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现,把理论课与实验课所学内容综合为一,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力,从而为后续课程的学习,毕业设计环节以及将来的实际工作打好坚实的基础。
二、课程设计的具体内容数据库系统原理的课程设计要求学生综合利用本课程的有关知识,在教师的指导下,利用特定的数据库设计环境,针对具体的问题,完成从系统的需求分析、数据库的概念设计、数据库的逻辑设计,到数据库实现等设计过程,最终实现一个较为完整的反映应用需求的数据库系统。
因此,在设计中,要求学生应该全面考虑各个设计环节以及它们之间的相互联系。
下面是各个设计阶段的具体内容。
1.系统需求分析需求分析是数据库系统设计的一个重要的环节。
本阶段应该对整个应用情况作全面的、详细的调查,确定特定数据库应用环境下的设计目标,收集该应用环境下针对系统设计所需要的基础数据以及对这些数据的具体存储要求,从而确定用户的需求。
用户对数据库的需求包括:⑴处理需求。
即用户要完成什么处理功能等。
学生在设计中应根据具体的课题要求确定系统应该实现的功能,一些基本的功能通常是必须具备的,如用户的管理与维护,基本数据的维护,灵活的信息查询等。
⑵信息需求。
即在数据库中需要存储哪些数据。
学生应该根据具体的课题,认真分析有关的要求,确定本设计的信息需求。
⑶安全性和完整性功能。
实践中这是一个需要与用户不断交流才能逐步确定的需求。
本课程设计要求学生在自己的设计中能反映出基本的安全性和完整性功能。
本阶段的设计结果(即系统需求分析)应该在课程设计报告中进行详细描述,画出系统的数据流图,写出较为详细的数据字典,作为本课程设计的验收依据之一。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
正文:《数据库原理》课程设计报告学号:20111040***姓名:******班级:自动化111昆明理工大学信息工程与自动化学院2013年12月<一>前言一、课程设计目的:1.加深对讲授内容的理解《数据库原理及应用》中有关数据库技术的基本理论、基本概念、设计与实现的方法和阶段性知识,光靠课堂讲授既枯燥无味又难以记住,但它们都很重要,要想熟练掌握,必须经过大量实践环节加深对它们的理解。
2.通过课程设计,掌握数据库系统设计与开发的方法及步骤数据库是一门应用性很强的学科,开发一个数据库系统需要集理论、系统和应用三方面为一体,以理论为基础,以系统(DBMS)作支柱,以应用为目的,将三者紧密结合起来。
同时结合实际需要开发一个真实的数据库系统,对于较大型的系统可多人一起完成,但无论如何都应完成数据库的需求分析、数据的分析与建模、数据库的建立、数据库的开发与运行等全部过程。
在此过程中将所学的知识贯穿起来,达到能够纵观全局,分析、设计具有一定规模的题目要求,基本掌握数据库系统设计与开发的基本思路和方法并且做到对知识的全面掌握和运用。
3.培养学生自学以及主动解决问题的能力通过本次设计,使同学能够主动查阅与数据库相关资料,掌握一些课堂上老师未曾教授的知识,从而达到培养学生自学以及主动解决问题的能力的目的。
二、课程设计基本要求:1.课程设计应由学生本人独立完成,严禁抄袭,如果发现最后的设计基本相同者(系统需求分析与功能设计、数据库的概念设计、逻辑设计,数据库的实现与运行等内容基本相同),一经验收教师认定其抄袭行为,则成绩均为不及格。
2.掌握所学的基础理论知识,数据库的基本概念、基本原理、关系数据库的设计理论、设计方法等。
熟悉数据建模工具与数据库管理系统SQLServer软件的使用。
3.按时上机调试,认真完成课程设计。
4.认真编写课程设计报告。
三、意义:数据库技术是近年来计算机科学技术中发展最快的领域之一,它已成为计算机信息系统与应用系统的核心技术和重要基础。
《数据库原理及应用》课程设计重视实践环节,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。
<二> 需求分析2.1 系统功能要求设计此系统实现如下系统功能:(1)使得学生的成绩管理工作更加清晰、条理化、自动化。
(2)通过用户名和密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能。
容易地完成学生信息的查询操作。
(3) 设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。
2.2 系统模块设计成绩管理系统大体可以分成二大模块如, 一是学生的基本信息模块,里面应该包含学生的各方面的基本信息;再者便是课程管理模块, 在该模块中应该包含有对学生成绩信息的查询和处理,如平均成绩、最好成绩、最差成绩以及不及格学生的统计等功能模块;再其次还有教师、课程等相关信息的模块;可以得到系统流程图:2.3 数据字典数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。
利用SQL Server 2000建立“学生选课”数据库,其基本表清单及表结构描述如下: 数据库中用到的表:数据库表名 关系模式名称 备注Student 学生 学生学籍信息表 Course 课程 课程基本信息表 Score 成绩选课成绩信息表Student 基本情况数据表,结构如下: 字段名 字段类型 Not Null 说明 Student _sno Char Primary key 学号 Student _sn char Not Null 学生姓名 Student _sex char ‘男’或‘女’ 性别 Student _dept char 系别 Student_age char 年龄 Student_address char地址course 数据表,结构如下: 字段名 字段类型 约束控制说明 course_cnochar主键(primary key )课程号登陆失败学生管理课程管理退出系统用户 验证成绩查询登陆成功course_cname char not null 课程名称 course_hour intnot null 课时 course_score numeric(2,1)not null学分score 情况数据表,结构如下: 字段名 字段类型 约束控制 说明 score_id int not null 成绩记录号 course_cno char 外部键 课程号 student_sno char 外部键 学号 scoreint成绩三 概念模型设计由需求分析的结果可知,本系统设计的实体包括:(1)学生基本信息:学号,姓名,性别,地址,年龄,专业。
(2)课程基本信息: 课程名,课程号,分数,学时,学分。
这些实体间的联系包括:(1)每位学生可以学习多门课程,每门课程可供多位学生学习。
由上述分析可得到系统的E —R 图:选修课程成绩 学生 课程号课程名学时学分分数学号姓名性别系别地址 年龄四逻辑和物理结构设计4.1由系统E—R图转化而得到的关系模式如下:(1)学生(学号,姓名,性别,年龄,地址,系别),其主关键字为学号;(2)课程(课程名,课程号,学时,学分),其中主关键字为课程号;(3)成绩(课程号,学号,分数)其中主关键字为学号和课程号。
可以与学生关系模式合并为:学生(学号,姓名,性别,年龄,地址,系别,成绩,课程号)。
4.2 确定关系模型的存取方法在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。
可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。
在实际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:在经常需要搜索的列上建立索引;在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。
才能充分利用索引的作用避免因索引引起的负面作用。
4.3 确定数据库的存储结构确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
因为该成绩管理系统的数据量小,,所以我们只用把数据存储在使用的电脑硬盘上,不用作更多的安排。
(1)创建学生基本信息表:create table Student (学号varchar(11) not null,系别varchar(5) not null,姓名varchar(6) not null,性别varchar(2) not null,年龄char(2) not null,地址varchar(20) not null,constraint PK_STUDENT primary key (学号))goexecute sp_addextendedproperty 'MS_Description','学生基本信息描述','user', '', 'table', 'StudentsInfo'go(2)创建课程表:create table Course (cno varchar(5) not null,cname varchar(10) null,xueshi smallint null,xuefen int null,constraint PK_COURSE primary key (课程号))goexecute sp_addextendedproperty 'MS_Description',(3)创建学生与课程的成绩表create table SC ( sno varchar(11) not null,cno varchar(5) not null,chengji varchar(4) not nullconstraint PK_SC primary key (学号, 课程号))go在SC表上创建索引SC_FK与SC2_FKcreate index SC_FK on SC (学号ASC)Gocreate index SC2_FK on SC (课程号ASC)go建立课程号索引create index TC_FK on TC (课程号ASC)go下图显示了学生,课程和成绩三个关系的物理设计其中课程号与学号号分别为关系的主码。
五数据库的实施与维护5.1 数据库的实施:此阶段主要任务包括创建数据库,加载初始数据,数据库试运行,数据库的安全性和完整性控制数据库的备份与恢复,数据库性能的监督分析和改仅,数据库的重组和重构等。
首先在数据库中建立一个学生成绩管理系统数据库,然后新建一个数据源。
主要代码如下:#include "stdafx.h"#include "StudentScore.h"#include "Course.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;// CCourseIMPLEMENT_DYNAMIC(CCourse, CRecordset)CCourse::CCourse(CDatabase* pdb): CRecordset(pdb){ //{{AFX_FIELD_INIT(CCourse)//}}AFX_FIELD_INITm_nDefaultType = snapshot;CString CCourse::GetDefaultConnect(){ return _T("ODBC;DSN=");}CString CCourse::GetDefaultSQL(){ return _T("");}void CCourse::DoFieldExchange(CFieldExchange* pFX){//{{AFX_FIELD_MAP(CCourse)pFX->SetFieldType(CFieldExchange::outputColumn);//}}AFX_FIELD_MAP}// CCourse diagnosticsvoid CCourse::AssertValid() const{ CRecordset::AssertValid();}void CCourse::Dump(CDumpContext& dc) const{ CRecordset::Dump(dc);}// MainFrm.h : interface of the CMainFrame classclass CMainFrame : public CFrameWnd{protected: // create from serialization onlyCMainFrame();DECLARE_DYNCREA TE(CMainFrame)// Attributespublic:// Operationspublic:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMainFrame)virtual BOOL PreCreateWindow(CREATESTRUCT& cs);//}}AFX_VIRTUAL// Implementationpublic:virtual ~CMainFrame();protected: // control bar embedded members//CStatusBar m_wndStatusBar;//CToolBar m_wndToolBar;// Generated message map functionsprotected://{{AFX_MSG(CMainFrame)afx_msg int OnCreate(LPCREA TESTRUCT lpCreateStruct);afx_msg void OnPassword();afx_msg void OnUser();afx_msg void OnStudent();afx_msg void OnTeach();afx_msg void OnTeacher();afx_msg void OnScore();afx_msg void OnQueryTeach();afx_msg void OnQueryScore();afx_msg void OnCourse();//}}AFX_MSGDECLARE_MESSAGE_MAP()};//{{AFX_INSERT_LOCA TION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line. // CScoreAddDlg dialogCScoreAddDlg::CScoreAddDlg(CWnd* pParent /*=NULL*/): CDialog(CScoreAddDlg::IDD, pParent){/{{AFX_DA TA_INIT(CScoreAddDlg)//}}AFX_DA TA_INIT}void CScoreAddDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DA TA_MAP(CScoreAddDlg)DDX_Control(pDX, IDC_SCORE_STUDENT, m_cStudent);DDX_Control(pDX, IDC_SCORE_SCORE, m_cScore);DDX_Control(pDX, IDC_SCORE_COURSE, m_cCourse);//}}AFX_DA TA_MAP}BEGIN_MESSAGE_MAP(CScoreAddDlg, CDialog)//{{AFX_MSG_MAP(CScoreAddDlg)//}}AFX_MSG_MAPEND_MESSAGE_MAP()void CScoreAddDlg::OnOK(){CString student,course,score,student_no,course_no;m_cStudent.GetWindowText(student);m_cCourse.GetWindowText(course);m_cScore.GetWindowText(score);else//成绩不为空{CString strSQL;//查出该学生的学号strSQL.Format("select * from student where active_status='Y' and student_name='%s'",student);CRecordset m_recordSet=&m_database;m_recordSet.Open(CRecordset::forwardOnly,strSQL);m_recordSet.GetFieldValue("student_no",student_no);m_recordSet.Close();//查出该课程的课程号strSQL.Format("select * from course where active_status='Y' and course_name='%s'",course);m_recordSet.Open(CRecordset::forwardOnly,strSQL);m_recordSet.GetFieldValue("course_no",course_no);;m_recordSet.Close();BOOL CScoreAddDlg::OnInitDialog(){CDialog::OnInitDialog();CRecordset m_recordSet;if(!m_database.IsOpen()){m_database.Open(_T("student"));m_recordSet.m_pDatabase=&m_database;}CString strSQL;strSQL.Format("select course_name from course where active_status='Y'");m_recordSet.Open(CRecordset::forwardOnly,strSQL);for(int i=0;i<m_recordSet.GetRecordCount();i++){CString temp;m_recordSet.GetFieldValue("course_name",temp);m_cCourse.AddString(temp);m_recordSet.MoveNext();}m_recordSet.Close();m_cCourse.SetCurSel(1);strSQL.Format("select student_name from student where active_status='Y'");m_recordSet.Open(CRecordset::forwardOnly,strSQL);for(int j=0;j<m_recordSet.GetRecordCount();j++){CString temp;m_recordSet.GetFieldValue("student_name",temp);m_cStudent.AddString(temp);m_recordSet.MoveNext();}m_recordSet.Close();m_cStudent.SetCurSel(1);{this->SetWindowText("成绩窗口");}return true;}void CScoreAddDlg::OnCancel(){// TODO: Add extra cleanup hereCDialog::OnCancel();}5.2部分操作截图:下图显示了学生登陆系统进行查询时界面:下图显示了进行课程查询时界面:成绩查询功能:5.3数据库的维护当试运行数据库合格后,数据库开发设计的工作就基本完成了,接下来就是正式运行中的调试,应为该系统比较简单,数据量小,数据库中几乎不会发生什么大的变化,但是还是需要做好数据的备份,在sqlserver中我们可以利用备份数据库的功能对已经设计好的数据做备份,如果数据库受到破坏或系统故障,我们便可轻松的利用备份文件恢复数据库的数据。