数据库原理篇1
一、关于数据库原理的学习
与其他语言相比,数据库原理尽管从内容上偏重于理论,但在学习过程中仍然要注重解决实际问题的能力,可采用如下方法来学习:
1.学习数据库设计时必须要对整个数据库设计流程有清晰的认识。从“需求分析概念结构设计逻辑结构设计数据库物理数据库运行和维护”,各阶段的主要任务都要清楚明了。建议大家参照数据库书中例题多做一些数据库设计,会有很好的效果。
2.学习时首先应注重对一些基本概念的理解,然后通过必要的实践性环节加深对概念的理解,以此掌握实际动手能力。通过在SQL Server 2005这种的中型数据库系统的大量的操作练习,不仅能加深对数据库教材内容的理解,同时还可以全面提高实际的运用能力。在课程设计中,通过运用所学的数据库设计理论来指导完成数据库系统的实际项目设计,可以进一步巩固所学的理论知识。
3.要认真消化书本和补充素材内容,认真完成作业和课程设计实验。
4.充分利用丰富网络教学资源(国内外大学同类课程链接、数据库工业界和学术界资源等),不断扩展相关的知识。大家可以多读别人的代码,通过模仿、修改、创新,迅速掌握最新技术和解决实际问题的方法。
5.数据库内容的学习涉及计算机许多领域的知识和相关的应用,它是一门承前启后的课程。在学习的过程中要注意相互之间的联系。
二、关于数据库设计
我们已经懂得了数据库原理的一些知识后,数据库设计就提到日程来了。由于“数据库原理”课程不仅具有很强的理论性,而且具有很强的实用性,数据库原理学习的好坏将直接影响到我们开发数据库应用系统的能力。我现在给大家介绍一些数据库设计中的几个技巧。
1.综合运用数据库原理的知识,完成小型数据库系统底层的全面设计,初步掌握数据库系统开发的基本方法。
2.掌握数据库的设计的每个步骤,以及提交各步骤所需***表和文档。通过使用目前流行的DBMS,建立所设计的数据库,并在此基础上实现数据库查询、连接等操作和触发器、存储器等对象设计。
3.需求分析。根据自己的选题,绘制的DFD、DD***表以及书写相关的文字说明。
4.概念结构设计。绘制所选题目详细的E-R***。
5.逻辑结构设计。将E-R***转换成等价的关系模式;按需求对关系模式进行规范化;对规范化后的模式进行评价,调整模式,使其满足性能、存储等方面要求, 设置实体完整性、域完整性和参照完整性。根据局部应用需要设计外模式。
6.物理结构设计。选定实施环境,存取方法等。
7.数据实施和维护。用DBMS建立数据库结构,加载数据,实现各种查询、链接应用程序,设计库中触发器、存储器等对象,并能对数据库做简单的维护操作。
8.用Delphi等设计数据库的操作界面。
9.设计小结。总结数据库设计的过程、体会及建议。数据库设计小结有以下三个方面的要求:(1)问题描述。包括此问题的理论和实际两方面。(2)解决方案。包括:E-R模型要设计规范、合理,关系模式的设计至少要满足第三范式,数据库的设计要考虑安全性和完整性的要求。解决方案中所设计的E-R模型、关系模式的描述与具体实现的说明。(3)具体的解决实例。
数据库原理篇2
关键词:数据库原理与应用;教学改革;教学实践
中***分类号:G424 文献标识码:A 文章编号:1009-3044(2014)19-4373-02
《数据库原理与应用》是高校计算机及相关专业的核心专业基础课程之一,是一门理论与实践结合性较强的综合性课程。该课程涉及内容可分为两个部分:1) 基础理论部分,包括:数据库系统基础知识(数据库发展、构成、专业术语等)与数据库设计理论。2) 具体应用部分,包括:数据库与表的创建;数据查询、增、删、改;视***;索引;存储过程;触发器及数据库安全与维护等。
《数据库原理与应用》课程教学目标为:培养学生数据库及其对象的应用和管理能力;培养学生使用Transact-SQL语言进行程序设计的能力;培养学生进行数据库日常管理和维护的能力。针对不同的教学内容,如教学过程采用相同教学方法,极易产生数据库理论与具体应用脱节的现象,易使学生产生数据库理论过多的反感情绪,无法达到教学预期目标。
1 传统数据库教学局限性
传统数据库课程的教学的局限主要分为两个方面:1) 过度重视理论,忽略实践教学;2) 强调数据库软件的应用,忽视数据库基本理论体系的讲授。
具体说明如下:
1) 重理论,轻实践,无法激发学生学习兴趣
传统数据库原理与应用课程在课程大纲设置方面,理论课程占学时数远高于实验学时数,且不设置单独的课程设计,学生上机具体操作练习学时严重不足。实验课程往往只针对某个具体知识点,实验内容不具有连贯性,学生不清楚如何利用数据库进行具体编程实践,学习过程无成就感,最终导致学习缺乏成就感,兴趣缺失,学习效果较差。
2) 过度强调数据库软件的作用
为了解决传统数据库教学过程“重理论,轻实践”的缺陷,一些数据库教育研究者提出了依托某一款数据库软件平台进行,以案例为驱动进行课程讲授的教学方法。但是在教学过程中矫枉过正,过度强调应用(过度强调数据库平台的应用方法)而忽视数据库整体理论系统的讲解,不能使学生完整、系统的掌握数据库的基本相关理论。学生掌握的数据库知识仅限于平台应用,理论基础不足,为学生后续的提高与发展埋下隐患。
3) 教学与实践脱节
高等院校在传统的教学过程中强调数据库理论知识的完备性,缺乏学习的应用性和针对性,理论性强,概念抽象,理论和实践教学存在不同程度上的脱节。传统数据库原理与应用课程教学内容主要集中在数据库系统基本理论与数据库设计阶段,在具体应用方面仅涉及各数据库对象的基本操作,如:创建、修改、删除等,对数据库技术在具体软件项目开发过程中的应用知识缺乏系统、详细的讲解,造成数据库理论教学与实践脱节严重,导致学生在完成数据库课程学习后无法掌握数据库技术的具体应用方式,不能做到学以致用。
4) 教学实践不符合软件工程的原则
传统数据库原理与应用课程教学过程,从课后作业到上机实践再到课程设计,几乎全部为单个学生***完成,未严格按照软件工程原则进行完成。现代各种数据库应用系统开发基本都是工程化的合作开发,其基本特征是按照软件工程学的原则进行组织。在课程后续的各种实践环节(如:毕业设计)中很多学生不懂得如何利用团队合作去完成一个数据库系统的具体设计与开发,严重影响了实践环节的完成质量,最终影响学生的数据库技术应用水平。
2 改进的教学方法探索实践
目前本校《数据库原理与应用》课程使用的教学实验平台为SQL SERVER2005。课程共64学时,其中实验16学时,SQL SERVER2005数据库具体应用中,完整的数据库系统包括系统界面(利用其它高级语言开发)和后台数据库。由于SQLServer平台与其它开发平台的相对***性,在现行教学方式下,学生在学习过程中往往不清楚如何利用SQLServer2005平台进行项目开发。
主要原因有两个:
1) SQL SERVER2005数据库课程的教学过程只涉及后台数据库本身的操作,知识较为孤立。学生在学习过程中无法建立完整数据库系统的概念,特别是对界面开发过程概念较为模糊。
2) 学生在学习数据库课程前未接触过其它高级语言(C语言除外),尝试将数据库结合某种高级语言(C#、C++、Java等)进行讲解困难较大(主要是内容太多,难以在规定的课时内获得较好效果)。
针对上述数据库课程教学过程中出现的问题,结合本校数据库的教学实际,通过分析课程内容及培养目标,最终提出了改进的数据库课程教学方法。方法具有两套具体实施方案。
两套具体实施方案,分别描述如下:
1) 制定适合数据库教学的教学大纲
(1) 通过制定新教学大纲,在数据库课程开课前,开设一门高级语言课程做为基础,以解决学生学习数据库系统组成过程中不清楚应用程序及其接口含义的问题。(可选C#或Java);
(2) 在讲解完毕数据库基础理论(基本概念、数据库设计理论等)后,以具体实例(简单的数据库管理系统等)为基础,讲解后续内容,具体包括:数据库与表的创建;数据查询、增、删、改;视***;索引;存储过程与触发器及数据库安全与维护,将理论教学作为实践教学的基础,实践教学作为理论教学的深化,促进学生对数据库技术的深度掌握;
(3) 针对不同的授课内容采用不同的课程时间安排,实践性较强章节(如:视***、存储过程、触发器等)宜采取“讲一学时练一学时”的方式进行授课,其它章节采取“讲一次内容,上一次机”的方式进行授课,灵活制定上机实验计划,最大程度上做到讲练结合,重视理论而不忽视实践。
2) 制定新教学大纲在高校教学中不易实现,在保持相关课程开课顺序不变,数据库课程理论课时、实践课时不变的情况下,课程改革设想如下:
(1) 课堂教学:利用少量课堂时间(一小节课50分钟或一大节课100分钟),结合实例介绍数据库系统的一般结构、开发流程、开发平台(不涉及具体语言的编程)。要求学生自由分组(每组4~6人),自选项目(教师掌控选题难度,并提供建议项目若干)利用课余时间进行分组实施,使学生初步建立软件工程的思想及开发团队的概念。
(2) 实践方式:适当利用学生课余时间。学生***利用课余时间完成具体语言、开发平台的学习,以小组为单位分模块完成具体项目实现,各模块任务需在教师指导下具体到人,并制定详细任务书,促进学生的实践积极性,防止学习惰性的产生。
(3) 教师与学生的交流互动:作为教学过程的重要环节,师生的交流互动在学生学习实践过程中的地位相当重要。具体措施描述如下:
①保证课程必要的现场答疑时间,每周两小时,集中解答学生在理论学习与实践过程中遇到的问题;
②充分利用现代学生熟悉的现代通讯工具(如:QQ、微信、微博、YY等),提升学生的讨论积极性,建立专门YY频道,供学生以***多人语音的形式讨论项目进展、疑难问题,随时了解学生实践进度,解答疑难,防止学生产生畏难情绪,促进实践活动进行。
(4) 项目提交、评讲及分数评判:课程结束前一周,以小组为单位打包提交系统(包括:数据库系统、应用系统界面)。由三至四位教师按照系统结构是否合理、功能是否完整、代码是否规整给出评判成绩。分别评出UI结构设计最佳系统与功能实现最佳系统,鼓励学生讲解开发心得,供大家学习参考。
3 结束语
在明确《数据库原理与应用》课程主要内容与教学目标的基础上,该文首先分析了传统《数据库原理与应用》教学过程的缺陷,结合本校数据库课程的实际提出了两套数据库教学改革的具体实施方案,并选择方案二进行实施。一学期以来,学生在较好掌握数据库系统理论知识的前提下,较好的完成了相关实践任务。该教学方案成功激发了学生学习数据库课程的兴趣,提升了学习积极性,使学生在加深理论知识理解与掌握的同时提高了动手实践能力,方案实施效果明显。
参考文献:
[1] 王峰.实用数据库技术[M]. 北京:中国水利水电出版社,2012.
[2] 萨师煊,王珊.数据库系统概论[M]. 2版.北京:高等教育出版社,2000.
[3] 钟辉.数据库课程教学改革探索与实践[J]. 沈阳建筑大学学报:社会科学版,2010(3).
数据库原理篇3
关键词:数据库系统;数据库;属性;码;教学方法
中***分类号:G642文献标识码:A 文章编号:1009-3044(2007)05-11445-01
1 引言
根据《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》数据库系统原理课程是计算机科学与技术、计算机工程、软件工程及信息技术专业方向的核心课程,主要研究信息模型与信息系统、数据库系统、数据建模、关系数据库、数据库查询语言、关系数据库设计、事务处理等核心内容。其中还包括分布式数据库、物理数据库设计、数据挖掘、信息存储与信息检查、超文本和超媒体、多媒体信息与多媒体系统、数字***书馆等选修内容。关系数据库理论与设计是整个数据库系统原理课程中核心中的核心内容。根据笔者近二十年对数据库课程的讲授经验,从关系数据库原理课程的教学内容出发研究数据库课程的教学方法。
2 认真分析研究教材,注重学科联系
数据库是研究数据处理技术的一门综合性的学科,它涉及到离散数学、数据结构、操作系统、软件工程、计算机原理及其它应用领域的知识和方法相结合的学科。在关系代数和关系演算中,用到离散数学的理论;在研究数据的物理组织时,用到数据结构的相关知识;在研究事务的并发时,用到操作系统的理论和方法;在进行数据库设计时,用到软件工程的原理和方法;在讲授数据库系统的组成时,用到计算机原理等方面的知识。由于学科的交叉性,突出了数据库课程在整个计算机学科中的重要地位。
由于大部分学校在讲授数据库系统原理前开设了Visual Foxpro 6.0程序设计课程,它属于原理的应用部分,是关系数据库的产品之一。教师在进行课程讲授时,要结合理论讲清Visual Foxpro6.0应用了数据库的哪些原理。如数据表来源于规范化理论或者模式分解理论,Visual Foxpro6.0讲的数据表、记录、字段(数据项)和原理中讲的关系、元组、属性是同一个概念的不同名称等。
3 注重基本概念教学,为理论学习打好基础
3.1 弄清概念之间的区别与联系
在数据库课程的教学中,掌握好基本概念对理论课程的学习很有帮助,数据库中的有些概念贯穿在课程的始终,这些概念的掌握对整个课程的学习有很重要的作用。如数据库、数据库系统、关系、元组、实体、属性、事务、完整性约束等。有的概念联系比较紧密,弄清概念之间的联系与区别,对概念的掌握有较大帮助。如实体和属性的概念,实体是客观存在并可以相互区别的事物,属性是对实体特征的描述,它们之间有必然的区别,但是也有一定的关系。实体和属性不是绝对的,如果属性需要进一步描述,则属性就作为实体,反之如果实体不需要再进一步描述,则实体也可以作为另一实体的属性。如在考虑学生管理数据库时,***治面貌如果只考虑现在的情况(***员、团员等),则***治面貌就是学生实体的属性,但是如果考虑学生何时入团、何时入***,则***治面貌就是一个实体。再如事务和程序的概念等都有较强的联系。
3.2 掌握概念定义的前提和层次性
数据库中的概念由渐入深,随着课程教学内容的逐渐深入一些基本概念也更加具体和完善。例如在课程中,有四个地方都定义了码,在介绍概念模型时,码定义为:唯一标识实体的属性集。在研究关系模型时,码定义为:表中的某个属性组,它可以唯一确定一个元组。给出了码的粗略描述,没有实质性的量化定义。而在关系数据库中,讲授关系的形式化定义时,码定义为:若关系中某一属性组的值能唯一的标识一个元组,则称该属性组为候选码,若一个关系有多个候选码,则选中一个为主码。在讲授规范化理论时,学习了函数依赖后,利用函数依赖的概念定义码为:设K为R中的属性或者属性组合,若KU则K为R的候选码。若候选码多于一个,则选定其中的一个为主码。从理论上来说,这四个概念都是正确的,但一个比一个更具体、更严密、更准确。
同样在对函数依赖讲授时也采用了同样的手法,在关系数据理论中函数依赖定义为:设R(U)是属性集U上的关系模式,X、Y是U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或者Y函数依赖于X,记作XY。为了便于Armstrong公理的证明,对函数依赖又给出了定量的描述。定义为:若对于R(U)的任意一个可能的关系r,t和s是r的任意两个元组,X、Y是U的子集,若对于任意一个t[X]=s[X],必然有t[Y]=s[Y],则称X函数确定Y或者Y函数依赖于X,记作XY。教师要讲清楚对同一概念为什么这样处理,这些概念层层的描述有什么好处。掌握了同一概念的不同定义,便于对这些概念的深入理解。
4 注重理论与实践的结合
4.1 注重动手能力,搞好课程实验
学习数据库课程的主要目的是为了应用,结合所学的数据库语言搞好每一章的课程实验,以便验证所学理论是很重要的。如在讲授SQL语言时,让学生建立一个数据库,并结合所学内容做查询、插入、删除、修改等实际操作,真正理解和掌握SQL语言的应用环境。在讲授数据库安全性和完整性时,利用实际系统让学生对系统做数据控制。提高学生对数据库课程的认识,激发学生的学习欲望。
4.2 加强课程设计,提高学生综合能力
数据库设计理论主要是为了指导数据库实践,通过系统的理论学习和部分单元训练,通过课程设计让学生掌握数据库设计的全过程,并进一步掌握数据库课程。课程设计是数据库中必不可少的,我采取将学生分组的方式每5-6名同学一组,为每组同学拟定一个题目,如***书管理系统、学生档案管理系统、销售管理系统、能源管理系统等,教师提出要求让学生深入***书馆、学生管理部门或者企业进行系统调查,进行需求分析设计出数据流***,编写数据字典,然后进行概念结构设计,从数据流***和数据字典中提炼出E-R***,再进行逻辑结构设计、物理结构设计、数据库实施和维护的设计。让每一位同学明确数据库设计的过程,使每一组同学进行上机调试,使所有功能进行程序实现,最后让同学们进行设计答辩。
通过课程设计和设计答辩,学生巩固了理论知识,丰富了课程实践,掌握了如何运用理论指导实践,也对今后其它课程设计以及毕业设计和毕业论文的书写打下了基础,收到较好的效果。
4.3 扩展学生思路,向学生传授新知识
由于课本的出版周期长,更新也较慢,也由于课本编写的一些要求,所以课本上有些内容是陈旧的,对有些问题也不可能全面的介绍,有些新知识也很难溶入到教材中。我在讲授课程时,除了给学生有意补充新知识外,又给学生开设了“数据库中的空值问题”、“数据仓库和数据挖掘技术”、“目前数据库的研究方向”、“数据库的查询优化问题”等专题讲座。扩充了学生的视野,激发了学生的兴趣,为他们今后的学习和研究打下了一定的基础。
5 结语
数据库系统原理课程是计算机专业的核心课程,随着计算机科学的发展,数据库系统原理课程也在不断的发展,教学内容不断更新,教学方法也在不断改革,所以课程教学改革是一个永恒的课题。只有不断的改革教学方法和教学手段,才能使教学更加丰富,使学生学到更多的知识。
参考文献:
[1]***高等学校计算机科学与技术教学指导委员会编制.高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》[M].北京.高等教育出版社,2006.
[2]王珊,萨师煊.数据库系统概论(第4版) [M].北京.高等教育出版社,2006.
数据库原理篇4
关键词:数据库;原理;SQLServer教学
数据库原理与应用课程内容包括数据库理论、数据库应用两大部分,数据库原理与应用课程的主要任务是掌握数据库技术的理论知识及操作与管理技能,为开发、管理、维护信息系统奠定基础。而信息系统的建立包括数据库的设计、应用程序的开发两大部分,其中数据库的设计需要数据库原理来提供理论指导,应用程序的开发则需要具体数据库管理系统(DBMS)软件及数据库语言的支持。这一特点决定了这门课程的教学过程需要理论与实践并重。
目前出版的相关教材,为了编撰方便,通常将数据库原理集中安排在前几章,应用部分放在后边,两部分内容截然分开,而实际教学过程是理论联系实际的过程,教师应本着理论实践相结合的原则,使原理与应用的教学交错进行。如何使两大部分有机结合,这既需要一定的教学经验也需要教师具有高度的责任感,就此提出以下教学思路及建议。
一、突出重点,化解难点
重点内容课堂上要反复、耐心、细致地讲解,同时从课时量、作业量、实验内容等方面给予重点对待。对于难点问题,事先应精心设计教学示例,尽可能借助多媒体课件等演示方式给以形象生动的阐释,再通过与类似的问题对比,参照理解。
比如,关系代数式是一个教学难点,这时可结合SQL语言中的查询语句来举例,通过对比学习,关系代数式在学生眼中也不再抽象了。而一旦学生开始系统学习重要的SQL语言,则适时引导学生复习理论章节中的关系代数式内容,再次比较,进一步加深对关系代数的理解。这样,难点克服了,重点内容也理解得更深入。
二、使用现代化教学手段,并积极探索新的教学模式
1.理论内容相对抽象,学生理解上往往有误解或偏差,建议尽量采用多媒体教学
针对数据库理论涉及的概念、原理、方法,应设计实例进行阐释,并在sqlserver数据库平台上同步演示,使学生对理论知识正确理解、深刻理解。比如,讲解SQL语句时,利用多媒体教鞭系统来分三步教学:首先显示数据表和查询要求;接着启发学生构造SQL语句,并分步逐个短语显示SQL语句;最后运行语句显示查询结果,将结果与要求及数据表内容对照,有错则及时分析原因,纠错并重运行,反复比照,加深理解。
2.在教学模式上进行创新,案例教学法、任务驱动教学法特别适用于本课程
比如,课程开始阶段,考虑到学生第一次接触数据库技术,可采用案例教学加强其感性认知,以超市进销存管理系统、火车票预售系统、阿里巴巴商务网站为例,通过模拟软件及互联网对商务数据库进行检索,使学生切身体会数据库技术应用的普遍性和重要性,变被动学习为主动探求;学习到一定阶段,可再次引入以上案例,由教师引导学生从技术角度对应用系统的体系结构、工作原理进行分析。学生对数据库的概念、原理此前已经有了一定认识,结合案例,对知识进行综合,认识上会有显著提高。
任务驱动教学也特别适用于数据库课程,可以设计一个大作业(如学籍管理系统),将其贯穿于整个教学过程中,在学时充裕的情况下可以采用。
三、加强日常教学管理,加大实践教学力度,注重操作技能培养,使创新教学与传统教学并重
1.每章应布置适量作业,重点章节应安排作业课
作业题由以往教学中累积的问题和疑难点整理而成,针对性会更强。为便于学生自修,应设计一些开放式的讨论题、调研题供学生选用,培养研究问题的能力。
2.特别强化上机实训,严明纪律,避免流于形式
上课应有明确的实验任务。辅导教师最好由任课教师担任,便于有针对性地辅导,也便于及时发现课堂教学存在的问题。实验方式应多样化,除学生个人***实验外,每次应安排适量的小组成员协作实验,旨在培养团队合作能力。
3.精心设计实验内容及实验数据
本课程共设计了14个实验,重点实验包括:创建关系模型、数据安全性实验、数据完整性实验、SQL实验、查询优化实验等。设计实验报告时,在实验类型、实验内容的启发性、丰富性上下工夫,观察性、验证性、综合设计性三类实验应同时兼顾。用于录入的实验数据要精心设计,具有启发性,比如可以包含具逻辑错误的数据,以便在操作中引发错误,引导学生思考解决。以完整性实验为例,针对三张数据表,设计一组问题:
学生表(学号,姓名,性别,籍贯)
成绩表(学号,课号,成绩)
课程表(课号,课名,学分)
学生表中试录入重复的学号,系统有何提示?为什么?如何处理?成绩表中学号重复会报错吗?为什么?在成绩表中试录入不存在的学号,系统有何提示?为什么?试从学生表删除某学生信息,观察其成绩信息还存在吗?为什么?如果向成绩表中录入了不存在的学号,系统有何提示?为什么?这些问题看似简单,但对引导学生理解主键、外键的作用、实体完整性规则、参照完整性规则都有积极作用。
数据库原理篇5
关键词:数据库教学;数据模型;PowerDesigner;实践教学
中***分类号:G642文献标识码:A文章编号:1009-3044(2009)27-7723-02
The Application of PowerDesigner in Database Course Teaching
YANG Wei-ming
(Department of Computer Science, Nanjing Xiaozhuang University, Nanjing 210036, China)
Abstracts: This paper analyses the problems existing in DataBase curriculum teaching and learning, provides a method of assistant teaching by using modeling tool Powerdesigner. It also construes the process of BPM, CDM and PDM in Powerdesigner. Finally it makean analysis on improving practice-teaching effects in DataBase course teaching by useing PowerDesigner.
Key words: DataBase Course Teaching;Data Model;PowerDesigner;Practical Teaching
《数据库原理》是计算机及其相关专业一门重要课程。通过这门课程的学习,学生要能够正确理解数据库的基本原理,熟练掌握数据库的设计方法和应用技术。该课程具有鲜明的特点,即较强的实践性、综合性、应用性、创造性和明显的时展性。
然而在该门课程教学过程中,理论和实践教学存在不同程度的脱节。特别是讲述数据库设计的有关内容时,教材强调知识的完备性,理论性强、概念抽象。诸如如何进行需求分析、如何确定实体间联系、E-R***的使用等,对学生来说都是比较空洞和抽象的。因此学生缺乏学习的针对性和应用性。
针对上述问题,我们在实践教学过程中,引入了相关的数据库建模工具PowerDesigner,应用软件工程原理、概念和方法来进行数据库的设计和实现。PowerDesigner中的BPM、CDM、PDM的概念和形成数据模型的过程,都符合数据库系统的建立过程,即需求分析、概念设计、逻辑设计和物理设计。学生在使用PowerDesigner进行设计过程中,有助于掌握所学的概念,特别是建立数据库系统规范化设计的思维方法。
1 几个CASE工具的比较
目前,著名的CASE工具有RATIONAL公司的Rational Rose, CA公司的Erwin ,Sybase公司的PowerDesigner等。他们都各有自己的优缺点,其中Rational Rose擅长以UML(unified modeling language)构造模型,具备严谨的方***,但技术偏高;Erwin-擅长以E-R(entity ralationship)建立实体联系模型,界面相当简洁漂亮,非常适合中小型数据库的开发,它的Diagram给人的感觉十分清晰,但不适合非常大的数据库的设计,因为它对Diagram欠缺更多层次的组织;PowerDesigner是Sybase推出的主打数据库设计工具,它集UML与E-R精华于一身。而且它支持目前流行的多种客户端开发工具,同时也支持30多种流行的数据库管理系统。目前PowerDesigner客户已经遍及世界各地,涉及国防、***事、财税、证券、电子等领域,它具有几下几个突出的优点。
1) PowerDesigner系列产品提供了一个完整的建模解决方案。它将对象设计、数据库设计和关系数据库无缝的集成,在一个集成的工作环境中能够完成面向对象的分析设计和数据库建模工作。
2) 支持开发生命周期的所有阶段。在软件的生命周期内,提供了完整的分析设计和建模解决方案。它提供了三级建模功能,即概念数据建模、物理数据建模、面向对象建模,同时它还可以生成模型报告。
3) 具有良好的性价比,更能迎合市场潮流。已经有许多成功的案例。
鉴于上述原因,我们选择了PowerDesigner作为数据库设计的工具软件,让学生对于概念设计、逻辑设计和物理设计等几个设计阶段的任务和区别有了直观的认识,大大提高了教学效果。
2 PowerDesigner建模流程
根据需求分析的结果.利用PowerDesigner中的CDM(Conceptual Data Model概念数据模型)描述出完整的概念设计内容,将有效的概念模型直接转化为PDM(Physical Data Model 物理数据模型)。在PowerDesigner中选择相应的DBMS,可以直接由物理模型生成数据库建库脚本。根据系统的数据库平台,最终可以生成完整的数据库模型。
2.1 创建CDM模型
创建CDM首先应该明确模型所描述的业务问题:对于模型中所描述的业务流程,可以借助PowerDesigner的BPM(Business Process Model)来进行描述。根据前期的需求分析,形成相应的实体和实体间的联系,同时必须确定每个实体中的属性内容及实体的主码。其中涉及到实体、属性、商业规则、属性的取值范围、关系、继承等内容。建立好CDM后,可以使用CHECK MODEL 来判断CDM是否有效。如果有问题,不断进行修改,直到CDM有效。有效的CDM可以直接转化为PDM。
以学生选课系统为例,系统中涉及到的实体有系、学生、教师、课程。实体之间的联系如下:系与学生的联系以及系与教师的联系是一对多关系、学生与课程之间以及教师与课程之间是多对多的关系。***1描述的是学生选课系统的概念模型。
2.2 创建PDM
CDM一旦建立好后,可以通过工具中的CHECK MODEL进行有效性验证,有效性验证时将检查CDM中所包括的DOMAIN、DATAITEM、ENTITY、ENTITY ATTRIBUTES、RELATIONSHIP等内容。在生成PDM时必须指定具体的DBMS,PowerDesigner支持30多种流行的数据库。一旦选项定义完毕,就能够迅速生成PDM。***2的PDM结构***就是由***1中的CDM转换而来的。
PowerDesigner将CDM结构***转换成PDM(Physical Data Model,物理数据模型)时,主要是对实体、实体属性、关系、规则等进行转换。对于多对多的联系转换为一个***的关系模式,与该联系相连的各实体的码以及联系本身的属性转换为联系的属性.而关系的码为各个关系码的组合。根据转换规则,学生和课程之间的多对多的选修联系,转换为关系模式“选修”,且选修关系的码是由学号和课程号共同组成,而学号、课号分别是学生和课程实体的码,所以在选修关系中,学号和课程号也分别是外码。同样的规则也适合教师和课程之间任课联系的转换。
对于多对多的联系,转换后还可以加系本身的属性。如选修关系中可以加入学生选课的学期,该课程的成绩等;任课关系中可以加入任课学期等属性,最后行程一个合适的PDM。
2.3 生成数据库
物理数据模型还不是最终需要的结果,也不是建模的最终目的。有了物理数据模型后,可由物理数据模型生成相应的DBMS的SQL语言脚本,利用该SQL脚本,在相应的DBMS环境下就可以生成数据库结构。
PowerDesigner中,在PDM生成数据库时,有两种方式,分别是生成SQL脚本文件和生成ODBC数据源。用户可以根据需要选择生成的方式,使用非常方便。***3是生成的学生选课系统的SQL脚本截***。
3 PowerDesigner对改善数据库原理实践教学的效果分析
引入PowerDesigner建模工具辅助《数据库原理》课程教学,其教学效果反映较好。具体表现为:学生对课程学习的兴趣普遍提高;对于课程的基本概念、理论及整个知识体系能更好地建立起一个清晰的整体认识;尤其增强了数据库设计动手与实践能力。特别表现在以下几方面:
1) 通过PowerDesigner丰富的数据库建模工具,实现了数据库设计结果的可视化和模型化,学生在使用PowerDesigner进行设计过程中,有助于掌握所学的概念,特别是建立数据库系统规范化设计的思维方法。比如理论教学时,对码、外码、关系、E-R模型向关系模型转换的规则等,学生常常似懂非懂。引入PowerDesigner后,通过模型可视化,对这些概念,过程一目了然,大大提高了学习兴趣。
2) 学生学习DDL命令时,由于选项较多,常常由于命令拼写错误,或者记忆不清造成无法正确执行,从而有畏惧情绪。而PowerDesigner能够自动生成包含各类DDL命令的SQL脚本,大大降低的人为错误,也为学生学习SQL命令提供了范本。
3) 开发资料规范化。教学中虽然强调文档的重要性和规范化,但学生没有感性认识,特别是如何编写数据字典、数据流***等,更是无所适从。而PowerDesigner使用了一套标准数据模型定义格式,能够生成符合SQL语法标准的开发文档,能够统一每个程序设计人员的开发风格,形成成较好的文档管理体系,为将来的系统维护奠定了坚实的基础,也让学生也有编写开发资料的范例。
4 结束语
通过在《数据库原理》课程实践教学过程中,有机地结合使用PowerDesigner这一数据库建模工具,大大提高了学生学习本门课程的兴趣,提高了学生对数据库课程的认识和数据库实践能力,增强了该门课程的教学效果。
参考文献:
[1] 赵韶平.PowerDesigner系统分析与建模[M].北京:清华大学出版社,2004.
[2] 顾平.数据库设计工具PowerDesigner的研究与实践[J]. 计算机应用与软件,2004(11).
数据库原理篇6
【关键词】课程教学 教学内容 教学方法 实践教学
数据库技术是目前计算机领域中应用最广泛、发展最迅速的技术之一。数据库技术的应用领域已从传统的数据处理、信息管理、事务处理逐渐扩大到计算机辅助教学、人工智能、办公自动化系统等众多应用领域。随着数据库技术的应用逐渐渗透到我们生活的方方面面,相应的数据库技术人才也日趋缺乏,与数据库技术相关的课程已成为高校计算机专业,甚至是一些计算机专业的重要课程。如何围绕“让学生掌握一门就业技术”的教学理念,把这门课程开设好,让学生掌握数据库技术的基本知识和基本操作,达到学有所用的目的,是笔者一直在思考和尝试的课题。
一 当前数据库课程教学的现状和存在的问题
当前,数据库原理与应用已经成为高校的计算机专业或相关专业的核心专业基础课程,课程的教学内容设置和教学方法也大同小异,主要问题是教学内容偏向于理论知识,教学方法手段单一,造成学生学习目的不明确,学习的积极性不高,学习效果不够理想,无法应用到实际的数据库系统开发。笔者根据以往的教学实践和对学生毕业设计环节对数据库技术的应用情况,认为在教学过程中主要有以下几个问题:
1.教学内容偏重于理论知识
目前数据库课程的教学内容偏重于介绍数据库原理部分的知识,通常这些理论知识都比较抽象难懂,学生理解起来也存在一定的难度,学生容易产生厌学的情绪,缺乏学习的动力。
2.教学手段和方法单一
目前数据库原理的教学方法大多是选用经典教材,课堂讲授往往是以“灌输”的方式对课程内容进行详细讲解。这种教学方法往往使学生被动接受知识,学完以后不能很好地与实践结合,从而大大降低了课程的教学效果和教学质量。
3.实践教学环节不够重视
目前实验课教学仍存在一些问题,例如实验目的、实验的内容不明确,实验课时相对较少,考核中实验课占的比例很小。
4.考核方式的单一性
目前该课程的考核方式大多以期末考试的笔试试卷成绩对学生评定成绩,这种方式缺乏对学生实践动手能力的考核,不能全面有效地检验学生学习的效果。
二 教学内容的组织
该课程具有理论基础强、实践应用性突出、教学内容既涉及操作系统、编译原理和网络通信技术等计算机类的基础知识,又要介绍如何存储、管理和处理海量数据,保证运行的高效率等知识,是一项应用广泛、复杂而综合的应用性技术,因而课程的教学内容需要不断改革与发展,尤其是在新升本科学院,面对不同层次,不同就业需求的学生,因材施教,调整教学内容、改革与创新教学方法显得尤为重要。教学内容要贴近学生实际的计算机文化素质水平和社会需要,只有这样才能使教学改革定位在“懂理论会应用”的层面上。为了达到教学目标,教学内容主要分为数据库基本理论、数据库基本操作和数据库应用设计三大模块。
三 教学方法的探索和实践
1.充分发挥多媒体教学手段的优势,提高课堂教学质量
多媒体技术可以帮助教师更系统、更有条理地、更形象细致地讲授知识点和解释难点问题,使枯燥的教学内容变得生动有趣,深奥的理论知识变得通俗易懂。为此,笔者专门对一些知识性较强的章节尽量采用多媒体课件教学,利用关键的字、词、句,醒目的***示和符号组成教学信号系统,然后利用学生的视觉把这些信息加工成对知识的理解,并记忆形成自己的理论知识体系。这样制作的多媒体课件重难点知识以简练的语言表述,列成纲目,能够帮助学生对一些知识难点的理解。同时将多媒体课件与系统环境有机结合,既可以将其中的理论、方法等核心内容进行有条理的演绎,又可以切换到系统环境中对数据库进行各种操作演示,教学方式灵活,课堂信息量大,促进了学生对知识的理解与掌握,大大提高了课堂教学质量。需要注意的是,利用多媒体课件讲课,其优势是能够在短时间内把大量的信息传授给学生。但是如果对这一优势不加以限制,只是一味地扩大信息量,学生思路跟不上,就会产生抵触情绪,从而影响教学效果。因此教师要把握好教学的进度,同时结合其他一些教学手段不断完善教学过程。
2.善用案例教学法,激发学生的学习兴趣
课堂教学中,既重视理论又不花费太多的课堂时间,因为结合该课程本身的目标与学生的实际需要,我们需要培养学生的实际动手能力。如果一味偏向理论教学,学生感觉枯燥,学不到太多实际的数据库应用技术,反而降低了学习兴趣。我们要把那些相对抽象的理论知识转化为具体的案例,采用启发式的案例教学法,调动学生的学习兴趣,将被动学习变为由兴趣激发的主动探索。在设计教学案例时,以学生熟悉的案例为背景,如:学籍成绩管理系统、***书借阅系统等。在课堂讲授过程中,以具体的相关联的案例导入,诱导学生自主学习,***思考,相互讨论,对案例提出质疑,从案例中分析应该理解和掌握哪些理论知识等;最后,由教师对学生无法解决的问题给予指导和建议。实践证明,善用案例教学法可以实现启发式教学,能够极大地激发学生的学习兴趣和参与的积极性,有利于学生在懂理论的基础上更进一步的灵活使用理论知识,并运用知识解决数据库开发中的实际问题。
3.突出实验的重要性,加强学生的动手能力
数据库是一门实践性很强的课程。通过上机操作才能使学生真正理解、消化课堂上的理论知识,这一点对数据库的学习尤为重要,因此学习这门课程首先要合理安排上机实验课时,讲完课要及时上机并保证上机效果,要求教学实验与理论教学协调同步,特别是时间、内容上要衔接好;第二,学生上机目的和步骤要明确,要求教师课前写好含有实例和习题的实验指导书,指导书的内容要尽量紧扣教材;第三,学生实验结束要上交实验报告,要求学生将实验目的、实验内容、实验步骤以及在实验过程中的体会、感受和遇到的问题等都写在实验报告中,教师要认真批阅,并及时给予点评指导,对于实验中存在的普遍性问题还要做公开讲解。
4.完善考核制度,重视能力培养
数据库原理课程的考核,除了对学生的理论知识考核(期末考试的笔试试卷)外,还应该重视对学生的实践动手能力的考核。理论知识考核主要考察学生对基础性、关键性概念和原理的熟悉和理解程度,重点考核学生综合运用知识解决实际问题与创新思维的能力。对应用能力考核采用的方式可以灵活一些,可以通过平时的实验完成过程及上交的实验报告进行评分。另外,对待课程设计成绩的评定,为了体现评分的公平性,可以分阶段地检查学生完成作品的进度,防止学生通过抄袭和最后***一个程序应付了事的情况发生。
四 结束语
本文针对目前高校数据库原理与应用课程教学中的现状和存在的问题,结合自己的实际教学经验,重点提出了几点教学改革的思路。由于数据库技术的不断发展,知识的不断更新,在教学中不仅要尝试新的教学方法与手段,因人而异,因材施教,更要加强师生交流,根据教学过程中的具体情况和学生的反馈意见,及时调整教学方法。只有这样,才能不断的提高教学质量,在实践中找到更好的教学方法。
参考文献
[1]冯莉.数据库原理与应用课程教学改革初探[J].大众科技,2008
[2]高清华.应用型本科院校《数据库原理与应用》课程设计[J].北京城市学院学报,2008(3)
数据库原理篇7
关键词:网络课程;数据库原理;建构主义
中***分类号:G642 文献标识码:A文章编号:1009-3044(2008)35-2202-03
Research and Practice of Database Principles Network Course Construction
HE Chao-bo1, CHEN Qi-mai2
(1. Department of Computer Science and Engineering, ZhongKai University of Agriculture and Engineering, Guangzhou 510225, China; 2. The Educational Affairs Department, South China Normal University, Guangzhou 510631, China)
Abstract: The paper introduced the necessity of database principles network course construction. A detailed description of theoretical basis, design principle, architecture characteristics and application effect was presented.
Key words:network course; database principles; constructivism
1 数据库原理网络课程建设的必要性
数据库原理是计算机科学与技术专业基础课程,具有知识体系完整、理论丰富、实践性强、数据库技术发展迅速等特点;课程的深入学习对增强学生的计算机科学理论素养、提高计算机技术应用水平有着明显的帮助,因而该课程在计算机科学与技术专业课程体系中往往具有重要的地位,应该重视该课程的实际教学方式。
教学实践表明该课程的教学应以如何激发学生的学习积极性、加强教学互动、掌握基础理论、开拓视野、提高应用能力为目标。传统的局限于课堂讲授的教学方式由于受时间、空间、教学条件、教学方法等限制,不能提供更丰富多样的课程资源,更方便的教学互动,更灵活的个性化、协作化学习方式,因而一定程度上影响了教学效果。而借助信息技术建立的网络课程可以弥补这一劣势,因为网络课程教学的学习资源信息量更为丰富、知识展现形式更为多样化、传递更为快捷、便于贮存和整理,既可以满足学生个性化学习的需要,为学生营造探索与创造的空间,又可以通过***交流平台实现师生互动、生生互动,为协作化学习提供有力的支持,所以有必要结合数据库原理课程教学目标与教学内容,建设配套的网络课程,提供网络教学支撑环境,促进该课程教学质量的提高。
2 理论基础与设计原则
数据库原理网络课程的设计以建构主义学习理论作为理论基础,该理论认为,学习活动是学生通过一定的情景,借助教师与同学的帮助,通过协作和会话的方式,达到对知识的意义建构。在这个过程中,学生是认知活动的主体,教师是学生学习的帮助者、促进者、引导者[1]。在该理论的指导下,数据库原理网络课程在设计上体现了如下的教学策略:突破简单的演示型模式,体现知识的意义建构过程;重视问题与回答方式的设计,提高学生的主体参与程度;加强对学生的引导和帮助,促进学生对知识的意义建构;提供丰富的多媒体资源,创设有意义的学习情境;实现网络课程的超链接结构,启发学生的联想思维。为实现上述教学策略,考虑网上教学的特点,对于该网络课程的设计,遵循了如下几条原则:
2.1 个性化
学生是学习的认知主体,学习的过程是学生通过主动探索、发现问题、意义建构的过程。该网络课程重视学生作为认知主体的作用,设计上体现学生个性化学习的特点,发挥学生在学习中的首创精神,如提供了灵活多样的检索方式、实现了访问路径的自动记录与自动导航功能、学习内容的聚合与定制等。
2.2 合作化
Johnson & Johnson的合作学习理论指出在合作学习中,学生彼此之间的学习成就是呈正相关的,当其中一个学生达到他的学习目标时,其他的学生也能够达到学习的目标[2]。计算机支持的合作学习(Computer-Supported Cooperative Learning 简称CSCL) 更能体现合作学习的优势[3]。
数据库原理网络课程设计中,设计了两类合作关系:学生与学生的合作以及教师与学生的合作。学生与学生的合作设计中,网络课程通过定期课程作业任务尤其是项目案例,学生可以***邀请多位学生,以组队的方式***讨论,共同解决,教师可根据每位学生的表现情况给予相应的评分,以此提高学生的合作学习积极性。教师与学生的合作在网络课程中主要以***作业布置、批改,***答疑、指导学习等方式体现。
2.3 多媒体化
为提高学生的学习兴趣,网络课程应根据需要提供***文声像并茂的教学内容,而当前Internet 和Intranet向宽带、高速发展,使网络课程的多媒体传输成为可能。数据库原理网络课程设计了教学视频、动画演示、教学课件、试题集锦等栏目,提供了视频、音频、动画、***片、文本等多种展现方式的教学资源。
2.4 交互化
网络课程应为生生互动、师生互动提供条件。该网络课程通过清晰的导航、美观的界面,赋予学生串联知识和浏览的自。另一方面,设计***测试、***作业、***答疑、***讨论等栏目增强了网络课程的交互性。
2.5 开放化
该网络课程提供了丰富的数据库技术相关资料文献、参考***供学生阅读,开拓视野,对某一知识内容,提供不同角度的解释和描述,在内容组织上体现了开放化特征。另外重视评价反馈的设计,及时了解学生的学习情况,客观评价学生对课程教学目标的达标情况。
3 构架
以建构主义学习理论为指导,遵循以上提出的设计原则,设计的数据库原理网络课程总体构架如***1所示。
具体的栏目设置如***2所示。
其中课程信息包括课程简介、教学大纲、教学队伍、教材建设等栏目,目的是让学生对该课程性质、教学目的、教学要求、教学内容、教学计划等有比较详细的了解,起到指导学习的作用。
教学内容包括该课程各章节的详细讲义内容,以目录结构导航显示的方式方便学生***阅读。
教学资源包括教学视频、动画演示、试题集锦等栏目。教学视频提供课堂实际教学录像以及数据库技术实践操作类教学视频,同时针对课程一些基本概念的解释以及较难知识点的讲解专门制作了动画进行演示说明,其中视频以及动画均配有解说。试题集锦栏目提供了各章节测试题目、综合性测试题目以及各类数据库相关考试典型试题。
设计实践包括实验大纲、课程设计大纲、基本实验项目、课程设计项目、设计参考实例等内容,目的是让学生了解该课程各类实验要求、实验内容以及实验报告文档的编写规范。
学习助手工具(***3)是该网络课程的核心部分,该工具提供***自学、***作业/批改作业、***提问/答疑、***测试等功能,学生可借助该工具系统学习课程内容,***完成作业、***获得教师的指导,同时系统采用的积分制度和学习反馈评价机制很好地提高了学生使用该网络课程进行学习的积极性,教师可利用该工具进行***答疑、布置/批改作业、教学通知等,与传统的方式相比减轻了教学负担,提高了工作效率。
技术前沿栏目分为数据库产品、数据库编程、数据仓库与数据挖掘、研究进展等子栏目,提供了大量的与数据库相关的技术文献供学生选择性阅读,这对丰富学生数据库知识,拓宽视野,加深对课本知识的理解有非常好的帮助。
教学通知可供教师及时通过网络与课程相关的教学信息,提高了教学信息的即时性与持久性。
***测试的基础是数据库原理试题库,该试题库具有良好的扩充性,提供了大量与课本各章节相关的试题,题型包括选择题、填空题以及问答题。***测试可以自动给出测试结果以及测试评价,学生可通过该功能及时了解自己对课程知识的理解掌握程度以及改进方向。
***答疑包括答疑列表、常见问题等部分,答疑列表给出学生所提问题以及教师给出的答案,常见问题集合(FAQ)综合了学生经常提出的问题与答案,目的是提供给学生参考,避免提出相似问题。
4 特色
数据库原理网络课程建设注意围绕课程教学目标组织内容,以建构主义学习理论为指导进行网络教学设计,突出网络学习优势,设计上注重界面的统一美观、使用方便等特性。本身具有如下五大特色:
4.1 完整科学的网上课程教学内容体系
课程每一章节教学目标、教学要求、内容讲义、疑难关键知识点、习题解答等教学内容均提供给学生网上阅读学习。教学内容覆盖教学基本要求并能体现该课程的前沿性,组织结构有利于学生学习,符合本课程的内在逻辑体系,并有利于激发学生的学习兴趣和主动学习,同时注意内容表述的科学性、准确性以及网上教学过程的完整性。
4.2 丰富、组织合理的多媒体资源
网络课程资源库包含大量的多媒体资源,为学生提供***文声像并茂的教学内容。多媒体资源包括视频、音频、动画、***片等文件,主要来源于如下两个途径:一是对互联网上的与课程相关的多媒体资源进行收集整理、并进行二次加工,二是***制作,如针对课程某知识点专门制作动画演示配合讲解,对实际课堂教学进行录像后编辑处理形成教学视频等。网络课程各媒体文件的表现内容均与课程内容有机结合,可播放可控制,使用协调,组织合理。
4.3 完善的交互功能,良好的网络协作学习环境
该网络课程的交互体现在学生与课程内容的交互、与教师的交互、与学生之间的交互。网络课程的教学内容都经过精心的教学设计与合理组织,学生可根据清晰友好的导航以及教师的建议选择性进行学习。针对本课程实践性强的特点,教师可以组织学生围绕着学习案例进行协作讨论。教师可以通过查看学生的学习记录了解学习者的学习进度,并对学习者提出学习建议,指导学生进行下一阶段的学习。学生可以使用***答疑,学习论坛等板块进行学习问题、学习知识的交流、讨论。在以上这些良好的网络协作学习环境中,师生间能方便地进行网上教学活动,学习者能与教师、同学进行协商、交流,以实现对知识建构。
4.4 灵活的个性化学习功能
网络课程可对学生的访问路径进行记录分析,基于数据挖掘的方式发现学生最感兴趣的内容,并在学习助手板块中以“推荐阅读”的方式显示。另外学习助手允许学生定制学习内容,制定学习计划,并可随时查看学习进度以及学习评价结果。
4.5 美观清晰的使用界面
网络课程重视界面的优化设计,使用***像处理软件对界面进行美工设计。界面色彩的选择符合视觉规律,清晰、简洁,颜色搭配合理,结构布局均衡、新颖简洁,界面各个组成元素均直观明了,使得教学内容能突出而形象地展示在学习者的面前。整个使用界面的具有友好性、灵活性、功能性、明确性、一致性以及可靠性等特点,使人机交互简易快捷,提高了学生的使用兴趣与积极性并形成较好的教学反馈。
5 应用效果
本网络课程的设计体现了科学性、艺术性和技术性的有机结合,使学生在轻松活泼的氛围中积极主动地参与学习,在实际教学应用中取得了良好的效果。学生普遍反映通过借助该网络课程进行系统学习,加深了对课程知识的掌握,拓宽了知识面,同时提高了自主学习、协作学习的能力。教师通过该网络课程设计教学内容,组织网上教学,***实现教学互动,提高了工作效率、改善了教学质量。
参考文献:
[1] 谢幼如. 高等学校网络课程的开发[J]. 电化教育研究, 2000(8):29-32.
数据库原理篇8
论文摘要:随着 计算机 网络 技术在各行各业的广泛应用,传统的面对面的教学方式已经不能满足现在的教学要求。利用网上授课平台,学生可以通过网络***教师上传的 电子 教案、授课视频等文件来弥补课堂教学的不足。教师也可以通过此授课平台方便的和学生进行交流,及时获得学生学习情况的反馈。
《数据库原理网上授课平台》的开发主要针对《数据库原理》课程的教学活动。本系统主要包括用户登录模块,用户注册模块,留言模块,视频 管理 模块,电子教案管理模块,***答疑模块。
本系统采用myeclipse作为开发平台。将以java为核心 语言 的jsp作为开发工具,基于struts框架,利用sun提供的tomcat建立运行 环境 ,结合sql server 2000进行数据库的开发。
第1章 绪 论
1.1 课题背景
随着计算机及网络技术的飞速发展,internet/intranet应用在全球范围内日益普及,在众多的网络服务中,web给人耳目一新的感觉,各种网站日渐普及,很多人都通过网络来进行各种信息交互活动。《数据库原理网上授课平台》专门针对《数据库原理》课程的教学活动,利用网上授课网站有很多好处,例如可以24小时随时进行服务,可以弥补学生没有听懂的不足,改变了传统作业批改方式,浪费 人力 物力,教师可以及时了解学生学习情况,以及师生信息的交互等等。jsp技术是当前相当热门的,因为它可以进行复杂的数据库操作、很强的交互性以及方便用户控制管理。本系统正是采用jsp开发。
1.2 课题研究内容及意义
二十一世纪是信息的 社会 ,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。在现代学习生活中,网上学习是也是提高自己技术的重要途径之一,网上授课平台应运而生。随着生活水平不断提高,几乎家家都有电脑。在新形势下,越来越多的网上授课平台相继被开发出来。网上授课平台,可以使学生在上课时听不懂的课程进行课后复习,让同学更好的把握学习的重点。同时还可以在网上授课平台和老师进行聊天,向老师提问一些自己不明白的问题。让自己充分理解所学的课程。这样有助于提高自己。学习靠自己,但是不明白的地方也要问别人。有了网上授课平台就可以轻松的自学了。在网上授课平台里,每堂课都有几百个帖子,信息量很大,同一分钟可能有许多人同时发言,有附议,有评论,有反驳,非常生动,一些平时比较腼腆的学生也能发表长篇大论。老师事先讨论内容,然后师生共同探讨,互动交流,触发灵感。像有些学生离校回家了,但他们在上课时间都来到网上课堂,他们都能和在校学生一起讨论,就是网络的功劳。这样一个授课的记录能够真实、完整的保存下来,为因各种原因没能来上课的同学日后补课提供了方便。容易出成果,同学们也反映,以前口头讨论流于肤浅,现在以文字表述观点,更深入、更有 逻辑 性,讨论结束后稍加整理便可以形成小论文或者对话录,我们鼓励学生把讨论所得及时整理出来,巩固下来,以加深他们的印象
1.3 本文主要内容
(1)系统开发的目的及意义。
(2)系统概述和应用工具介绍,主要包括对jsp、java bean、sql server 2000和b/s模式的介绍。
(3)对系统进行可行性分析和需求分析以满足客户要求。
(4)对系统的详细设计,系统数据库的设计和流程进行描述。
(5)系统的 总结 以及未来的展望。
第2章 关键技术介绍和开发工具以及硬件环境
2.1 关键技术介绍
2.1.1 jsp语言及其特点
在传统的网页html文件(*.htm,*.html)中加入java程序片段(scriptlet)和jsp标记(tag),就构成了jsp网页(*.jsp)。jsp页面看上去象标准的html和xml页面,并附带有jsp引擎能够处理和抽取的额外元件。
web服务器在遇到访问jsp网页的请求时,首先执行其中的程序片段,然后将执行结果以html格式返回给用户。
程序片段可以操作数据库、重新定向网页以及发送e-mail等,这就是建立动态网站所需要的功能。
所有程序都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低。它基于强大的java语言,具有良好的伸缩性,在网络数据库应用开发领域具有得天独厚的优势。
jsp技术在多个方面加速了动态web页面的开发:
a.将内容的生成和显示进行分离
使用jsp技术,web页面开发人员可以使用html或者xml标识来设计和格式化最终页面。使用jsp标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。生成内容的逻辑被封装在标识和javabeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和beans中,那么其他人,如web管理人员和页面设计者,能够编辑和使用jsp页面,而不影响内容的生成。
在服务器端,jsp引擎解释jsp标识和小脚本,生成所请求的内容(例如,通过访问javabeans组件,使用jdbctm技术访问数据库,或者包含文件),
并且将结果以html(或者xml)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于html的web浏览器的完全可用性。
b.强调可重用的组件
绝大多数jsp页面依赖于可重用的,跨平台的组件(javabeans或者enterprise javabeanstm组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
c.采用标识简化页面开发
web页面开发人员不会都是熟悉脚本 语言 的编程人员。javaserver page技术封装了许多功能,这些功能是在易用的、与jsp相关的xml标识中进行动态内容生成所需要的。标准的jsp标识能够访问和实例化javabeans组件,设置或者检索组件属性,***applet,以及执行用其他方法更难于编码和耗时的功能。
通过开发定制化标识库,jsp技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。
d.jsp能提供所有servlets功能
与servlets相比,jsp能提供所有servlets功能,它比用println书写和修改html更方便。可以更明确地进行分工,web页面设计人员编写html,只需留出空间让servlets程序员插入动态部分即可。jsp技术能够支持高度复杂的基于web的应用。
e.健壮的存储 管理 和安全性
由于jsp页面的内置脚本语言是基于java编程语言的,而且所有的jsp页面都被编译成为java servlet,jsp页面就具有java技术的所有好处,包括健壮的存储管理和安全性。
f.一次编写,各处运行
作为java平台的一部分,jsp拥有java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将jsp支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。
2.1.2 java及java servlets概述
jsp技术是用java语言作为脚本语言的,谈及jsp技术,少不了要对java技术进行一些基本的介绍。
最近一年多来,在internet上出现的特别吸引人的事件就是java语言和用 java编写的浏览器hotjava。
1991年,sun microsystem公司的jame gosling、 bill joe等人,为在 电视 、 控制烤面包箱等家用消费类 电子 产品上进行交互式操作而开发了一个名为oak的软件(即一种橡树的名字),但当时并没有引起人们的注意,直到1994年下半 年,internet的迅猛发展,环球信息网/computer/" target="_blank" title="">计算机 公司纷纷购买了java语言的使用权。
如mi-crosoft、ibm、netscape、novell、apple、dec、sgi等,因此,java语言被美国的著名杂志pc magazine评为1995年十大优秀科技产品,(计算机类 就此一入选),随之大量出现了用java编写的软件产品,受到 工业 界的重视与好 评,认为"java是八十年代以来计算机界的一件大事"。
微软总裁比尔·盖茨在悄悄地观察了一段时间后,不无感慨地说:"java是长 时间以来最卓越的程序设计语言",并确定微软整个软件开发的战略从pc单机时 代向着以网络为中心的计算时代转移,而购买java则是他的重大战略决策的实 施部署。因此,java的诞生必将对整个计算机产业发生深远的影响,对传统的计 算模型提出了新的挑战。
sun microsystem公司的总裁scott mcnealy认为java为internet和www开辟了一个崭新的时代。
环球信息网www的创始人berners-lee说:"计算机事业发展的下一个浪潮 就是java,并且将很快会发生的"。看来,使用java已成大势所趋!
microsoft和ibm两大公司都计划在internet上销售用java编写的软件。apple、hp、ibm、microsoft、novell、sgi、sco、tandem等公司均计划将java并入各自开发的操作系统,而负责开发并推广java技术的sunsoft公司(这是 sun下属的一个子公司),将通过颁发许可证的办法来允许各家公司把java虚拟 机和java的applets类库嵌入他们开发的操作系统,这样各类开发人员就能更 容易地选择多种平台来使用java语言编程,不同的用户也就可以脱离web浏览器来运行java应用程序,这无疑是很受广大用户欢迎的,也为java语言的应用 开拓了极为广阔的前景。(当然,各类javaos之间的兼容性必须得到重视,好在javasoft已保证将监督这种兼容性)。
另外,由javasoft推出的完全用java编写的internet上新型浏览器 hotjava,比去年alpha版更为实用,不仅能编制动态的应用软件,而且能编制完整 的成套桌面应用软件,将来还会提供更多的能帮助编制动态应用软件的模块,显 然,这也是为java的应用提供了有力的例证。
2.1.3 java bean简介
javabean是一种基于java的软件组件,java bean和active控件一样,可以通过封装业务 逻辑 建立一整套可重复利用的对象库。jsp对于在web应用中集成javabean组件提供了完善的支持,这种支持
不仅能缩短开发时间(可以直接利用经过测试和可信任的已有组件),避免重复开发,也为jsp应用带来了更多的可伸缩性。javabean组件可以用来执行复杂的计算任务,或负责与数据库的交互及数据提取等。
由于java 语言 在这些方面所具有的特点和优势,使得基于它的软件javabean组件技术倍受人们关注。它的任务就是:一次编写,可以在任何地方执行,可以在任何地方重用。javabean组件可以在任何地方重用包括了可以在应用程序、其他组件、文档、web站点和应用程序构造器工具等多种方案中再利用。
为了创建和使用java软件组件,javabean被实现为一种***于平台和结构的应用程序接口,它的实现可以忽略内部的结构和细节问题,只需定义其外部的特征及对外功能就行。其中,属性、方法和事件三种接口可以***对外进行开发。
2.1.4 tomcat简介
tomcat 服务器是一个 免费 的开放源代码的web 应用服务器,目前最新版本是6.0.18(截止到2008-08-27)。
tomcat是apache 软件基金会(apache software foundation)的jakarta 项目中的一个核心项目,由apache、sun和其他一些公司及个人共同开发而成。由于有了sun 的参与和支持,最新的servlet和jsp 规范总是能在tomcat 中得到体现,tomcat 5 支持最新的servlet 2.4 和jsp 2.0 规范。因为tomcat 技术先进、性能稳定,而且免费,因而深受java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web 应用服务器。
tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试jsp程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好apache服务器,可利用它响应对html页面的访问请求。实际上tomcat 部分是apache 服务器的扩展,但它是***运行的,所以当你运行tomcat 时,它实际上作为一个与apache ***的进程单独运行的。
这里的诀窍是,当配置正确时,apache 为html页面服务,而tomcat实际上运行jsp 页面和servlet。另外,tomcat和iis、apache等web服务器一样,具有处理html页面的功能,另外它还是一个servlet和jsp容器,***的 servlet容器是tomcat的默认模式。不过,tomcat处理静态html的能力不如apache服务器。
2.2 开发工具
数据库原理网上授课平台是在j2ee的基础上,以jdk1.6.0_10和myeclipse 6.5作为开发工具,用macromedia dreamweaver mx 2004和adobe photoshop设计、美化页面,用sql server2000作为后台数据库,tomcat 6.0.16作为web测试服务器进行开发设计的。
2.2.1 myeclipse
myeclipse企业级工作平台(myeclipse enterprise workbench ,简称myeclipse)是对eclipse ide的扩展,利用它我们可以在数据库和j2ee的开发、,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的j2ee集成开发 环境 ,包括了完备的编码、调试、测试和功能,完整支持html, struts, jsf, css, javascript, sql, hibernate。
在myeclipse 6.5这个集成开发环境中,用户可以设计程序代码、运行程序、进行程序错误的调试等,可视化的开发方法降低了应用程序开发的难度。
2.2.2 dreamweaver 和 photoshop
macromedia dreamweaver mx 2004是一个可视化的网页设计和网站 管理 工具,支持最新的web技术,美观用户界面,多重用户配置,增强的源代码编辑功能,扩展的文档格式支持,加强的服务器模式扩展,改进的数据库链接操作,提升了与外部应用程序的协作。adobe photoshop 7.0.1软件作为专业的***像编辑标准,可帮助制作适用于web的最佳品质***像。
2.2.3 sql server 2000
sql server 2000是基于客户/服务器模式的新一代大型数据库管理系统(dbms)。它在 电子 商务 、数据仓库和数据库解决方案等应用中,起着重要的作用,可为企业的数据库提供有效的管理,并采用有效的措施实施数据完整性和数据的安全性。所以sql server 2000数据库管理系统正被越来越多的用户使用,并逐渐成为企业级数据库管理系统的主流产品。
2.2.4 tomcat服务器
tomcat 6.0.16是sun的jswdk(java server web development kit)中免费的开源的serlvet容器,它是apache基金会的jakarta项目中的一个核心项目,由apache,sun和其它一些公司及个人共同开发而成。由于有了sun的参与和支持,最新的servlet和jsp规范总能在tomcat中得到体现。即当配置正确时,tomcat实际运行*.jsp页面和servlet。
2.2.5 b/s模式
b/s(browser/server,浏览器/服务器)模式又称b/s结构。它是随着internet技术的兴起,对c/s模式应用的扩展。在这种结构下,用户工作界面是通过ie浏览器来实现的。b/s模式最大的好处是运行维护比较简便,能实现不
同的人员,从不同的地点,以不同的接入方式(比如lan, wan, internet/intranet等)访问和操作共同的数据;最大的缺点是对企业外网 环境 依赖性太强,由于各种原因引起企业外网中断都会造成系统瘫痪。
b/s模式是指在tcp/ip的支持下,以http为传输协议,客户端通过browser访问web服务器以及与之相连的后台数据库的技术及体系结构。它由浏览器、web服务器、应用服务器和数据库服务器组成。客户端的浏览器通过url访问web服务器,web服务器请求数据库服务器,并将获得的结果以html形式返回客户端浏览器。
2.3 硬件环境
操作系统:microsoft windows xp或更高版本。
cpu要求:ce1.0g以上。
内存:1g以上。
磁盘可用空间:2g以上。
第3章 系统可行性分析
3.1 技术可行性
《数据库原理网上授课平台》针对《数据库原理》课程的学习来开发。主要包括用户登录模块,用户注册模块,留言模块,视频 管理 模块, 电子 教案管理模块,***答疑模块。
以上分析的功能完全可以通过用html 语言 设计前台页面,用java编写应用程序,结合相关的jsp+servlet技术进行开发设计来实现;采用struts技术能大大减轻系统前期的开发工作以及后期的维护工作。
html(超文本置标语言,hyper text markup language)是为网页创建和其它可在网页浏览器中看到的信息设计的一种置标语言。
java是可以编写跨平台应用软件的面向对象的程序设计语言,它具有易用和开发高效率的特点,而且提供了可视化的集成开发环境,这一环境为应用程序设计人员提供了一系列灵活而先进的工具,可以广泛地用于多种应用程序设计。
jsp(java server pages)技术是用java语言作为脚本语言的,jsp网页为整个服务器端的java库单元提供了一个接口来服务于http的应用程序。由jsp容器(如tomcat)首先将其转化为servlet,然后再调用javac将servlet编译为class文件,服务器最终解释的是class文件。
servlet是运行在web服务器或应用服务器上的java程序,是一个特殊的java类。servlet类一般从httpservlet类继承而来,在这个类中至少要实现doget或者dopost函数,在这两个函数中处理来自客户的请求,然后将结果返回。servlet和jsp是sun公司j2ee架构中重要的部分,由于基于java语言,因此其可以方便地调用功能强大的java api(如jdbc)。
struts开发技术是用mvc模式处理系统呈现层,使得系统开发的分工更明显,便于系统日后的维护工作。
综上所述,使得开发本系统过程中不存在技术上的障碍,具有技术可行性。
3.2 经济 可行性
由于本系统是个人为了通过实践,使所学的理论知识和实际操作相结合,提高自己的实际开发能力而做的。而且自己拥有一台完全可以用于开发本系统的 计算机 ,所用软件全部都是 免费 的,加上现在的互联网资源丰富,学校的 ***书馆 藏书有万册,完全可以找到自己所需的资料;学校给我们近半年的时间做毕业设计,所以从资源和时间上也是相对比较充足的。
所以,本系统 投资 极少,经济上是可行。
3.3 操作可行性
使用本系统的工作人员,只要拥有windows平台的一些基本电脑知识就可以运用,并不需要什么特别的技术能力。而且,考虑到用户的电脑实际操作水平,尽可能地使系统的界面简洁、实用、美观。另外,有关于计算机操作方面的知识,使用本系统相关的操作人员都已经具备了,如果使用过程中有什么困难,只要进行短期的培训后便也可以应用自由。所以,本系统在操作上是可行的。
第4章 系统需求分析
4.1 现行业务
4.1.1 目标
《数据库原理网上授课平台》的目标是实现对学生可以***电子教案,***视频,上传作业,***答疑,留言,注册。教师可以上传电子教案,上传视频,***作业,返回改后作业,***答疑,回复留言,公告等。
4.2 现行业务
根据以上的分析,再根据用户要求,得到系统的功能如下:
(1) 注册模块,学生需要先注册才能登录,注册免费。
(2) 登录模块,用户选择学生或教师身份后输入相应的用户名和密码。
(3) 电子教案模块,教师将数据库原理的电子教案放在网站里,学生可以在将电子教案***下来。教师还可以删除电子教案。
(4) 视频模块,教师将数据库原理的讲课视频放在网站里,学生可以在将视频***下来。教师还可以删除视频。
(5) 作业模块,学生将数据库原理作业上传到网站里,教师可以把各个学生的作业***下来。然后再将批改后的作业上传,学生可以再***改后的作业。
(6) ***答疑模块,学生可以***向教师提问问题,与老师***交互。
(7) 留言模块,学生可以将自己对老师的想法留言告诉老师。老师也可以回复学生的留言。
(8) 公告模块,老师可以通过该模块向学生通知一些事情。
(9) 友情链接模块,教师可以将一些好的学习网站介绍给学生。
4.3 系统流程***
系统流程***是概括地描绘 物理 系统的传统工具,表达了数据在系统各部件之间流
动的情况。系统按照业务活动中信息流动的过程,弄清楚所有环节的处理业务、处理内容、处理顺序和对处理时间的要求,弄清各环节需要的信息内容、信息来源、去向、处理方法和提供信息处理的时间和信息形态等。
a. 教师模块流程***,如***4-1所示:
***4-1教师模块流程***
b. 学生模块流程***,如***4-2所示:
***4-2学生模块流程***
第5章 系统设计
5.1 系统功能模块***
系统的用户分为学生和教师,分别有不同的功能。学生的功能有: 电子 教案 管理 ,视频管理,作业管理,留言管理和***答疑。教师有电子教案管理,视频管理,作业管理,留言管理,公告管理,友情链接管理,学生管理,***答疑。对于每个管理模块的功能,学生和教师有不同的操作。学生和教师的功能模块***如下所示:
a.学生功能模块***,如***5-1所示:
shape \* mergeformat
***5-1 学生功能模块***
b. 教师功能模块***,如***5-2所示:
shape \* mergeformat
***5-2 教师功能模块***
5.2 数据库结构设计
数据库是一个网站必不可少的一部分,数据库的完备决定了该网站成功与否,对于动态网站中基本的用户注册信息等各种动态部分的保存与调用是一个授课网站所必不可少的。由于考虑到数据库的熟悉程度以及windows的操作系统,所以我购商城采用了适合中小型企业使用的小型数据库sql server2000数据库,数据库名称为mywork。本系统定义的数据库中包含以下8张表:tb_user(用户信息表)、tb_message(留言表)、tb_kejian(电子教案信息表)、tb_note(公告信息表)、tb_video(视频信息表)、tb_test(作业信息表)、tb_link(友情链接表)、tb_chat(聊天信息表). 下面分别介绍这些表的结构:
tb_user(用户信息表)存储了学生的用户名,密码,真实姓名,email,具体属性如表5-1所示:
表5-1 用户信息表
字段名
数据类型
是否为空
是否主键
描述
user_id
int(4)
no
yes
用户id(自动编号)
user_name
varchar(20)
yes
no
user_password
varchar(20)
yes
no
realname
varchar(20)
yes
no
varchar(30)
yes
no
tb_message(留言信息表)存储了留言人的用户名,留言的题目,留言内容,留言的时间,留言的对象,具体的如表5-2所示:
表5-2 留言信息表
字段名
数据类型
是否为空
是否主键
描述
mes_id
int(4)
no
yes
自动编号
sender
varchar(20)
yes
no
留言用户名
mes_title
varchar(70)
yes
no
mes_content
varchar(2000)
yes
no
mes_sendtime
datetime(8)
yes
no
to_whom
varchar(20)
yes
no
tb_kejian(电子教案信息表)存储了电子教案的名称,上传时间。具体的如表5-3所示:
表5-3 电子教案信息表
字段名
数据类型
是否为空
是否主键
描述
ke_id
int(4)
no
yes
自动编号
ke_name
varchar(100)
yes
no
ke_time
varchar(30)
yes
no
tb_note(公告信息表)存储公告的标题,内容,时间,具体的如表5-4所示:
表5-4 公告信息表
字段名
数据类型
是否为空
是否主键
描述
note_id
int(4)
no
yes
自动编号
note_title
varchar(20)
yes
no
note_content
varchar(100)
yes
no
note_time
datetime(8)
yes
no
tb_video(视频信息表)存储了视频的名称,上传时间,具体的如表5-5所示:
表5-5 视频信息表
字段名
数据类型
是否为空
是否主键
描述
video_id
int(4)
no
yes
自动编号
video_name
varchar(100)
yes
no
video_time
varchar(30)
yes
no
tb_test(作业信息表)存储了作业名称,上传时间,上传作业学生名字,具体如表5-6所示:
表5-6 作业信息表
字段名
数据类型
是否为空
是否主键
描述
test_id
int(4)
no
yes
自动编号
test_name
varchar(100)
yes
no
test_time
varchar(30)
yes
no
user_name
varchar(20)
yes
no
上传作业用户名
tb_link(友情链接表)存储了链接的***和网站的名字,具体的如表5-7所示:
表5-7 友情链接表
字段名
数据类型
是否为空
是否主键
描述
link_id
int(4)
no
yes
自动编号
link_name
varchar(20)
yes
no
link_add
varchar(30)
yes
no
tb_chat(聊天信息表)存储了提
问的学生名字,收到问题人的名字,提问的内容,以及提问的时间,具体的如表5-8所示:
表5-8聊天信息表
字段名
数据类型
是否为空
是否主键
描述
chat_id
int(4)
no
yes
自动编号
speaker
varchar(20)
yes
no
listener
varchar(20)
yes
no
content
varchar(100)
yes
no
talktime
datetime(8)
yes
no
第6章 系统详细设计
6.1 数据库连接
实现业务 逻辑 层与数据库的连接是通过jdbc技术,它是“java database connectivity”的缩写。jdbc由一组用java 语言 编写的接口和类组成,是对数据库操作的对象封装,可以实现与数据库的无关性。它以成为一种供数据库开发者使用的标准api。
6.1.1 jdbc的基本功能
a.建立与数据库的连接。
b.发送sql语言。
c.处理数据库操作结果。
6.1.2 jdbc的特点
a.与sql语言的一致性。它允许使用从属于任何dbms的sql语言;提供odbc风格的转义语句;利用databasemetadata接口提供关于dbms的描述性信息,从而使应用程序能适应每个dbms。
b.可在现有数据库上实现。
c.提供与其它java系统一致的界面。这说明开发人员可以采用一致的编程界面来处理数据库编程。
d.简单化。
e.使用静态的通用数据类型。
f.多方法,多功能。
6.1.3 jdbc的驱动类型:
a.jdbc-odbc桥驱动程序。
b.调用本地数据库应用编程接口驱动程序。
c.数据库中间件纯java驱动程序。
d.直接连接数据库的纯java驱动程序。
6.1.4将连接数据库的代码封装在一个javabean中 dbconn.java代码如下:
package com.soul.struts.tool;
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.preparedstatement;
import java.sql.resultset;
import java.sql.sqlexception;
public class dbconn {
private string driver = "sun.jdbc.odbc.jdbcodbcdriver"; //数据库的驱动
private string url = "jdbc:odbc:mydb"; //url地址
private connection conn = null ;
//无参构造器,利用它来加载数据库连接对象
public dbconn() {
try {
class.forname(driver); //加载数据库驱动
conn = drivermanager.getconnection(url); //加载数据库连接对象
}
catch (exception e) {
system.out.println("数据库加载失败");
}
}
public connection getconn() {
return conn;
}
// 关闭数据库结果集
public static void closers(resultset rs) {
try {
if(rs != null) {
system.out.println("关闭数库结果集");
rs.close();
rs = null;
}
} catch (sqlexception e) {
e.printstacktrace();
}
}
//关闭数据库操作对象
public static void closepstmt(preparedstatement pstmt) {
try {
if(pstmt != null) {
system.out.println("关闭数库操作对象");
pstmt.close();
pstmt = null;
}
} catch (sqlexception e) {
e.printstacktrace();
}
}
//关闭数库连接对象
public static void closeconn(connection conn) {
try {
if(conn != null) {
system.out.println("关闭数库连接对象");
conn.close();
conn = null;
}
} catch (sqlexception e) {
e.printstacktrace();
}
}
}
6.2 系统功能模块的设计与实现
6.2.1 用户注册模块
当用户提出注册请求,系统显示用户注册页面,提示用户输入个人信息,用户输入个人信息,系统验证其信息是否符合要求,如果用户输入的个人信息不符合系统要求,则系统显示错误信息并要求用户重新填写个人信息,用户重新填写信息,或者取消注册,注册成功系统将用户信息写入数据库,页面将经一个显示注册成功的页自动进入登录界面。如下***6-1所示:
***6-1 用户注册页面
要实现用户信息验证功能,主要是通过客户端页面上的javascript和服务器端验证,例如验证用户输入的用户名在数据库中是否已存在,如果已存在则在提交的时候会给出提示“用户名已存在”,就要求重新注册。客户端页面上的javascript代码如下:
<script language="javascript">
function checkempty(form){
for(i=0;i<form.length;i++){
if(form.elements[i].value==""){
alert("表单信息不能为空!!!");form.elements[i].focus();
return false;
}
}
if(form.user_password.value!=form.user_password1.value){
alert("两次输入的密码不一致,请重新输入!!!"); form.user_password.focus();return false;
}
if (form.user_name.value.length <1) {
alert("用户名要在1-20个字符之间!");
form.user_name.focus();
return false;
}
var pattern = /^[a-za-z0-9_-]+@[a-za-z0-9_-]+(\.[a-za-z0-9_-]+)+$/;
if(!pattern.exec(form.em
ail.value)){
alert("邮箱格式错误!!");
return false;
}
}
</script>
在服务器端验证时,registeraction 调用 registermanager类中的adduser方法.adduser会先调同类中的hasuser方法来验证用户是否已存在。关键代码如下:
public boolean hasuser(string user_name) throws exception{
connection conn = null;
dbconn db = new dbconn();
preparedstatement pstmt= null;
resultset rs = null;
try{
conn = db.getconn();
pstmt = conn.preparestatement(sql.registcheck_tb_user);
pstmt.setstring(1,user_name);
rs=pstmt.executequery();
rs.next();
int n = rs.getint(1);
if(n==1){
system.out.print("用户名存在,返回true");
return true;
} else {
system.out.print("用户名不存在,返回false");
return false ;
}
}catch(sqlexception e){
e.printstacktrace();
throw e;
}finally{
dbconn.closers(rs);
dbconn.closepstmt(pstmt);
dbconn.closeconn(conn);
}
}
6.2.2 登录模块
在登录模块中分为教师登录和学生登录,只有输入正确的用户名和密码才能进入系统。在登录发生错误时会出现相关的提示信息,如用户名或密码错误。当教师登录成功后进入主页可以进行 电子 教案 管理 ,视频管理,作业管理,***答疑,留言管理等相关的操作。学生登录成功后进入主页可以查看,***电子教案和视频,***向教师提问,上传作业等相关操作。
用户登录模块是系统的入口,用户登录模块应具有以下功能:
获得用户权限。登录模块做为系统的入口,需要对权限进行控制。不同身份登录获的不同的使用权。本系统分为教师用户和学生用户两种权限。教师用户登录后可以进行电子教案管理,视频管理,作业管理,***答疑,留言管理等相关的操作;学生用户登录成功后可以查看,***电子教案和视频,***向教师提问,上传作业等相关操作。网站首页默认为学生用户登录页面。教师用户登录可以点页面中的“教师登录”进入教师登录页面。
验证用户的用户名和密码。系统在登录过程中必须输入其正确的用户名和密码,登录模块会对其进行核对。如果用户的用户名或密码错误则提示信息“用户名或密码错误”并返回用户登录界面。
为实现学生登录功能,要根据用户输入的用户名和密码判断是否是合法用户。于是创建一个loginaction类。调用usermanager类中的validate(string name,string password)方法:
public boolean validate(string name,string password) throws exception {
connection conn = null;
dbconn db = new dbconn();
preparedstatement pstmt = null;
resultset rs = null;
try {
conn = db.getconn();
pstmt = conn.preparestatement(sql.login_tb_user);
pstmt.setstring(1,name);
pstmt.setstring(2,password);
rs = pstmt.executequery();
rs.next();
int n = rs.getint(1);
if(n==1)
{
return true;
} else {
return false;
}
}catch(sqlexception e){
e.printstacktrace();
throw e;
}finally{
db.closers(rs);
db.closepstmt(pstmt);
db.closeconn(conn);
}
}
本系统的教师登录模块采用了固定的用户名和密码。为实现它,我创建了一个***loginaction类,调用***manager类中的方法:
public boolean validate(string name, string password)
{
if (("***".equals(name))&&("***".equals(password)))
{
system.out.print("正确!");
return true;
}else
{
system.out.print("错了");
return false;
}
}
如果教师输入的用户名或密码有误则会有提示:"用户名或密码不匹配,请重新登录!"接着页面会跳到教师登录页面。
鉴于对系统安全的考虑,用户使用系统必须先到登录页面进行身份验证,通过登录窗口用户输入用户名和密码,只有输入正确的用户名和密码后用户才能进入系统。
下***页面是学生登录的首页如***6-2:
***6-2用户登录页面
教师登录页面如***6-3所示:
***6-3教师登录页面
6.2.3 电子教案管理模块
a.电子教案管理模块分为学生用户主页的电子教案管理和教师用户主页的电子教案管理。教师成功登录后,在教师用户主页中的电子教案管理模块,教师可以上传新电子教案,也可以删除以前传过的旧电子教案。点击“上传电子教案”就会进入到电子教案上传的页面,教师点击“浏览”选择要上传的电子教案,然后点上传就完成了一个电子教案的上传。创建了一个继承于dispatchaction的uploadaction类,该类用于上传和***文件。关键代码如下:
uploadform uploadfile = (uploadform)form;
formfile file = uploadfile.getfile();
string uuidname = uuid.randomuuid().tostring();
string kejian_name = uuidname+file.getfilename();
string kejian_time =
uploadfile.getkejian_time();
servletcontext servletcontext = this.getservlet().getservletcontext();
string path = servletcontext.getrealpath("");
fileoutputstream out = new fileoutputstream(path+"/uploadc/"+ kejian_name);
out.write(file.getfiledata());
out.flush();
out.close();
uploadmanager ulm = new uploadmanager();
boolean flag = ulm.kejianadd(video_name, video_time);
if(flag)
{
request.setattribute("currenttime", new date());
request.setattribute("upload", "success");
retur, , n mapping.findforward("upload");
}
request.setattribute("upload", "fail");
return mapping.findforward("auploadc");
path表示得到当前项目下webroot 的路径,为了保存视频,在webroot下建立了一个名为uploadv的文件夹,考虑到一处编写到处运行的java 语言 初衷,把视频保存在tomcat服务器下.代码中的formfile类,是映射上传文件的,对你上传的文件进行操作,可以取得文件的名字,文件的内容等。由于怕上传的 电子 教案的名的字会相同,于是用个uuid类。用uuid.randomuuid()给文件名加一个随机的32位的不会重复的数字。上传成功的电子教案会存在服务器的uploadc文件夹中。
教师上传电子教案页面如***6-4所示:
***6-4教师上传电子教案***
c. 学生用户成功登录后,可点击“***电子教案”查看电子教案,选择想要***的电子教案点击“***”。
学生***电子教案页面如***6-5所示:
***6-5学生***电子教案页面
6.2.4 公告 管理 模块
站内公告管理小模块主要功能是管理站内公告,教师可通过公告管理模块向学生们通知,也可以删除通知。 这是一个小模块,因此创建back_noteaction类调用notemanager类中的add()方法向数据库中添加公告内容:
public boolean add(string note_title,string note_content,string note_time) throws exception{
connection conn = null;
dbconn db = new dbconn();
preparedstatement pstmt= null;
try{
conn = db.getconn();
pstmt = conn.preparestatement(sql.add_tb_note);
pstmt.setstring(1,note_title);
pstmt.setstring(2,note_content);
pstmt.setstring(3,note_time);
int n=pstmt.executeupdate();
if(n==1){
return true;
} else {
return false;
}
}catch(sqlexception e){
e.printstacktrace();
throw e;
}finally{
dbconn.closepstmt(pstmt);
dbconn.closeconn(conn);
}
}
学生的主页是由主页中include进去几个页组成的。所以要在用户的页面中显示公告,创建了一个head_mainaction类,在该类中的show方法中使用 request.getsession().setattribute("list_note", list_note);将list_note放在session中的。于是只要浏览器不关,在任何一个显示页面都能取到用el表达${lsit_note}取得。
添加公告页面如***6-6所示:
***6-6添加公告页面
6.2.5 留言管理模块
在教师的留言管理模块中,教师可以回复留言和删除留言。学生只可以查看留言和留言。教师用户创建了一个back_messageaction类,调用messagemanager中的诸方法来添加或删除留言。学生用户创建了一个head_messageaction类,调用messagemanager中某些方法。在学生显示留言页面要分我利用了jstl加el表达式分页,关键代码如下:
messageactionform maf = (messageactionform)form;
messagemanager mm = new messagemanager();
arraylist list = mm.query();
int pagesize = list.size() / 4 + 1;
arraylist list1 = new arraylist();
int begin = 0;
int end = 3;
int currentpage = 1;
//---从页面得到数据---
if(maf.getcurrentpage()!=1&&maf.getcurrentpage()!=0)
{
begin = maf.getbegin();
end = maf.getend();
currentpage = maf.getcurrentpage();
}
maf.setbegin(begin);
maf.setend(end);
maf.setcurrentpage(currentpage);
list1.add(maf);
request.setattribute("currenttime", new date());
request.setattribute("list", list);
request.setattribute("list1", list1);
request.setattribute("pagesize", integer.valueof(pagesize));
return mapping.findforward("showmessage");
教师查看留言页面如***6-7所示:
***6-7教师查看留言页面
6.2.6 视频管理模块
视频管理模块分为学生用户主页的视频管理和教师用户主页的视频管理。教师成功登录后,在教师用户的主页中的视频管理模块,教师可以上传新的视频,也可以删除以前传过的视频。点击“上传视频”就会进入到电子教案上传的页面,教师点击“浏览”选择要上传的视频,然后点上传就完成了一个视频的上传。上传视频的关键代码如下:
uploadform uploadfile = (uploadform)
form;
formfile file = uploadfile.getfile();
string uuidname = uuid.randomuuid().tostring();
string video_name = uuidname+file.getfilename();
string video_time = uploadfile.getvideo_time();
system.out.println("时间="+video_time);
servletcontext servletcontext = this.getservlet().getservletcontext();
string path = servletcontext.getrealpath("");
fileoutputstream out = new fileoutputstream(path+"/uploadv/"+video_name);
out.write(file.getfiledata());
out.flush();
out.close();
uploadmanager ulm = new uploadmanager();
boolean flag = ulm.videoadd(video_name, video_time);
if(flag){
request.setattribute("currenttime", new date());
request.setattribute("upload", "success");
return mapping.findforward("upload");
}
request.setattribute("upload", "fail");
return mapping.findforward("auploadv");
path表示得到当前项目下webroot 的路径,为了保存视频,在webroot下建立了一个名为uploadv的文件夹,把视频保存在tomcat服务器下。同时为避免出现相同文件名的视频名字,每个视频上传之前在视频名前加了一段唯一的uuid字符编码,对应数据可存入tb_video表中的video_name字段,将来在显示视频的详细信息时同样根据video_name来寻找视频。
学生***视频,用video_name查找***视频。***视频的代码如下:
uploadform ulf = (uploadform)form;
string video_name = ulf.getvideo_name();
video_name = new string(video_name.getbytes("iso-8859-1"),"gb18030");
servletcontext servletcontext = this.getservlet().getservletcontext();
string path = servletcontext.getrealpath("");
fileinputstream input = new fileinputstream(path+"/uploadv/"+video_name);
response.setcontenttype("application/x-msdownload");
response.setheader("content-disposition", "attachment; filename=" + new string(video_name.getbytes("gb18030"),"iso-8859-1"));
outputstream out = response.getoutputstream();
byte[] b = new byte[1024*1024];
while(input.read(b)>0){
out.write(b);
out.flush();
}
input.close();
out.close();
教师可以根据video_name删除某些视频,调用delvideo()方法将相关信息删除。关键代码如下:
uploadform ulf = (uploadform)form;
string video_name = ulf.getvideo_name();
servletcontext servletcontext = this.getservlet().getservletcontext();
string path = servletcontext.getrealpath("");
file filename = new file(path+"/uploadv/"+video_name);
filename.delete();
uploadmanager um = new uploadmanager();
boolean flag = um.delvideo(video_name);
6.2.7 作业 管理 模块
本模块在学生用户的主页是学生将自己的作业上传到服务器下的uploadt文件夹中,还可以***老师批改后上传的作业。在教师用户的主页中老师将学生上传的作业***下来,之后再将批改好的作业上传到服务器中,供学生***。上传作业与上传视频类似,只不过多了个string user_name = uploadfile.getuser_name();用来收集上传试卷的用户名。关键代码如下:
uploadform uploadfile = (uploadform)form;
formfile file = uploadfile.getfile();
string test_name = file.getfilename();
string test_time = uploadfile.gettest_time();
string user_name = uploadfile.getuser_name();
system.out.println("时间="+test_time);
servletcontext servletcontext = this.getservlet().getservletcontext();
string path = servletcontext.getrealpath("");
fileoutputstream output = new fileoutputstream(path+"/uploadt/"+file.getfilename());
output.write(file.getfiledata());
output.flush();
output.close();
uploadmanager ulm = new uploadmanager();
boolean flag = ulm.testadd(test_name, test_time,user_name);
学生上传作业页面如***6-8所示:
***6-8学生上传作业页面
6.2.8 ***答疑模块
在这个模块中学生和教师可以***交流,学生可以向老师***提出问题,老师将***回答。
学生或者教师将说的话发送,将先存到数据中,随之再将数据库中的后20条记录取出,在message.jsp中显示。***答疑页面的主要代码如下:
<frameset rows="*" cols="*,250" framespacing="1" frameborder="yes" border="1" bordercolor="#99ffff" >
<frameset rows="*,117" cols="*" framespacing="0" frameborder="yes" border="0">
<frame src="/product.free.10012851.9/message.jsp" name="mainframe" frameborder="1">
<frame src="/product.free.10012851.9/control.jsp" name="bottomframe" frameb
order="1">
</frameset>
<frameset rows="*,119" cols="*" framespacing="0" frameborder="yes" border="0">
<frame src="/product.free.10012851.10/leave.jsp" name="bottomframe1" frameborder="1" scrolling="no" noresize="noresize">
</frameset>
</frameset>
6.2.9 友情链接 管理 模块
教师还可将自己知道的一些好的网站添加到网站里,把友情链接的网名和***添加进去,学生会在页面上看见添加进的网站名字,用户可以点网站名进入相应的网站。
为了方便管理和安全,将所有的sql语句都封装在一个sql类中,并且每条语句都定义成public static final类的,这样就不允许有别的语句继承它们。具体的代码如下:
public final class sql {
//用户登录
public static final string login_tb_user = "select count(*) from tb_user where user_name=? and user_password=?";
//用户注册向数库数中增加数据
public static final string registadd_tb_user ="insert into tb_user (user_name,user_password,realname,email)" +"values( ?, ?, ?, ? )";
// public static final string queryid_tb_user ="select user_id from tb_user where user_name=?";
public static final string registcheck_tb_user="select count(*) from tb_user where user_name=?";
public static final string add_tb_articletype="insert into tb_articletype (typename,description) values(?,?)";
public static final string query_tb_articletype="select * from tb_articletype";
public static final string del_tb_articletype="delete from tb_articletype where type_id=?";
public static final string add_tb_article="insert into tb_article (title,type_id,content,phtime,number) values(?,?,?,?,?)";
public static final string del_tb_article="delete from tb_article where article_id=?";
public static final string query_article="select * from tb_article";
public static final string show_article="select tb_article.*,tb_articletype.* from tb_article,tb_articletype where (tb_article.type_id=tb_articletype.type_id and tb_article.type_id=? and article_id=?)";
public static final string xin="select tb_article.*,typename,description from tb_article left join tb_articletype on (tb_article.type_id=tb_articletype.type_id)";
public static final string add_tb_note="insert into tb_note (note_title,note_content,note_time) values(?,?,?)";
public static final string query_tb_note="select * from tb_note";
public static final string del_tb_note="delete from tb_note where note_id=?";
public static final string show_tb_note="select * from tb_note where note_id=?";
public static final string update_tb_note="update tb_note set note_content=? ,note_time=? where note_id=?";
public static final string update_tb_article= "update tb_article set content=? ,phtime=? where article_id=?";
public static final string query_tb_user = "select user_id,user_name,realname,email from tb_user";
public static final string del_tb_user = "delete from tb_user where user_id=?";
public static final string query_tb_message = "select * from tb_message order by mes_id";
public static final string delone_tb_message = "delete from tb_message where mes_id=?";
public static final string delall_tb_message = "delete from tb_message";
public static final string reply_tb_message = "insert into tb_message (mes_content,mes_sender,mes_sendtime,to_whom) values(?,?,?,?,?)";
public static final string add_tb_link = "insert into tb_link (link_name,link_add) values (?,?)";
public static final string del_tb_link = "delete from tb_link where link_id=?";
public static final string query_tb_link = "select link_id,link_name,link_add from tb_link";
// public static final string part_article = "select article_id,title,content,phtime,number from tb_article order by article_id desc";
public static final string part_article = "select article_id,title,content,phtime,number,typename from tb_article left join tb_articletype on (tb_article.type_id=tb_articletype.type_id) order by article_id desc";
public static final string show_link = "select * from tb_link ";
public static final string show_note = "select * from tb_note order by note_id desc";
public static final string add_tb_video = "insert into tb
_video (video_name,video_time) values(?,?)";
public static final string add_tb_test = "insert into tb_test (test_name,test_time,user_name) values(?,?,?)";
public static final string query_tb_video = "select video_name,video_time from tb_video order by video_id desc";
public static final string query_tb_test = "select test_name,test_time,user_name from tb_test order by test_id desc";
public static final string del_tb_video = "delete from tb_video where video_name=?";
}
第7章 开发中遇到的难点和对策
a. 数据库的连接问题
问题:数据库的连接:在开发过程中经常出现查找不到数据库,出现这样的错误一般是数据库的连接出现问题。
数据库加载驱动有问题。一开始用的是
class.forname("com.microsoft.jdbc.sqlserver.sqlserverdriver").newinstance();
stirng url = "jdbc:microsoft:sqlserver://localhost:1433;databasename=mywork";
要求有三个库文件:msbase.jar,mssqlserver.jar,msutil.jar,该文件需要放在服务器的/web-inf/lib文件夹下面.
解决方法:经检查发现1433端口没有打开,于是就换成下面的odbc-jdbc桥驱动:
class.forname("sun.jdbc.odbc.jdbcodbcdriver");
string url="jdbc:odbc:mydb";
connection con=drivermanager.getconnection("jdbc:odbc:mywork");
换成这个驱动就可以连上数据库了。
b. 从数据库中查询信息时会出错
问题:把查询的结果集rs放在arraylist的对象list中,可是在jsp页面中调用的时候却没有值。
解决方法:经检查发现,向maf中set相应属性时,顺序必须跟sql查询语句中的查询的顺序一样才可以。
while(rs.next()){
maf = new messageactionform();
maf.setmes_id(rs.getint("mes_id")); //1
maf.setmes_title(rs.getstring("mes_title")); //2
maf.setmes_content(rs.getstring("mes_content")); //3
maf.setmes_sender(rs.getstring("mes_sender")); //4
maf.setmes_sendtime(rs.getstring("mes_sendtime")); //5
list.add(maf);
}
第8章 总结 及未来展望
8.1 总结
《数据库原理网上授课平台》采用b/s模式, 在研究当前网站的基础上,经过详细调研后,确定了系统设计的领域,包括系统设计、数据库设计、程序设计等;通过采用面向对象设计的思想,用java程序 语言 和jsp+struts等相关技术进行开发设计;本系统主要完成了用户登录模块,用户注册模块,留言模块,视频 管理 模块, 电子 教案管理模块,***答疑模块。该系统完成了用户可以***电子教案,视频,***向管理员提问。 利用sql server 2000+jsp+struts框架开发的,便于维护。同时为网站的用户提供友好的操作界面以及操作的灵活性,使用户能轻松地完成相应操作。
在系统的开发过程中也遇到了许多困难和问题,数据库的连接、数据写入数据库时出错、在调度中出现字符不匹配、页面的设计等。处理数据库的连接是通过建立数据源和jsp中的连接语句实现的,数据的处理是通过sql语言完成的,而页面的设计通过html和dreamweaver对其进行设计。
在本次开发过程中涉及到了许多新东西,也遇到了许多问题,经过和老师与同学的交流以及自己的努力解决了这些问题。在本次开发过程中使我很好的掌握了jsp+struts等相关技术和sql server 2000,给我以后的学习带来了极大的帮助。
8.2 展望
由于这次毕业设计时间紧迫,加之自己的水平有限,系统设计得比较简单,有些方面都没有来得及实现,在以后的学习和实践中我会加以丰富。
(1)为了数据安全,在本系统中只有对该系统所用到的数据库进行备份,而没有对应的数据恢复和数据清理机制,为了能够使得系统数据不至于在遇到误操作时无法恢复,应设计数据恢复功能模块,并及时对数据进行定时的清理。并且此次设计也没有数据参照完整性问题。今后要注意这个问题,要把数据库部分做的更加安全。
(2)“***答疑”学生提交问题,存入数据库,教师显示页面每隔一秒自动刷新,调用chataction类中的方法从数据库中查询结果的在教师显示页面中显示。后因用了frame把几个页面放在一个页面中出了错,所以基本未实现。今后要将其完成。做的更完美一些。
(3)本系统只用了struts框架,为了使系统更好,应该使用struts+spring+hibernate三大框架。
(4)在用户模块中,由于用户需求不同,系统应具有更好的扩展功能来完善,如增加密码找回功能等,更好的满足用户的需求。
参考文献 [1] 张海藩. 软件工程导论(第四版)[m]. 北京:清华大学出版社,2003.12
[2] johannes gehrke(美). 数据库系统概念[m]. 北京:清华大学出版社,2004.10
[3] paul dubois(美). 网络数据库指南[m]. 北京: 机械 工业 出版社,2000.1
[4]marty hall,larry brown(美). servlet与jsp核心编程(第2版)[m]. 北京:清华大学出版社,2004.6
[5] 汪晓平,俞俊,李功. 精通java网络
编程[m]. 北京:清华大学出版社,2005.9
[6] 李载甲. jsp完全探索[m]. 北京:中国青年出版社,2001.1
[7] y.daniel liang(美). java编程原理与实践(第4版)[m]. 北京:清华大学出版社,2005.8
[8] 4u2v工作室. dreamweaver网页设计与制作100例[m]. 北京:人民邮电出版社出版,2004.8
[9] 刘晓华,张健,周惠贞. jsp应用开发详解[m]. 北京: 电子 工业 出版社,2002.1
[10] 赵辉,***. jsp开发技术原理与实践教程[m].北京:电子工业出版社
[11] 宋梅,张学平. 深入浅出j2ee架构[m].北京:清华大学出版社
数据库原理篇9
关键词:数据库原理与应用;课程体系改革;实践教学
中***分类号:G642.0 文献标志码:A 文章编号:1674-9324(2016)07-0264-02
现代计算机信息技术与网络技术的飞速发展,加速了数据库技术的广泛应用和发展。各类信息系统和动态网站的开发都需要后台数据库的支持,大量信息数据都是利用数据库进行存储和管理的,数据库技术成为系统开发不可或缺的一部分。数据库原理及应用是我国高等院校计算机专业必修的专业基础课,是兼有理论和实践的综合性课程,是学习软件工程、WEB程序开发以及人工智能等课程的重要基础课程。在相关课程中起到承上启下的桥梁作用,尤其是本科计算机专业的学生构建整个专业知识体系的基础,关系到软件开发人才的专业素质和软件开发质量。所以,不断地探索数据库原理与应用的教学改革思路具有重要的意义。
一、数据库原理与应用课程教学上存在的问题
这几年,数据库技术课程体系一直在进行变革,取得了一定的进展。在教学内容和实践环节上也实施了很多改革措施,教学效果有了一定的改善。但仍然存在不尽如人意的地方。
1.理论案例与实践案例衔接不紧密,导致知识掌握不扎实,不能很好地应用到实践中。虽然数据库理论的课时和实践应用的课时都进行了有效的调整,但由于其中的案例在每一门课中都是***的,而不是将一个完整的案例贯穿始终,学生对于数据库设计的理解就割裂开来,没有形成系统合一的结果。最终理论还是理论,实践应用中并没有延续理论分析的结果,没有透彻地理解数据库设计原理,那么在实际设计数据库时会出现很多不完善的地方。
2.在数据库应用中过度重视应用软件的作用,忽视理论的结合。加大数据库应用课程的学时后,教师教学重心偏向数据库软件平台的应用方法,虽然以案例为驱动进行讲授,但忽视了相关理论应用的讲解。学生的时间和精力会更多的应用在SQL语言的应用上,而忽视了数据库关系模式建立的正确性,实践脱离了理论的指导,导致设计内容的理论依据不完整,出现失误和偏差,给后续的学习带来了隐患。
3.考核方式不合理,使实践环节不被重视,无法激发学生学习的主动积极性。数据库原理及应用是一门理论性和实践性都很强的课程,传统的考核方式比较单一,只有单独的理论考试,会导致学生为应付考试而对相关理论知识死记硬背,出现“高分低能”现象,这与该课程培养应用型人才的目标是相悖的。数据库原理和应用分成两门课后,还只是试卷考核,没有上机考核。虽然实践课上学生也动手实际操作了,但由于缺乏激励机制,只是停留在浅尝则止的状态,更多的会采用死记硬背的方法来学习。
4.教学手段始终不变。目前,高等院校计算机专业数据库原理及应课程的授课大多采用多媒体课件。教师在授课时没有针对课程内容适时调整授课手段,始终如一依赖课件,给课程的教学质量带来了一些问题。如在涉及关系数库和关系数据理论知识的教学中,学生需要较长间理解这些知识点,而用多媒体课件进行讲授,加快了演示的节奏,学生的思维难以与之同步,从而影响教学效果。
因此,为了解决上述存在的问题,让学生更加积极有效地真正学好数据库技术,我们提出了数据库相关课程的一些改革方案。
二、数据库课程体系改革方案
1.制定合理的教学计划。根据教学的需要,适时的调整或制定新的教学计划。调研2006―2011版的教学计划,包括计算机专业和软件专业,软件专业分为三本和二本方向,了解数据库相关课程的设置,包括学时数、学分、理论课学时数和实验课学时数、考核方式和开课学期。调整并确定相关课程的合理设置。数据库课程体系内容主要有:数据库原理、数据库应用、数据库课程设计、程序设计语言(C#或Java)和软件工程。软件工程是软件应用开发设计规范化理论指导,程序设计语言是编程工具,数据库原理与应用实现后台数据库设计,数据库课程设计是结合这几门课程综合设计一个小型应用系统。软件工程和程序设计语言尽量安排在数据库原理与应用之前或同一学期,这样,在课程设计中对数据库体系结构和应用有一个比较完整、清晰的理解。
数据库原理篇10
关键词: “数据库原理”课程 教学内容 理论教学 实践环节
1.引言
数据库技术是计算机科学技术中发展最快的领域之一,也是应用最为广泛的技术之一,它已经成为计算机信息系统和应用系统的核心技术和重要基础。经过几十年的发展,数据库技术已经形成了比较完整的理论体系和广泛的应用系统。
“数据库原理”课程作为大学本科计算机专业的一门专业基础必修课,主要讲授数据库的基本原理和应用设计方法,理论性强、应用广泛。通过该课程的学习,如何使学生既能掌握数据库技术的基本概念和理论,又能掌握数据库的设计和应用方法,更好地胜任今后的实际工作,是所有任课教师都要重视的问题。目前,我国高校计算机及信息技术等相关专业大都开设了数据库原理这门课程,教学内容和教学方法基本相似,并且大都存在着一些类似的问题。针对目前数据库原理教学中存在的一些问题,本文对该课程的内容组织、教学方法和实践环节几个关键问题进行研究探讨。
2.优化教学内容的组织结构
教学内容的选择和知识模块的组织方式是课堂教学的一个重要方面,直接影响着教学效果。教学内容是培养目标、教学计划和课程体系的完整体现,也是课堂教学得以实施的基本保证,而知识模块的组织方法则是先进教学思想的体现,它对于教学方法和教学手段的创新,以及提高教学质量都有着非常重要的促进作用。
传统的数据库原理课程的教学内容主要以关系数据库为基础、数据库管理系统为中心,介绍关系系统的基本原理,理论教学始终放在首位,很少涉及具体的应用,学生在最初的学习过程中因为没有实践的心得体会而很难理解那些抽象的概念和理论,并进一步导致学生被动乏味、兴趣低下。进入实践阶段后,由于理论基础不扎实,学生常会感到无从下手,致使实践和理论之间严重脱节,更进一步挫伤了学生学习的积极性,影响了教学效果。
鉴于内容编排上的问题,我们在介绍完数据库的一些基本概念之后,即对照着某一具体的关系数据库系统,如SQL SERVER 2005,介绍关系模型、关系代数和关系数据库语言SQL等内容,同时进行上机实践,这样学生能较早对关系数据库有个感性认识,较好地掌握SQL的语法和功能,并锻炼其实际操作能力。接下来,针对某一具体数据库应用系统的需求,如***书管理系统,讲授关系数据库的规范化理论和设计方法。这样让课程内容的组织始终与具体应用相结合,不仅使很多抽象难懂的概念更加具体和容易理解,而且调动了学生学习的兴趣和积极性。
3.从需求和问题出发进行理论教学
现在很多数据库原理教材都是从理论出发,先讲解一大堆的理论,然后才谈及实践。由于数据库的基本原理、概念和技术的理论性强、抽象度高,因此这样常会导致学生在最初的理论知识学习阶段感觉被动乏味、兴趣低下、理解困难,一些学生甚至会自暴自弃。并且,这种用理论引出实践的方法也不符合人们认知世界的规律。马克思主义的实践论和认知论告诉我们,理论源于实践,又反过来指导实践,脱离实践的理论是空洞无力的,“实践―理论―再实践―再理论”无限循环往复才是人类认知世界的基本过程。因此,从实践引出理论会使理论知识更容易理解,能够让学生首先明白学习这些理论的实际意义,也更容易激发学生的积极性和主动性。
为了帮助学生理解抽象的理论,激发兴趣,我们采取了下面的方法。
(1)课程第一堂课,先联系生活实际,谈谈我们生活中哪些地方离不开数据库,如:银行储蓄,火车飞机订票,学生的学籍管理,人事工资管理,等等。让学生从感性上认识到数据库和我们现代生活的密切相关性。接着引出一些相关概念,如:信息、数据、数据库、数据库管理系统等,并用实例和类比的方法讲解这些概念及其相互关系。有实际生活知识做背景,这些概念理解起来也就更容易了。
(2)在以关系数据库为例讲解数据库的基本概念、模型和技术时,选择一个主流的大型数据库系统作为理论教学背景和实践教学平台,如SQL Server 2005。在理论教学讲授SQL语句时,如果干巴巴地列出语句格式和要注意的事项,学生必定感到枯燥乏味。那么,可以在讲解SQL语句及其使用格式的同时,在SQL Server 2005环境下输入SQL语句,然后让学生观察结果。如果语句出错,则引导学生思考原因:为什么出错?是格式错误,还是逻辑错误?如果有条件,也可以在实验室进行这部分内容,边讲解边实验。这样不仅调动了学生学习的积极性,而且加深了学生对基本概念和理论的理解。
(3)基于问题驱动的理论教学法。在讲数据库设计的规范化理论一章时,很多学生不明白学习这些形式化的理论有什么用。因此,在讲这一章之前,应先把问题提出来,比如,如何设计一个数据库的关系模式,你设计的这个关系模式是好是坏?衡量的标准是什么?为什么?让学生知道学习这章内容就是为解决这些问题的,有其必要性和重要性,从而做到心中有数。接下来讲解相关理论,以及这些理论是如何解决提出的问题的时候,学生就可以有的放矢地进行学习了。
4.重视实践环节,加强应用能力的培养
数据库原理是一门应用性很强的课程,实践环节直接关系到整个课程的教学效果。目前在数据库原理的教学中普遍存在一定的误区;过分强调原理和知识的完备性和系统性,而忽视了实践教学、实验方案在培养学生实践能力和创新能力中的重要作用,认为既然是原理课,不论对什么学生都应着重讲解理论知识,实践环节的学时偏少,忽视了学生实际应用能力的培养。此外讲课也大多是填鸭式的教学,在学生自主学习和创新能力的培养方面还很欠缺,学生学习状态不佳,学习目的不明确,导致学习效果不理想。
目前大部分院校本科生学习该门课程的目的是为了应用。对于这样的学生,数据库的实践教学尤为重要,任课教师更应该在实践教学上下功夫,让学生能够真正把所学理论知识和实践联系起来,为日后开发数据库应用系统奠定基础。
由于学时的限制,我们在课程实验环节上做了精心设计和周密安排。除了与理论课相配合的实验课外,我们还在课程结束后的小学期设置了相应的课程设计。
(1)通过基础实验帮助学生理解和巩固理论知识
教学过程中课堂教学和基础实验需同步进行。学生只有通过上机操作才能真正理解所学,消化课堂上的理论知识,这一点对数据库课程也尤为重要。为提高上机质量,教师应首先做好实验课和理论课的衔接关系,实验课最好和相应的理论课同步进行,否则很难达到好的效果。我们按照教学顺序编写了实验指导书,让学生设计SQL语句并通过上机来验证。结合课程内容,我们设置的实验如下。
建立数据库及基本表:学习使用关系数据库SQL SERVER 2005,并练习数据库的建立和删除、基本表的建立和修改、数据的输入。
数据更新:使用INSERT、UPDATE、DELETE语句进行数据更新。
数据查询:使用SELECT语句进行数据的查询。
视***的创建与修改:使用CREATE、DROP语句创建和删除视***,使用INSERT、UPDATE、DELETE语句更新视***,体会更新视***的前提条件。
数据完整性:使用PRIMARY KEY、FOREIGN KEY REFERENCES、NOT NULL、UNIQUE、CHECK等关键字定义完整性约束,并通过相应操作验证这些完整性约束,体验完整性约束的作用。
(2)通过课程设计培养学生的综合应用能力
为了增强学生的综合运用能力,在学完数据库原理课程之后的小学期我们开设了相应的课程设计。课程设计的任务是让学生从实际生活中的数据库应用系统出发,完成一个实际的、基于C/S或B/S的数据库应用系统设计的全过程。包括:需求调查、数据库设计、数据库建立、数据输入、应用系统的设计和开发,用户界面的设计和实现等。具体要求如下:
分组:将学生分成小组,每组人员为4―5人,组长1名,负责任务分工和总体协调。
分工:每名学生担任不同的角色,包括系统分析、系统设计人员、数据库设计人员、应用系统开发人员、测试人员等,分工协作、共同完成设计和开发任务,从而培养团队精神。
开发数据库应用系统:选择一个合适的DBMS产品,选择合适的应用开发工具,按照设计的结果建立数据库,开发应用系统,输入数据并调试运行所开发的系统。
实验报告:写出完整的实验报告,包括:需求调查报告、系统分析报告、数据库设计报告、应用系统设计报告、数据库实施计划、系统测试计划、系统测试报告、用户使用手册等文档。
考查形式:向教师和其他小组运行演示开发的数据库应用系统,提交所有文档。
课设任务书后面可附上参考题目,以供学生选择,如:***书管理系统、网上书店系统、加油站管理系统、医院住院管理系统、股票交易系统、人力资源管理系统、仓库管理系统、企业工资管理系统等。
课设小组完成设计方案后,组织全班学生对每个小组的设计方案进行讨论和评价,各小组根据大家的意见进行修改,通过后再进行代码的编写。整个系统完成后,每组派代表演示本组所开发的系统。通过集体讨论,大家可以互相学习,交流开发过程中的收获和体会。
数据库课程设计不仅要用到数据库的知识,而且要用到编程和软件工程方面的知识。教师应该让学生充分发挥自己的积极性和主观能动性,一方面应注重学生***解决问题能力的培养,另一方面还要注重培养学生的团队合作精神。在整个课程设计中,要以学生为主体,充分发挥教师的引导作用,教师不仅要指导学生学会查找资料,更重要的是培养学生发现问题、分析问题和解决问题的能力。
5.结语
要提高数据库原理的教学效果,必须不断优化教学内容,积累实践经验,改进教学方法和手段,构建科学、合理的教学体系。由于数据库技术在不断发展,知识在不断更新,教师观念也必须不断更新,教师应从教学内容、教学方法和实践等方面认真思考,锐意改革,为社会培养出更多具有创新能力的数据库应用人才。
参考文献:
[1]崔巍等.浅谈数据库课程实践教学.计算机教育,2007.11.
[2]黄德才等.“数据库原理及其应用”课程知识模块组织和教学实践,中国科教创新导刊,2007,(471).
[3]施伯乐,丁保康等,数据库系统教程(第2版).北京:高等教育出版社,2003.8.