时间:2023-03-01 16:33:15
导言:作为写作爱好者,不可错过为您精心挑选的10篇关系数据库,它们将为您的写作提供全新的视角,我们衷心期待您的阅读,并希望这些内容能为您提供灵感和参考。
前言
从上个世纪60年代至今的半个世纪,数据库技术伴随着信息技术的发展不断发展,到目前共经历了人工管理阶段、文件系统阶段和数据库系统阶段,在数据库系统阶段又经历了网状数据库、层次数据库和关系数据库阶段,进二十来年,关系数据被广泛使用,发展成主流,但随着互联网技术的蓬勃发展,关系数据库使用遇到了一些新的问题,为应对这些新的问题,近两年来非关系数据库NOSql越来越引起人们的注视,得到了快速发展。
1 关系数据库
1.1 关系数据库的简介
支持关系模型的数据库系成之为关系数据库,是目前各类数据库中使用最为广泛的数据库系统。关系数据库在经过二十几年的发展,已经变的功能强大,使用广泛,产品成熟的数据库系统,现在使用主流的数据库都为关系型数据库,比较熟悉的如SQL Server、Mysql、Oracle、Sybase、Informix、DB2等。在网络上使用比较广泛的是Sql Server、Mysql和Oracle。
1.2 关系数据库的特点
关系数据库是支持关系模型的数据库系统。而关系模型是由二维表来表示实体和实体间联系的模型。使用二维表存储数据,对使用者来说很直观,更容易理解。使用关系数据库的优势主要表现在以下几个特性:
(1)操作方便性。通过开发应用程序和数据库连接,用户能方便的对数据库中数据进行操作,特别对没有数据库基础的人,也可以通过数据库管理系统,直接在数据库中操作。
(2)易于维护性。关系数据库在完整性约束中提供了实体完整性、参照完整性和用户定义的完整性,通过完整性约束可以大大降低了数据存储的冗余及数据不一致的概率。
(3)访问数据的灵活性。关系数据库中提供了诸如视图,存储过程,触发器,索引等对象,是访问数据更加灵活。
1.3 目前关系数据库面临的问题
随着互联网技术的发展,尤其是web2.0 技术使用,更注重用户和服务器以及用户和用户之间的交互作用,用户成为既是网站内容的浏览者,也是网站内容的制造者。例如:博客(BLOG)、社会网络(SNS)、以及现在比较热的微博等。对于在使用web2.0技术并且访问量比较大网站,使用传统关系数据库就会遇到一些问题,主要表现在以下几点:
(1)对数据库高并发读写的需求
Web 2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,无法使用动态页面静态化技术,因此数据库的并发负载非常高,往往要达到每秒上万次的的读写请求,此时服务器上的磁盘根本无法承受如此之多的读写请求。
(2)对海量数据的高效率存储和访问的需求
对于大型的社交网站网站,每天用户产生海量的用户动态,随着用户的不断增减,一个数据表中的记录可能有几亿条,对于关系型数据库来说,在一个有上亿条记录的表里面进行SQL询,效率是极其低下的。一些大型Web 网站的用户登录系统也是如此,如腾讯、163邮箱都有数亿的帐号。
(3)对数据库的高扩展性和高可用性的需求
在基于Web的架构中,数据库是最难进行横向扩展的,当用户量和访问量增加时, 数据库没有办法像Web Server 那样简单的通过添加更多的硬件和服务结点来扩展性能和负载能力,对于很多需要24 小时不间断服务的网站来说,对数据库系统的升级和扩展往往需要停机维护。
2 非关系数据库NoSql
2.1 NoSql概述
NoSql是应对关系数据库出现的问题而发展起来的,近几年随着web2.0技术的广泛应用,NoSQL 得到了快速的发展,NoSQL数据库指的是非关系性的、定义不是很明确的数据存储仓库。NoSQL数据库不再使用关系模型的概念,放弃了使用SQL语句对数据库进行操作。
NoSQL 数据库根据数据的存储模型和特点又分为很多种类。主要有
(1)面向列的存储系统。按列存储,区别于关系数据库中按行存储,容易扩展,适用与存储海量数据,对一个或几个字段进行查询的效率很高,但在复杂查询功能比较弱,如多表联合查询。此类数据库产品有BigTable、Hbase、assandra和Hypertable。
(2)面向文档存储系统。保证海量数据存储的同时,具有良好的查询性能。用JSON或类JSON格式进行存储,存储的内容是文档型的,文档中的格式是自由的。此类数据库产品有MongoDB和CouchDB。
(3)键-值(key/value)存储系统。是最简单的Nosql系统,具有极高的并发读写性能。通过key能够快速查询到value,并且不考虑value 的格式。此类数据库产品有Tokyo Cabinet/Tyrant、BerkeleyDB、MemcacheDB和Redis。
(4)图存储系统。图形关系的最佳存储模式。如Neo4J、FlockDB。
(5)对象存储。类似面向对象语言的语法操作数据库,通过对象的方式存取数据。此类数据库产品有db4o、Versant。
(6)xml 数据库。高效存储XML 数据,并支持XML的内部查询语法。此类数据库产品有Berkeley DBXML、BaseX。
2.2 NoSql数据库的优势
相对于关系数据库,Nosql数据库的优点主要表现在:
(1)容易扩展和高性能。NoSQL 数据库种类很多,但是都有一个共同的特点就是去掉关系型数据库的关系型特性。数据之间彼此无关系,这样就非常容易扩展。可以存储海量数据。同样由于数据之间无关系,数据库的结构简单,在处理大数据量时,NoSQL 数据库会有出色的读写性能。
(2)灵活的数据模型。NoSQL 数据库不使用传统的关系数据库模型,而是使用如key-value 存储、文档型的、列存储、图型数据库、xml 等方式存储数据模型,使用这些模型都无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。同时根据需求可以选择合适的模型。
(3)经济性
在数据量和访问量比较大的情况下,传统的关系数据库对服务器的要求比较高,甚至使用专用硬件设备,这样造价就比较高。而NoSQL数据库的易扩展的特点使配置较低服务器上运行,也可以使用低配服务器组成集群来使用,并且有研究证实使用NoSql数据库基于低配硬件的分布式存储解决方案比现在的高端关系数据库更加可靠。这样就极大的降低了投资成本。
2.3 NoSql的不足
(1)成熟度方面。NoSQL数据库的实际应用,近几年才逐渐开始使用,并且大部分NoSQL的产品都还处于实验和不断完善的阶段。在产品成熟度和稳定性方面,NoSq数据库远不及发展了二十多年且已被广泛使用的关系数据库。
(2)商业支持方面。大部分NoSQL数据库都是开源项目,没有专门的数据库厂商提供完善的服务,一旦出现故障,只能自己的能力解决,对于一般使用者来说风险比较大。
(3)使用习惯方面。软件开发人员已经习惯了关系数据库的模式,解决问题的思路已经被固定在关系模型上,而NoSQL数据库的开发以放弃了关系模型,要软件开发人员放弃原来的思路,而掌握和使用NoSql数据库是很困难的,导致使用NoSQL数据库的开发人员不可能在短时间内快速增加,这也成为NoSql数据库发展的一个障碍。
3 关系数据库与NoSQL 数据库结合使用
Web2.0时代,关系数据库不能满足对数据库高并发读写、海量数据的高效率存储和访问、高扩展性和高可用性方面的需求,而NoSql数据库可以解决这些问题,从而推动了NoSql数据库应用和发展,那是不是说NoSql数据库就能取代关系数据可了呢?从目前来看,基于NoSql数据库的不足,NoSql数据库还不能完全取代关系数据库,对NoSql数据库的使用,单独使用的情况很少,大多数情况下都是关系数据库和NoSql数据库结合使用。
关系数据库和NoSql数据库结合使用又分为两种模式:
(1)NoSql数据库作为辅助存储。在这种模式下,把所有的数据都存放在关系数据库中,可能被经常频繁读取的数据再存放在NoSql数据库中一份,其目的是提高数据的查询速度,减少关系数据库的并发访问负载。
(2)NoSql数据库作为主存储。在这种模式下,把所有的数据存储在NOSQL数据库中,为了一些特殊业务或功能的需要,在将数据存入NOSQL 的时候,同时存储到关系数据库一份。在数据存储和查询主要是由Nosql数据库完成,少量的数据是从关系数据库读取。
4 结语
目前关系数据库仍是主流数据库,仍被广泛使用,NoSQL数据库还不能完全取代关系数据库,虽然NoSql数据库打破了关系数据库存储的观念,采用创新的存储方式,在快速读写、海量存储,高扩展性上很好满足web2.0时代数据存储的要求,但NoSql数据库也有自己的缺陷。在现阶段的某些情况下,可以将关系型数据库和NoSQL数据库结合使用,相互弥补各自的不足。随着NoSql数据库的不断发展和完善,将来也有可能取代关系数据库成为主流数据库。
参考文献:
>> XML文档与关系数据库数据转换的研究 基于DOM的XML文档到关系数据库的数据转换方法 基于关系数据库的XML存储技术 浅谈数据库记录与XML数据的转换 论XML文档数据库数据之间的转换原理及转换对象 基于.NET平台的关系数据库转换 WebService在LDAP与关系数据库之间数据同步的研究 基于XSD模式的XML文档与关系数据库的转换 一种模仿XML的灵活的关系数据库设计 基于关系数据库的时态XML存取研究 运用XML实现异构数据库的数据转换 浅析Notes数据库与关系数据库的关系 关系数据库的设计与测试 基于架构的关系数据库与云端数据库比较分析 XML文档与数据库表信息互相转换的方法研究与实践 关系数据库与非关系数据库 浅析关系数据库、数据仓库与数据挖掘的关系 浅谈关系数据库的数据保护策略 关系数据库查询优化策略与研究 关系数据库二进制存储图像数据的研究与应用 常见问题解答 当前所在位置:,1994.
[2]陈志炜.一种基于语义的将关系数据转换为XML数据的方法[D].南京:东南大学硕士学位论文,2004.
[3]萨师煊,王珊.数据库系统概论[M].第三版.北京:高等教育出版社,2005.
中图分类号:TP311 文献标识码:A 文章编号:1009-2374(2011)07-0088-02
在信息技术与网络技术高速发展的今天,网络已经成为新一代操作平台。信息正全面地以互联网方式展开,互联网的信息传播,极大地加速了人类发展的进程。随着WEB技术的日益发展,WEB已经成为信息制造、、加工和处理的主要平台。XML技术已日益受到更为广泛的关注,已经在电子商务、电子数据交换、科学数据表示、数据建模与分析和搜索引擎等领域有着广泛的应用。随着XML应用技术的深入,将会有大量的XML文档出现,并且现在在网络上已经积累了大量的XML文档。本文主要就基于关系数据库的XML存储技术相关问题进行探讨。
一、XML与关系数据库结构上的差异
XML文档是半结构化的数据,是一个树模型,如果考虑到XML元素次序,则是一棵有序树模型,其数据结构是非结构化的,而关系数据库管理系统是采用二维表格作为存储数据的模型,表格由行和列组成,列被称作“字段”用于表示组成数据有效信息的属性,行则用于储存一条完整的数据记录。XML数据与关系表之间数据结构有很大的差异,具体来说,XML数据是有序的,而关系数据则是无序的,另外XML数据的模式往往经常变化,可是关系数据库的数据结构是固定不变的,XML数据可以无限层次嵌套,而关系数据则不能。虽然XML放松的类型限制和自描述性有利于数据之间的交换,但是却不利于数据存储。因此,XML的数据模型的半结构化、有序性与平坦、无序的关系模型之间存在固有的不匹配。另外遵循文档类型定义(DTD)或文档模式定义(XML SCHEMA)的XML文档也与遵循关系存储模式的关系数据在语法、结构以及约束等很多方面存在着固有的异构性,因此很难直接由XML数据产生关系模式。甚至即使多个XML文档实例都遵循同一个文档模式定义,它们也可能有不同的结构。可以看出,XML映射到关系数据库中存在固有的困难。映射时主要存在以下需要解决的问题:(1)如何利用可能有的XML文档模式(或类型)信息来采取各种不同的存储策略;(2)如何将XML文档无损地存入关系数据库;(3)如何从关系数据库中查询并重构XML信息。
二、基于关系数据库的存储策略
(一) 基于结构映射的策略
具体来说,基于结构的映射方法可以分为两个步骤来实现:
第一步:简化DTD并生成DTD图。因为XML DTD的元素是相当复杂的,需要对复杂的DTD进行简化。DTD的简化变换主要有以下三种方式:(1)平面化变换:将DTD内的层次嵌套关系打平,把嵌套的定义转换为非嵌套的定义;(2)简化变换:将连续的多个一元操作转换为一个一元操作;(3)聚集变换:将多个具有相同名称的子元素聚在一起,形成一个子元素。一个DTD图表示的是一个DTD的结构,图的结点表示DTD中的元素、属性或操作符,DTD中的元素在DTD图中只出现一次,属性和操作符在DTD图中出现的次数则与它们在DTD中出现的次数相同。
第二步:DTD图到关系模式的映射。从DTD图到关系模式的映射方法主要有:基本内联法、共享内联法和综合内联法。
首先,基本内联法。基本内联法的原则是在存储一个结点的时候,尽可能多地将这个元素的后代结点存储在一个表中。其次,共享内联法。共享内联法为以下三种DTD结点生成独立的关系:(1)DTD图中入度大于l或者等于0(根结点)的元素结点生成独立的关系;(2)DTD图中结点“幸”的孩子结点(将值集元素作为单独的关系保存);(3)互为递归的入度均为1的元素结点,其中之一生成独立的关系。而其余的结点都生成关系属性。共享内联法相对减少了XML查询转换为SOL语句的数目,但增加了每个SOL查询中的连接运算。再次,综合内联法。综合内联方法在处理入度大于1的结点上与共享内联方法不同,综合内联法将所有入度大于1的元素结点也内联进入父结点所生成的关系表中,但是带回路的结点以及结点“}”或“+”的直接后继结点除外,该方法减少了子结点与父结点的连接运算。
(二) 基于模型映射的策略
模型映射的方法是用一个固有的模式来存储XML文档。它用固定的关系模式来存放任何格式的XML数据,而不考虑XML文档的模式(DTD或SCHEMA),其实质是存储XML文档本身的结构信息。
第一,Edge方法。Edge方法圆的存储策略是把要存入的XML文档看做图形结构,每个图的边界都表示为图中的元组,把XML文档图中的所有边都存入到关系表Edge中,用表Edge(source,ordinal,target,label,flag,value)存储XML文档图中的边,其中的source字段和target字段分别用来存储边的源结点和目标结点的标识符;label域为目标结点的类型;flag用来区分目标结点;target是一个元素结点还是一个文本结点,如果该目标结点是文本结点,则文本值存储于value域中;ordinal字段指出target结点在source结点的所有孩子中的位置。由于Edge方法将所有XML数据都用Edge表存放,操作方法简单。但缺点是在Edge方法中每条边都是单独管理的,所以在用户进行查询操作时就需在大量的表上进行连接操作以形成路径。如果要判断祖先/后代关系就需要从祖先到后代(或与之相反)遍历所有的边,造成代价非常昂贵。
第二,XRel方法。XRel方法为了存储XML文档的所有信息,将XML文档树分解为一个个路径表达式,对于树中每一个结点,都将从根结点到其自身的路径存储。而在树中有可能有多个结点的路径是一样的,所以单个的简单路径表达式并不能够存储整棵XML文档树的信息。XRel模式是通过区间编码[start,end]来反映XML文档的模型结构,并根据结点类型来划分,分为元素结点表、属性结点表和文本结点表,同时将所有路径进行存储。因此,XRel模式由四个关系表组成如图1所示:
在Path表中,存储所有的不重复的路径,其中,PathID为标记路径的标识,pathexp域存储标记路径。为了实现路径表达式的字符串匹配操作,防止意外的结果出现,将标记路径中的“/”替换为“#/”进行存储。对于Element表、Attribute表和Text表,Attribute表和Text表中的value字段存储的分别是属性结点的值和文本结点的值。对于每一个路径表达式,查询过程都可以分为两部:第一步,利用字符串的匹配操作,能够快速的查找出与路径表达式相匹配的所有标记路径的标识;第二步,利用这些路径标识,能够快速的查找出隶属于这些路径终端的值。
XRel存储模式的特点可以总结如下:(1)用简单路径表达式和结点的区间编码(start,end)存储XML文档的所有信息;(2)分别为每一种结点类型创建一个对应的关系表;(3)用一个Path表把文档中所有不重复的路径都提取出来,有效地降低了数据库的存储容量。
第三,XParent方法。XParent模式和XRel模式一样,将文本数据路径独立出来,共包含四个关系表,如图2所示:
其中,表LabelPath中的pathexp字段用来存储所有不重复的标签路径,即模式路径。每一个标签路径被赋予一个标识符pathlD,length为标记路径的长度。Parent表存储的是双亲/孩子关系,pid和cid分别表示一个边的起始结点与结尾结点。did为XML文档中元素结点的标识,它也可以作为以该结点为终端点的数据路径的标识。
中图分类号:TP311.13文献标识码:A 文章编号:1009-3044(2008)26-1615-02
Relational Databases Conversion Based on .NET Platform
HU Shu-gang
(Dongying Vocational College, Dongying 257091, China)
Abstract: Combining the advantages of XML technology,.NET platform provides the feasibility of data conversion between relational databases. One example demonstrated the SQL Server database can be converted to an XML file, and then the XML file can be converted to other database. It has realized the data conversion between relational databases.
Key words: database conversion; .NET; XML
1 引言
网络资源中通常包含多种格式和管理系统的关系数据库,为了实现资源的共建共享,需要完成多种数据库之间的数据转换。不同的开发商采用分布式对象技术和各自的思路来实现数据库的互操作,如OMG的CORBA技术、Sun公司的EJB/RMI和微软的.NET技术等。
2 数据库转换思路
.NET是微软公司开发的下一代基于互联网平台的软件开发构想,它提供了一个全新的编程模型。该平台建立在XML和因特网标准协议的基础上,具有平立性和语言独立性,它包含了强大数据库操控能力的。编程模型由一系列的数据库相关类和接口组成,运用技术,应用程序既能访问关系型数据库中的数据,又能访问层次化的XML数据[1]。XML是W3C的通用标记语言SGML的一个简化子集。它是一种存储和传输数据的行业标准格式,普遍贯穿于.NET平台,具有简单性、可扩展性、互操作性和开放性等特点,其本质特点是数据独立,它存储的数据全部是文本,而且使用标记标示,利于网络传输。XML模式提供了很强的数据类型识别功能,可正确处理各种数据类型。XML和.NET的结合为解决数据库互操作问题奠定了基础[2]。通过以上分析,可以在.NET平台上,以XML为中间数据源完成多种关系数据库之间的转换[3]。演示示例用的操作系统是Windows XP Professional,开发平台为Visual Studio 2005,示例用C#语言编写。
2.1 数据库的导入[4]
为了导入SQLServe数据库,先用Connection对象连接数据库,演示示例中用SqlConnection连接了服务器METC\SQLEXPRESS的数据库books.mdf。将数据库读入DataSet。DataSet对象主要存放数据库的DataTable的对象,可以使用DataAdapter建立DataSet对象。尽管DataSet可以存储数据,但仍需要使用DataAdapter对象来创建和初始化各种表,还需要使用Fill()方法来把查询结果移入到DataSet中去,再将数据写入到XML文件。关键源代码如下。
String strTableName = "books";
String strConnection = "server=METC\\SQLEXPRESS;database=books;uid=sa;pwd=;trusted_connection=yes ";
String strSql = "select * from " + strTableName;
SqlConnection objConn = new SqlConnection(strConnection);
SqlDataAdapter objAdapter = new SqlDataAdapter(strSql, objConn);
DataSet objDSet = new DataSet();
objAdapter.Fill(objDSet, "temp");
XmlTextWriter objXmlWriter;
String strtemp1 = Request.PhysicalApplicationPath;
String strpath = strtemp1 + "newxml.xml";
objXmlWriter = new XmlTextWriter(strpath, null);
objXmlWriter.WriteStartDocument();
objXmlWriter.WriteStartElement("xml");
for (int i = 0; i < objDSet.Tables["temp"].Rows.Count; i++)
{
objXmlWriter.WriteStartElement("menu");
for (int j = 0; j < objDSet.Tables["temp"].Columns.Count; j++)
{
objXmlWriter.WriteAttributeString(objDSet.Tables["temp"].Columns[j].ColumnName, objDSet.Tables["temp"].Rows[i][j].ToString());
}
objXmlWriter.WriteEndElement();
}
objXmlWriter.WriteEndElement();
objXmlWriter.WriteEndDocument();
objXmlWriter.Close();
2.2 数据的导出[5-6]
以下演示示例是将以上创建的“newxml.xml”文件转换为Access数据库demo.mdb中的一个表“newxml”。首先建立与目标数据库的连接,也就是通过OLE DB Provider提供的OleDBConnection对象建立与Access数据库demo.mdb的连接。当然,该示例也可通过OLE DB Provider提供的其他连接数据库的对象来连接Oracle、Sybase或DB2这样的数据库以及Excel表格。以下关键源代码部分省略了命名空间的引用、系统自生成代码和对数据库中表是否建立的检查部分。
private void TableCheck()
{ OleDbConnection oledbConn = new OleDbConnection(textBoxOleDb.Text);
Try
{ oledbConn.Open();
DataTable schemaTable = oledbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null, null, tableName, "TABLE"});
String sqlCmd = "";
if(schemaTable.Rows.Count < 1)
{sqlCmd = "create table " + tableName + " (";
for(int i = 0;i < dataTableXml.Columns.Count;i++)
{sqlCmd = sqlCmd + dataTableXml.Columns[i].ColumnName.ToString() + " char(100),";}
sqlCmd= sqlCmd .Substring(0,sqlCmd.Length - 1) + ");";
OleDbCommand oledbCmd = new OleDbCommand(sqlCmd,oledbConn);
oledbCmd.ExecuteNonQuery();}
}
catch
{Message.Text = "数据库不存在或无法创建表.";}
finally
{oledbConn.Close();}
}
private void TableInsert()
{ OleDbConnection oledbConn = new OleDbConnection(textBoxOleDb.Text);
try
{ oledbConn.Open();
foreach(DataRow dr in dataTableXml.Rows)
{ string sqlCmd = "insert into [" + tableName + "] (";
for(int i = 0;i < dataTableXml.Columns.Count;i++)
{sqlCmd = sqlCmd + dataTableXml.Columns[i].ColumnName.ToString() + ",";}
sqlCmd= sqlCmd.Substring(0,sqlCmd.Length - 1) + ") values (";
for(int x = 0;x < dataTableXml.Columns.Count;x++)
{sqlCmd = sqlCmd + "'" + dr[x].ToString().Replace("'","''") + "',";}
sqlCmd = sqlCmd.Substring(0,sqlCmd.Length - 1) + ");";
OleDbCommand oledbCmd = new OleDbCommand(sqlCmd,oledbConn);
oledbCmd.ExecuteNonQuery();
}
}
}
3 结束语
通过以上实例,演示了以XML为中间转换数据源,在.NET平台上方便地完成异构关系数据库之间的数据转换和共享。基于.NET平台,充分利用XML技术的优势,来解决异构数据库集成的问题,能够给用户提供一个透明的全局数据库,方便用户的使用,还使得系统在可扩展性、安全性、可维护性等方面有所提高。
参考文献:
[1] Lair R, Lefbvre 开发人员手册[M].张俊,译.北京:电子工业出版社,2002:38-39,169-193,246-488.
[2] Bray T, Paoli J, Sperberg-McQueen C M, et al.XML标准[EB/OL].[2006-08-16]./TR/2006/REC-xml-20060816/.
[3] 石玉晶,牛存良,马新娜.使用XML进行异构数据库间数据传送[J].现代计算机,2003,19(11):79-80.
数据库查询操作是数据库操作的核心操作,对数据的查询效率及处理速度已成为衡量数据库性能的一个重要指标。数据库查询技术也是学生对《数据库原理与应用》这门课程所必须掌握的知识和技能,数据库查询技术的精通也为以后课程的学习(如:C#.NET程序设计)中的数据库应用程序的设计打下良好的基础。
为了优化数据库的性能,简单、有效的方法就是优化查询。
1优化原理和实质
数据查询处理的代价通常取决于对磁盘的访问,因为磁盘比内存的访问速度要慢。对于一个给定的查询,有许多可能的处理策略,复杂查询更是如此[1]。查询优化的实质是在结果正确的前提下,找出与已有表达式等价,但查询效率更高的表达式。
2在教学中要注重的几种典型的优化方法
2.1建立视图
视图可简化用户操作数据的方式,使用户能着重于所感兴趣的特定数据和所负责的特定任务。如果该视图数据规模小于定义的基本表,则基于视图的查询比原查询的速度会快得多。
例:要查询每门课程成绩最高的学生的学号
SELECT 学号,课程号,成绩
FROM 成绩表 A
WHERE 成绩=(SELECT MAX(成绩)
FROM 成绩表B
WHERE A..课程号=B.课程号)
语句缺点:这属嵌套查询,子查询的结果集将作为外层查询的条件,查询效率不高。
解决方案:可先建立视图,求得每门课程的最高分,再与成绩表中比较,获取与视图中最高分数据相等的记录,这就减少了内层连接的数据量,从而提高了检索速度。
用SQL语句优化的步骤为:
首先,创建视图
GREATE VIEW V_max_cnoscore AS
SELECT 课程号,Max(成绩) AS 最高分数
FROM 成绩表 GROUP BY 课程号
其次,利用视图检索数据
SELECT 学号,A.课程号,A.成绩
FROM 成绩表A,V_max_cnoscore B
WHERE A.成绩=B.最高分数 AND A.课程号=B.课程号
2.2查询条件Where子句的优化
2.2.1合理设置WHERE条件的先后顺序。多数数据库都是按从左到右的顺序处理条件,把能过滤更多数据的条件放在前面,过滤少的放后面,便可提高检索速度。
例:SELECT * FROM student
WHERE ssex=’女’ --条件1过滤的数据较少
AND sdept=’计算机系’ --条件2过滤数据比条件1多
上面的SQL就不符合上述原则,可改为:
SELECT * FROM student
WHERE sdept=’计算机系’
AND ssex=’女’
对同一表格进行多个选择运算,选择条件的排序对性能有较大影响,不仅影响索引的选取,而且关系到临时表的大小[2]。因此,要提高查询速度,可将较严格的条件写在前面,较弱的放在后面。
2.2.2避免使用“< >”或“NOT”操作符。“< >”或“NOT”均属于排斥性操作符,不是包括性操作符,这会使系统在搜索数据时无法使用索引,只能直接搜索表中的数据,例:
(1)SELECT 学号 FROM 成绩表 WHERE 成绩< >80
(2)SELECT 学号 FROM 成绩表 WHERE NOT(成绩80)
(3)SELECT 学号 FROM 成绩表 WHERE成绩< 80 OR 成绩>80
比较以上三条语句,可知第3条可使用索引查询,它的查询速度最快。
2.2.3恰当运用“OR扩展”技术。该技术是把在Where子句中带有OR的查询转换成包含多个UNION ALL的查询。
例:查询计算机系县年龄不大于20岁的学生。
常规的SQL语句:
SELECT 学号,姓名 FROM 学生表 WHERE 系名=’计算机系’ OR 年龄
假定表中“系名”和“年龄”两个字段上创建了索引,以上的查询可能不会使查询优化器使用索引,从而查询效率降低,可改进为:
SELECT 学号,姓名 FROM 学生表 WHERE 系名='计算机系'
UNION ALL SELECT 学号,姓名 FROM 学生表 WHERE 年龄
2.2.4合理减少LIKE条件的使用。在SQL查询中,LIKE条件使用的神奇之处在于其与通配符匹配所提供的模糊查询功能。但在字符串的比较中,有时大量字符的逐个比较,也会大大降低查找效率。
例:图书按26个英文字母分为26类,查找所有属于‘A’类图书的销售金额。
SELECT 图书类号, SUM (数量*单价) FROM 销售
WHERE 图书类号LIKE′A%′GROUP BY图书类号
优化为精确查询:
SELECT 图书类号,SUM(数量*单价) FROM销售
WHERE 图书类号>=′A′AND图书类号
GROUP BY图书类号
2.3正确使用子查询“展平”技术子查询“展平”技术就是指将子查询转变为半连接,连接或者反连接,从而将查询优化。
例:找出成绩大于等于90分的学生的姓名。
SELECT 姓名 FROM 学生表 WHERE 学号IN
(SELECT 学号FROM 成绩表WHERE 成绩>=90)
语句缺点:需要搜索学生表的每一行,来查找所有满足子查询条件的记录。
解决方案:将学生表作为连接的内表,查询将作为通常的连接来执行。
优化后的SQL语句:
SELECT 姓名FROM (SELECT 学号 FROM 成绩表
WHERE成绩>=90) A,学生表 B WHERE A.学号=B.学号
2.4善于使用存储过程
存储过程是SQL语句和可选控制流语句的预编译集合,一个名称存储并作为一个单元处理。善于使用存储过程,将使SQL变得更加灵活和高效。
例:查询某个学生某门课程的考试成绩,列出学生的姓名、课程名及成绩
CREATE PROC pro_student_degree
@stu_name char(12),@course_name char(18) AS
SELECT sname,cname,degree
FROM student A INNER JOIN sc B ON A.sno=B.省略o=o
WHERE sname=@stu_name AND cname=@course_name
以上是一个带有两个输入参数的简单存储过程,只需执行一个简单的SQL语句――“EXEC pro_student_degree‘刘娜’,’数据库原理’”就可完成查询。
编写性能优化的SQL语句是提高数据库系统的重要因素,随着数据库管理系统中数据量的增大,如何提高查询速度与效率也是计算机软件开发的一个时代要求。实现优化查询的方法很多,在使用中,要根据具体情况权衡利弊,使数据库查询性能最优。在学生的教学中要注重培养学生的动手能力,使学生养成编写优化的SQL语句的习惯。
参考文献:
[1]王振辉,吴广茂.SQL查询语句优化研究[J].计算机应用,2005,(12):208.
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)16-21188-02
On Optimization Method for Query in Relational Database
YIN Mei-gui
(Heyuan Polytechnic, Heyuan 517000, China)
Abstract: In the database application MIS, query process is the most frequent. Whether query process is good or bad will directly affect the performance of database application system. Therefore, query in database should be optimized. This article suggests some methods of how to realize the optimization by making use of the technology of query in relational database.
Key words: RDBMS; query optimization; methods
1 引言
数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)以及联机分析处理(OLAP)是企业、银行、政府部分最为重要的计算机应用之一。从大多数数据库系统的应用实例来看,查询操作是所有数据库操作中所占据比重最大的操作。当数据库系统积累到一定程度(如税务系统的账户达到上百万甚至上千万条记录),全表扫描一次往往需要数十分钟,甚至数小时。如果采用比全表扫描更好的查询策略,往往能降低查询时间。如何设计数据库,采取什么样的查询方法,提高查询效率,这就是查询优化要解决的问题。
2 合理使用索引
索引是数据库一个常用的数据库对象,优化查询的重要方法是建立索引,也是数据库同时预先将数据分类导入到多表格的方式。在关系数据库的表上建立合适的索引,可以提高数据库数据查询的速度,改善数据库的性能。除了集簇索引,每一索引的使用都以磁盘容量作为代价,当使用一个索引,数据库引擎必须执行两个数据读取,这两个数据读取是数据库记录所必需的,第一个数据被读取到实际数据指针的索引,第二个数据被读入到指针指定的位置。因此创建索引时必须要与实际应用系统的查询需求密切结合,才能达到优化查询的目的。
2.1 建索引的必要性
判断索引必要性的最终标准是判断这些索引是否对数据库的工作效率有所帮助。在实际的应用过程中,应该为优化工作做以下几点准备:
首先观察数据库应用程序中所有的SQL语句,并从中统计出常用且可能对性能有影响的部分语句,然后分析、归纳出作为Where条件子句的字段及其各种组合方式;在这一基础上可以初步判断出哪些表的哪些字段应该建立索引。其次,必须了解应用程序,要了解哪些表是数据操作频繁的表;哪些表经常与其他表进行连接;哪些表中的数据量可能很大;数据量大的表中各个字段的数据分布情况如何等等。对于满足上述条件的这些表,必须重点关注。因为建立在这些表上的索引,将对SQL语句的性能产生举足轻重的影响。
2.2 使用索引的规则
索引的使用要恰到好处,其使用原则如下:
(1)在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。
(2)在主键索引方面,不应有超过25%列成为主键,而普通列很少,这会浪费索引空间。
(3)在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。
(4)在频繁进行排序或分组(即进行group by 或 order by 操作)的属性上建立索引。
(5)在作为最小值等聚集函数的属性上考虑建立索引。
索引的建立、维护和使用都需要付出代价,应合理使用索引。错误的索引不会使数据库性能得到预期的提高,往往还会产生一些负面影响。
3 SQL语句优化
要对查询进行优化,一个简单直接有效的方法是对SQL语句进行调整,减少计算量,提高查询的效率。以下是一些书写SQL的一些经验。
3.1 避免相关子查询
查询嵌套层数每增加一层,查询的效率成几何级的降低。要想提高嵌套语句的执行效率,则应减少嵌套语句的嵌套的层次。所以在实际应用中,若可以用连接查询代替的子查询,则用连接查询实现。
例:查询选修了“3-105”号课程的学生基本信息
用子查询的方法如下所示:
SELECT * FROM student WHERE SNO IN (SELECT sno FROM sc WHERE cno=’3-105’)
改写成连接查询如下:
SELECT student.* FROM student,sc WHERE stuent.sno=sc.sno AND cno=’3-105’
3.2 用UNION替换OR
合理建立索引有助于提高查询效率。有时尽管在所有的检索列上都有索引,但有些形式SELECT查询语句可能不会促使查询优化器使用索引,从而降低查询效率。如果对查询语句进行改写,用UNION替换OR,可以强迫优化器按索引路径处理。如:假定分别在“职工”关系中的“年龄”和“月工资”字段上创建了索引,对以下SQL语句
SELECT 姓名,年龄,月工资 FROM 职工 WHERE 年龄>45 OR 月工资
可替换为:
SELECT 姓名,年龄,月工资 FROM 职工 WHERE 年龄>45
UNION
SELECT 姓名,年龄,月工资 FROM 职工 WHERE月工资
3.3 使用临时表优化查询
在涉及相关查询的某些情形中,构造临时关系可以提高查询效率。如:查询每个部门中月工资最高的“职工号”
SELECT 职工号 FROM 职工 AS e1 WHERE 月工资=(SELECT MAX(月工资)FROM 职工 AS e2 WHERE e1.部门号=e2.部门号)
以上的查询对于外层的职工关系e1中的每一个元组,都要对内层的整个职工关系e2进行检索,因此查询效率不高。可以构建临时关系提高查询效率。
SELECT MAX(月工资) AS 最高工资,部门号 INTO temp FROM职工 GROUP BY 部门号
SELECT 职工号 FROM 职工,temp WHERE 月工资=最高工资 AND 职工.部门号=temp.部门号
3.4 避免在索引列上使用计算
WHERE子句中,如果索引列是函数的一部分。优化器不使用索引而使用全表扫描。如
SELECT * FROM职工 WHERE 月工资*12>20000
可改为:
SELECT * FROM 职工 WHERE 月工资>20000/12
3.5 谓词的等价变换
由于执行引擎对各种谓词的处理方法不同,把逻辑表达式重写成等价的且效率较高的表达式是提高效率的有效方法,同时也是切实可行的。针对执行引擎对各种谓词执行效率的不同,总结如下谓词转换规则:
1)将BETWEEN转化为AND 连接的谓词
把BETWEEN...AND...形式改写为用AND连接的两个谓词,效率往往
有一定的提高。
例如:月工资 BETWEEN 1000 AND 2000 改为: 月工资>=1000 AND 月工资
2)避免使用In语句
当查询语句中有In关键词时,优化器采用OR并列条件。
如:职工号IN (‘1001’,’2001’) 改为:职工号=’1001’ OR 职工号=’2001’
4 结束语
查询处理是数据管理系统的核心,而查询优化技术是查询处理的关键技术。查询优化就要抓住关键问题。在数据库的开发和维护过程中,查询优化设计可以提高系统的性能,尤其对于数据量大的数据库系统最为重要。本文提到一些优化方法是根据自己的经验,并查阅了大量的资料。在具体的使用时候要根据实际情况,才能合理制定出良好的优化方法,实现快速、高效的数据查询。
参考文献:
一、关系数据库技术的功能
关系数据库技术的主要作用是为网络设计提供辅助功能,在关系数据库中包含各种各样网络设计所需的数据和信息,合理应用关系数据库技术可网络设计提供便利条件。促使网络设计更加完善,比如:在关系数据输入过程中,要先把对数据的赋值进行全面系统的分类处理,然后对这些数据进行整合和重组,促使网络设计能获得更加全面的数据参数和参考信息,促使网络设计效果和服务质量不断提升。
二、网络设计对关系数据库技术的需求分析
在计算机网络技术具有很强的开放性,安全性容易受到挑战,大大增加了管理的难度。为完整网络设计对安全性和性能的需求,就必须切实满足如下要求:高性能。网络设计需要应用到支持线速交换的骨干交换设备,才能确保数据交换的流畅性,在关系数据库中几乎包含网络设计所需的全部信息,合理应用关系数据库技术可为网络设计提供数据支持和理论指导。高质量。网络设计需要满足业务服务质量,应用业务数据通常情况下,都包含多种多样的形式,关键业务数据流在网络流量高峰期内,所需的响应时间会有响应的延长。因此,在具体设计过程中,为最大限度上满足网络设计的服务质量,高性能网络必须具备关系数据库的相关功能。网络的安全性。网络病毒、黑客等是目前影响计算机网络安全的主要因素。因此,网络设计中需要采取有针对性的手段和技术,禁止病毒的传播和黑客的攻击。
三、网络设计中关系数据库技术的具体应用
(一)应用思路
为满足计算机网络对高性能、高质量、高安全性的需求,在具体设计过程中,对网络的控制需要以设备分层结构的总线型为主要设计依据,在满足高性能、高质量、高安全性的基础上,提升网络技术应用范围的灵活性和有效性。关系数据库的基础就是数据的有效性,因此,在应用关系数据库技术时,需要重复结合对象技术,有针对的实现计算机网络对数据集的功能。此外,针对关系数据库存在不合理的产品,可在综合事务处理中进行及时纠正处理,全面体会网络数据系统的开放性和可扩展性。在关系数据库中结构比较清晰,简洁,配置协议的录入也可以轻松实现,并且协议中的数量,对网络涉及的难易程度并不会造成较大影响,大大提升了网络设计的可操作。关系数据库访问对象和网络设计形式之间具有非常密切的联系,因此,在进行计算机网络访问系统设计过程中,要充分结合关系数据库,可通过C语言编程的使用来完成访问工作。
(二)存储功能的实现
在网络数据处理中,XML(可扩展标记语言)是进行数据转换的主要标准,通过描述数据自身的意义来实现数据实体间复杂嵌套的关系连接。因此存储功能的实现主要包括以下两个方面:1.结构映射XML中文件类型定义比较复杂,需要先进行简化处理,生成文件类型定义图,具有的简化流程为:先进行层次嵌套关系的平面优化转换处理,将其转换为非嵌套定义;然后再对多个一元操作进行简化转换;最后把聚集转换为多个子元素,通过整合和归类的作用,构成一个子元素。在具体简化过程中,要完成文件类型定义图像关系模式的映射,通过共享内联法,为文件类型定义提供达先对独立的关系。再通过综合内联法,在父节点形成的关系表中,除直接后继节点之外,内联和入度都超过1的元素节点。2.模型映射XML文档在存储过程中,常用的方法有两种,一种是Edge法,主要过程为把XML文档当做图形结构进行处理,并在相应的关系表中,完成边界存储,而目标节点的区分通过flag来实现。Source主要应用在资源节点存储中,target则主要应用目标节点标识符的储存中。
(三)转换功能的实现
2客户关系数据库相似重复记录清洗算法
经研究大量的企业客户关系数据库,发现客户关系数据表的属性个数均不多,一般为10个左右,且客户信息基本包含了姓名、性别、身份证号、住址等属性.对于住址等属性由于描述方式不一或采用简写等方面的原因,造成同一个人在同一张表中出现了多条住址不一样的记录.然而如果两条或多条记录相似重复,其姓名、性别和身份证号等属性必定相同,所以对于客户关系数据表判重前的排序使用“姓名+性别+身份证号”的多关键字排序方式.经排序,相似和重复记录已位于邻近的区间内.在排序的基础上,对相邻数据记录进行比对,如构成相似重复记录,则进行合并,合并后删除原来的两条记录,将新合并的记录插入数据表,然后用新合并的记录和之后的记录再进行比对,以此类推.记录的排序、合并和删除实现起来均非常简单,所以清洗中最麻烦的一环便是数据记录的比对即相邻记录相似重复的判定.此外,客户关系数据库中常出现许多无用的数据,即“废卡”信息,为了减少这些“脏数据”占用系统资源,也为了提高相似重复记录的清洗速度,在相似重复记录清洗前有必要对这些数据先行清洗.由于客户关系数据库都会记录卡片使用情况,如用卡时间等信息,可以根据这些信息对所有的记录进行扫描,导出无用的数据,由人工方式判断是否予以删除.
关键词:关系数据库 关键词查询 数据库索引
1 系统总体设计
人们在求解一个复杂问题时,通常采用的是逐步分解、分而治之的方法。也就是把一个大问题分解成若干个比较容易求解的小问题,然后分别求解。设计一个复杂的系统时,往往也是把整个系统划分为若干个功能较为单一的功能模块,然后分别予以设计、实现,这就是模块化设计。本系统也采用这种模块化设计方式。
■
图1 面向关系数据库关键字查询系统框图
2 数据库设计
本系统为面向关系数据库的关键字查询系统,在实验中本文选取了IMDB 数据集,为了进行实验,将数据集整理为以下七个表数据结构。
实验数据集(电影信息数据库):
create table Actor( //演员表
actorname varchar(50) Primary Key ; //演员姓名key
sex varchar(2); //性别
mvname varchar(50); //出演电影或电视剧名
mvyear varchar(10); //电影上映时间
mvactorname varchar(10); //电影中人物姓名
position varchar(20); //电影中人物排名
made varchar(10); //TV 或是Video
setname varchar(50); //出演电视剧集名
episode varchar(10); //出演电视剧集
date varchar(10); //电视剧播出日期
classification varchar(30); //(achieve football)
)
creat table Consume( //设计师
consumename varchar(20) Primary Key; //设计师姓名key
mvname varchar(20); //电影名或电视剧名
mvyear varchar(10); //上映日期
setname varchar(20); //电视剧集名
episode varchar(10); //电视剧集
productiondate varchar(10); //电视剧播放日期
classification varchar(30); //(as M...)
made varchar(10); ///(V/TV/uncredited)
)
creat table Director( //导演信息
directorname varchar(20) Primary Key; //导演姓名key
mvname varchar(20); //电影或电视剧名
mvyear varchar(10); //上映日期
setname varchar(20); //电视剧集名
episode varchar(20); //电视剧集
made varchar(10); //(V/TV/VG)
explantaion varchar(30); //(as M...)
)
creat table Business( //投资
mvname varchar(20) Primary Key; //电影名key
productiondate varchar(20); //拍摄日期
company varchar(50); //出品公司
studiodate varchar(50); //上映日期
masterpiece varchar(1000);///OW
budget varchar(20); //预算
ad varchar(50); ///AD
general_revenue varchar(20); //收入
wg varchar(50); //WG
)
editorname varchar(20) Primary Key; //编辑名
mvname varchar(20); //电影或电视剧名key
mvyear varchar(10); //上映日期
made varchar(10); //(V/TV/video)
setname varchar(20); //电视剧集名key
episode varchar(20); //电视剧集key
explantaion varchar(30); //(as M...)
)
creat table Color { //颜色信息
mvname varchar(20); //电影或电视剧名key
mvyear varchar(10); //上映日期
setname varchar(20); //电视剧集名key
episode varchar(20); //电视剧集key
color varchar(20); //颜色分类color或black and white
explantaion varchar(10); //颜色分类之后的()中有(HD)等,(HD)是高清
Primary Key(mvname,setname,episode);
}
creat table Keyword( //关键词
mvname varchar(20); //电影或电视剧名key
mvyear varchar(10); //上映日期
setname varchar(20); //电视剧集名key
episode varchar(10); //电视剧集key
keyword varchar(50); //关键词
Primary Key(mvname,setname,episode);
)
3 数据库索引设计
由于关系型数据库对于文本属性上全文索引的支持,所以在文本属性可以直接利用数据库中的全文索引。对于给定的关键字k,全文索引能检索出查询关键字所在位置。
对于数据库中的表属性,构建索引的方式比较简单,依赖于DBMS的IR索引。对于数据库中具有文本属性的列,在该列上建立全文索引。在进行关键字查询时,对于给定的关键字,通过数据库的全文索引,会返回包含该关键字的元组集合。
在进行关键字查询的时候,对于用户给定查询关键字,系统首先要对给定的关键字进行定位,确定关键字所匹配的信息是模式项还是数值项。
例如,关键字{“Color”“Director”}的索引结构如表1所示。
表1 关键字{“Color”“Director”}的索引结构
■
4 关键字检索设计
在搜索引擎行业,所谓关键字,就是用户在使用搜索引擎时输入的、能够最大程度概括用户所要查找的信息内容的字或者词,是信息的概括化和集中化。关键字检索作为一种易于使用的检索方式,为大量普通用户所喜爱。本文从关键字个数角度介绍现有的关键字检索技术中最常见的单关键字查询和多关键字查询这两种关键字检索形式。
5 结果生成设计
在本文中,将查询结果定义为元组连接树。
元组连接树(Joined Tuple Tree)是给定一个数据库模式图GS,一个元组连接树T是一棵元组树。其中,T中的每一条边(ti,tj)(ti∈Ri,tj∈Rj)满足以下两个要求:
①(Ri,Rj)∈RS,
②ti∞tj∈Ri∞Rj。
同时这些元组连接树满足以下条件:
①完整性:用户提交的所有关键字均出现在元组连接树上;
②最小性:从元组连接树中移除任何元组后的元组连接树都不具有完整性。
6 结束语
通过分析相关检索系统的实现策略,设计了支持关键字检索的系统架构和核心构成组件,主要包括数据库索引、数据库模式图、关键字检索和结果生成。
参考文献:
随着计算机技术的发展,计算机应用系统的开发越来越多,需要大批掌握大型关系数据库的专业技术人员,培养和造就这样的专业人员已经成为时代的需求,是大学计算机教学中一个十分重要的方面。由于大型数据库在计算机应用系统开发中的重要地位和作用,突出抓好大型关系数据库的教学已经别无选择。同时,大型关系数据库是一门实践性很强的课程,学生在学习完数据库基础理论后,通过大型关系数据库的学习,可以深化数据库理论的理解,提高并培养综合运用知识、解决实际问题的能力。对学生科研能力、工程能力和创新能力的培养具有重要作用。因此,对这门课的教学模式值得进行认真的研究与探讨。
1大型关系数据库Oracle的教学现状
随着社会对大型应用系统开发要求的日益增多,大型数据库开发相关的人才需求也不断增加,比如:Oracle、SQL SERVER和DB2的数据库管理员等,特别是Oracle数据库管理员,在比较大型的网络应用中需求量更大。太原理工大学五年前就在选修课中开设了“大型关系数据库Oracle”。但是大型关系数据库Oracle技术要求高,实践性要求很强,加之学校存在教学管理、资金投入以及师资力量不足等诸多因素的困扰,使得这门课的教学质量很难尽如人意,存在较为严重的不足与缺陷,具体表现如下。
1.1没有合适的教材和合理的大纲
我校计算机系最初采用Oracle公司厂家提供的培训教材,其内容较多,分体系框架、PL/SQL指令、性能调整和备份与恢复等内容[1],而大学教学中该课程的学时有限,教学过程中很难做到面面俱到,要想让学生更进一步深入领会并形成应用能力存在一定困难。后来学校又采用了ORACLE的技术书籍进行教学,但是这些书籍基本侧重点各不相同,导致教学过程中内容不够全面,重点难点不易把握,教学效果也不十分理想,很难适应高校教学的需要,很难满足学生求知的欲望,更主要的是不能够适应社会的需求。
1.2重理论,轻实践
在这么几年的ORACLE教学摸索中,由于学校数据库服务器和网络条件的限制,更多地关注的是理论教学,许多交互性演示的例子也是用PPT展示,学生很少参与甚至不参与具体的操作过程,导致学生很少接触到解决实际问题的环节,给学生的感性认识不强。再加上配套的教学实验环节较少或根本没有,学生很难有动手机会,使理论与实践得不到衔接,影响了学生综合素质的提高。
1.3重技术,轻应用
即使在教学环境和条件具备情况下,有的教学过程也只是满足于让学生掌握知识点,至于这些知识点在实际开发中如何应用,知识点之间如何贯穿联系等相关综合性素质的培养,没有渗透到教学中,导致学生的知识停留在点多线短,缺乏联系的层面,不能形成较为系统综合的结构体系。比如触发器,很多人只知道它的定义,会编写,但是在一个项目中何时用、怎样用等内容,在教学中则很少涉及,使学生感觉所学的知识与实际应用存在较大的差距。
这些问题和不足已经引起一定程度上的关注和重视,我们学校在不断加大对大型关系数据库教学的改进力度的同时,积极组织编写适合高校教学的相关教材,逐步尝试加大教学实验环节的学时数,增加实训、项目模拟等项内容,给学生以更多实践的机会,提高其综合应用所学基础理论知识的意识和实际动手的能力,为造就更多学识丰厚、技术高超、学以致用的高素质人才,为不断满足时代和社会对数据库技术人才的需求,创造了一定的教育教学条件。
2教学模式的改进方法
针对目前存在的问题,进行大型关系数据库课程教学的改革尝试,我们认为应该注重把握好以下几个方面。
2.1精心挑选、把握精髓,选择较好的教材
Oracle数据库的厂家标准培训教材和相关的科技书籍不能拿来就用。首先必须根据大学教学大纲的培养目标要求,从中选取适合学生的内容。我们知道大型关系数据库课程要培养的是能够进行数据库设计、开发和维护的数据库管理员(DBA)[2]。一般情况下,数据库管理人员分为三类:软件开发型DBA,软件维护型DBA和系统设计型DBA。本科教育教学大纲要求培养的是兼顾前一、二类的高素质人才。所以,在教学教材内容的选取上,就要着眼于Oracle数据库的基本编程操作和基本管理能力的培养,而把数据库的系统架构和性能调整等内容放在次要的地位,指导帮助学有余力的学生自学,以丰富其知识积累。在基本编程操作教学过程中,要注重对数据库的数据操纵语句DCL、数据查询语句DQL和过程编程语句PL/SQL的把握,而对数据定义语句DDL等让学生了解即可。在基本管理教学过程中,限于教学课时的制约,可以适当倾向于用户管理、权限管理、基本对象管理等方面内容的学习,而将其他的技术管理内容作为学生的自学内容。这样可以使教学工作做到学有目标、富有实效,学生学习做到入门快、有兴趣、收益大。其次,要本着管用有效、突出重点的原则筛选教学内容,选择计算机应用系统实际开发中常用、多见的知识,组织开展教学,引导学生掌握精华和要害,使学生能够充分利用有限的时间,学到最具实用价值的知识和技术。
2.2把握理论和实验相结合这一教学过程中的关键点
大型关系数据库实践性很强,光讲理论和架构,学生不容易掌握,难以形成能力,所以应该强化实验。这门课的教学共有32个学时,我们现在把相关理论知识压缩在12学时内讲授完毕,用剩余的20个学时,让学生做24个实验,通过这些实验,引导学生掌握数据库对象管理、数据库编程基本操作、数据库安全管理、文件管理、表空间管理、备份管理、状态监测等方面的操作技能[3]。使学生能够兼具理论性和动手实践能力,有效地了解和掌握Oracle数据库系统操作和管理。
2.3注重知识点在工程开发实例中的综合运用
掌握了数据库的基本理论和基本操作技能后,如何在实践开发中应用所学知识,就应当成为我们教师和学生共同关注的问题[4]。因此,有必要在大型关系数据库Oracle的教学过程中,引入Oracle工程开发。在我校的ORACLE课程的内容中,我们以一个学生成绩管理系统为例,从系统的需求分析开始,介绍实体关系设计、系统逻辑结构设计、系统物理结构设计、数据库实施、系统存储过程设计、触发器设计、数据导出和初始化设计等,在全过程实例系统开发中,让学生体会数据库技术在项目开发中的应用,同时掌握各个知识点在实践中的综合运用。这部分作为学生了解的内容,课时为4学时左右,建议在有条件的学校,可以类设计一个大的课程设计题,要求学生模拟项目开发中数据库开发的全过程。我校教学实践证明,这样做的效果非常好,不但巩固了课堂教学知识,同时促使学生发挥主动性,掌握很多其他数据库课堂上没有来得及涉及的内容。
3总结与展望
设立大型关系数据库选修课的目的,就是要培养适应社会需求的具有实践能力和创新精神的数据库管理技术人才。在现有的教学资源条件下,如何有效地进行教学改革、完成教学目标、培养合格人才,已经成为该项课程教学的迫切任务。
对于教学内容和教学方法这两个教学中的关键点,我们提出如下的改进思路:精选教学内容、加强实验环节和注重工程实践。
大型关系数据库的教学对教师和学生提出了更高的要求,需要在教学实践中勤于探索,即时总结,不断改进,以明确的培养目标来选择教学内容,以具体的实际应用为教学导向,以真实的系统开发设计实践为重点[5],就能够在教学实践中取得好的教学效果,提高学生的理论与实践水平,培养学生的专业素养。只要我们真诚地为学生着想,为社会服务,就一定能够使大学教育教学工作受到学生的欢迎,得到社会的承认,不断提高我们的办学水平,为国家为社会培养更多更好的有用人才,服务社会主义和谐社会建设,推动中华民族的伟大复兴。
参考文献:
[1] 安志远. 数据库系统原理及应用实训教程[M]. 北京:中国水利水电出版社,2004.
[2] 罗琼. 数据库应用型课程的设置与实践[J]. 科技信息, 2009(15):36-37.
[3] 员亚利,高春玲,陈红梅. 计算机专业“大型数据库”课程教学研究与实践[J]. 计算机教育, 2008(12):3-4.
[4] 祝朝映. 任务驱动在计算机教学中的探索与实践[J]. 教职论坛,2003,(10):56-57.
[5] 向琳,左德承,罗丹彦,等. “计算机设计与实践”课程创新性实践教学探索[J]. 计算机教育,2007(3):16-18.
The Improvement of the Teaching Pattern of Large-scale Relational Database Oracle
QIANG Yan