毕业设计-数据库智能查询接口的实现论文.doc_第1页
毕业设计-数据库智能查询接口的实现论文.doc_第2页
毕业设计-数据库智能查询接口的实现论文.doc_第3页
毕业设计-数据库智能查询接口的实现论文.doc_第4页
毕业设计-数据库智能查询接口的实现论文.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库智能查询接口的实现录取分数查询摘 要本文深入研究了自然语言处理的基本知识和原理,把自然语言理解与数据库技术结合起来,利用visualc+6.0开发工具设计并实现一个数据库智能检索接口系统录取分数查询。据据库采用access,利用ado实现了数据的存取。关键词: 智能检索接口系统,自然语言处理,ado,vc+6.0目录摘 要2目录3第一章 前言51.1数据库自然语言界面51.2数据库自然语言界面的发展过程81.2.1早期系统(6070年代)81.2.2专用系统(7080年代)81.2.3通用系统(8090年代)91.3数据库自然语言界面的关键技术研究121.3.1领域知识提取处理121.3.2自然语言查询处理121.3.3自然语言查询中的知识处理131.3.4自然语言更新处理131.3.5受限自然语言的处理141.3.6对现存问题的解决141.4数据库自然语言界面研究展望151.5中文分词技术161.5.1中文切词 - 基本介绍161.5.2 中文切词 - 技术特点171.5.3中文切词 - 技术难点20第二章 数据库理论基础222.1数据库系统设计222.2 sql语言介绍242.2.1 sql基础242.2.2 sql语句25第三章 需求分析263.1 任务概述263.1.1建立一个数据库263.1.2语义理解263.1.3 语义抽取263.1.4语义输出263.2 系统需求263.2.1 microsoft sql server2000数据库273.2.2 mfc简述27第四章总体设计374.1系统模块分析374.2系统结构图384.3 成员变量39第五章 查询程序系统的实现405.1数据库操作类accountado405.1.1读数据库字段数据405.1.2保存数据库字段数据405.1.3打开数据库415.1.4打开表425.2同义词典输入435.3查询实现445.4切词475.4.1搜索字典475.4.2搜索原义词典485.5生成查询语言49第六章 结论526.1 关键技术526.2 软件测试526.3 总结52致谢53文献53附 件54第一章 前言随着数据库应用的广泛与深入的发展,人们对数据库应用系统的要求也越来越高,灵活、随意、自然的数据库智能查询需求日趋强烈。1.1数据库自然语言界面对计算机人机界面的研究是计算机领域永恒且无止境的前沿课 题。许多年来,人们一直在努力改善人机界面,使计算机易用易学。用自然语言作为人机接口是一种十分理想的界面,不但容易被用户使用,而且使用自然语言的输出结果也容易被用户理解。-数据库系统是最适合使用自然语言界面的软件系统。随着数据库应用及信息检索系统的广泛普及,越来越多的非专业用户需要一种易于掌握的界面去访问所需的信息。数据库自然语言界面(nlidb)显然最符合这类用户的要求。数据库自然语言界面是指允许用户用自然的语言对数据库的内容提出各种操作要求,然后由系统自动地将其转换为数据库的操作语言,从而在数据库中查询到正确的信息,并提供给用户。它沟通了现实世界与机器世界对信息的不同理解方式,是多学科交叉的产物,其中涉及数据库系统、自然语言处理、人工智能、人机界面等多方面的研究。许多年来,它作为智能界面的重要组成部分引起了人们的广泛兴趣,成为具有重要理论价值和巨大实用价值的研究领域。从广义上讲,数据库自然语言界面应当包括数据定义、数据更新和数据查询等功能,旨在为与数据库有关的各种操作提供一个易于使用的环境。从狭义上讲,数据库自然语言界面仅仅指自然语言查询界面,这主要是因为,一方面对普通用户而言,查询操作是使用最为频繁和最为重要的;另一方面,数据库自然语言界面的主要技术问题都集中在自然语言查询处理的过程中。-目前,数据库的用户界面主要有以下几种: 基于语法的形式查询语言,如sql; 基于表格的界面,如qbe、form; 基于图形的用户界面gui; 基于自然语言的界面nlidb。-形式查询语言对一般用户来说学习负担太重,不仅要熟悉大量的语法结构,而且要具备数据库的基本知识,如关系模式和关系运算等,这对非专业用户是很不适应的。表格界面虽不用掌握语法,但还是要了解数据库的结构。gui有其直观性的一面,但用户同样需要了解所要查询的对象。自然语言界面提供了用户直接以人类语言(而不是人工语言或机器语言)的方式向数据库系统发问,以获得所需的信息的方式。换句话说,用户可以直接以应用领域的概念而不是数据库的概念模式来访问,这意味着用户无需了解数据库内的表名、列名,而可以直接以用户熟悉的对象名称提问,从而大大减轻了用户的学习负担。它的优势具体表现在: 用户无需了解数据库的内部结构; 用户不再需要熟悉数据库本身的查询语言; 大大减轻了用户的培训负担。-国外早在70或80年代就开始了这方面的研究工作,并研制了若干数据库自然语言界面系统,典型的有intellect、planes、ladder、team、datatalker、teli等。-对数据库界面的研究在我国一直未引起足够的重视。因此,目前缺乏适合我国用户的数据库界面产品。开展中文数据库自然语言界面的研究,可填补这方面的空白,特别在今天,计算机汉语手写体及语音识别已初步达到实用阶段,汉语语言界面若与手写体、语音识别成龙配套,其前景将十分诱人。到那时,人机可以直接对话,相互交换信息将十分自然和方便。1.2数据库自然语言界面的发展过程-数据库自然语言界面是伴随着自然语言处理(nlp)的发展而发展的,其研究历史可追溯到60年代初。70年代和80年代在这方面进行了大量的研究工作,并研制了若干数据库自然语言界面原型系统和商用系统。其发展大致可分为三个时期。1.2.1早期系统(6070年代)-在60年代,自然语言处理技术有了初步发展,机器翻译成为这一时期nlp的主要应用结果。同时,为了探索新的nlp方法,一些研究人工智能的学者开发了一批应用软件,其中最典型的代表是1963年由b.green建立的baseball系统,它用于检索美国一年内各球队比赛的时间、地点及比赛成绩等,可以说是最早的nlidb系统。该系统功能十分有限,用户只能输入一个简单句,不支持与、或、非和比较操作。1.2.2专用系统(7080年代)-70年代,自然语言处理取得长足的进步,在句法、语义分析中提出了许多知识表示和处理模型,如扩充转移网络、格语法、语义网络语法、概念从属理论等。由于技术上的进步,在这个时期研制出了一些很有名的系统。尽管这些系统还局限在某个领域内,属于专用系统,但其自然语言的处理能力已大为提高。-lunar系统是这一时期的典型代表,它对以后的自然语言界面的研制产生了许多影响。-ladder是产生于70年代后期的一个重要系统。其主要目标是使决策者可以直接使用大型数据库,而且可以使界面方便地配置到不同的dbms之上。-planes是70年代后期的另一个重要系统。它在技术上没有什么特别之处,其语法分析采用atn,语义处理采用上下文寄存器(contextregisters)与概念格框架(conceptcaseframe)。planes的主要特点是其注重系统的自然性,提出了一系列很重要的系统目标。-比如,在输入方面,系统应可以接受语法成分很复杂的输入,以及处理代词指代和语句省略问题,并能接受一些不合英语语法的请求;在输出方面,应给用户更自然、更直观的显示;系统应具有容错能力,并给出更改建议;同时还提到了系统的可扩展性,即向新的数据库和应用领域扩展的能力。planes虽未实现它所提出的所有目标,但它们确实是很重要的建议,是后续系统的主要实践内容。1.2.3通用系统(8090年代)-80年代是nlidb研究最为活跃的时期,其研究重点放在了系统的可移植性上,即通用系统的研究。因为用大量精力所开发的一个系统只能适用某一类应用,这显然不令人满意。team是这方面的典型代表。-team系统研制的突出目标是自然语言界面的可移植性,即界面可以在不同领域之间或不同数据库模式之间方便移植。team解决可移植性的方法是将与领域有关的知识作为可分离的部分从外部获取,通过方便的菜单系统从数据库专业人员那里获取领域内的知识,在自然语言处理过程中使用这些知识,从而理解一般用户提出的有关该领域的查询。-ask系统通过支持自学习能力来满足系统的可移植性要求。该系统允许用户向系统提供新的词汇和新的概念。-可移植性系统的产生使系统具有了一定的通用性。商业系统在这一时期大量涌现。较有名的系统有intellect、teli、datatalker。-在轰轰烈烈的研究中,一些学者过分乐观地认为数据库自然语言界面的应用会持续增加,广泛应用的时代即将到来。但不幸的是,80年代末及90年代初,图形用户界面技术的巨大进步极大地冲击了自然语言界面的研究。从这些年来有关nlidb方面的论文数量急剧减少中就可以明显看到这一点。-进入90年代,尽管对nlidb的研究失去了往日的火热,但依然有一些研究工作在扎实地进行着。一方面,人们力图将前期的一些系统引入更为实用的阶段,如由bbn公司推出的基于rus和irus的parlance、sri公司的clare、微软公司在sqlserver6.5/7.0中提供的englishquery、ibm的languageaccess、加拿大simonfraser大学开发的systemx;另一方面,人们不断探索新的理论和方法,如引入多模式界面、人工神经网络等技术。-我国在这方面的研究基本是在汉语自然语言查询界面的范畴下展开的,以体现我国用户使用汉语的特色。在70年代和80年代,我国人工智能方面的学者开始研究汉语人机对话系统,这些系统与数据库的结合尚不紧密。进入90年代后,国内在从事数据库汉语查询界面方面的研究有了一些进展,但在系统建设方面只停留在原型系统的水平上,难以见到一些成熟的系统。最近几年,越来越多的学者重新认识到汉语查询界面研究的理论意义和应用价值。中国人民大学、香港中文大学和北京大学在国家自然科学基金重点项目的支持下,开展了“中文数据库系统及其界面研究”课题,在中文数据库环境下,从可移植性体系结构、领域知识的自动提取、自然语言查询分析处理、受限中文查询语言的设计实现与评估、智能界面管理等方面进行了多方位全面、系统的深入探索,已经取得了可喜的研究成果。-nlidb的发展趋势可以用下图表示。可以预见,进入21世纪后,随着技术水平的不断提高,nlidb必将获得长足的发展,这完全符合未来计算机的发展方向和未来计算机的应用需求。1.3数据库自然语言界面的关键技术研究1.3.1领域知识提取处理-让系统自动或半自动地实现领域知识的提取,从而建立起专用词典,这是实现系统可移植性的重要步骤。在很多nlidb系统中都采用了提取技术。-领域知识提取处理的好坏不仅影响到系统的可移植性,由于它的生成结果是词典,因此也将影响到系统的可用性。好的提取方法必须能充分减少用户负担,增强自动生成能力。1.3.2自然语言查询处理-大部分数据库的自然语言界面,其处理过程大致可分为五个阶段:自然语言分析阶段、查询生成阶段、查询执行阶段、结果加工阶段和语言转述阶段。-自然语言分析阶段是自然语言界面系统的核心,其主要任务是进行语法语义分析。对此,自然语言处理有不同的策略,有面向特定应用领域的分析方法、面向通用领域的分析方法、面向数据库应用领域的分析方法。前两种方法一般比较常见,第三种方法我们认为是一种更适合数据库自然语言查询处理的方法。首先它以数据库查询为具体的语言对象提出相应的处理方法,采用语法语义合一的思想,简化通用方法的累赘。-上述处理框架也被称为是一种基于中间语言的处理逻辑。它的最大好处在于具有比较好的可移植性。由于有了中间语言,当系统架构于不同的dbms之上时,只需对其中的查询生成和查询处理模块做必要的调整即可。其实查询生成和查询处理模块若是基于数据库标准sql和odbc,则基本可以做到无代价移植。1.3.3自然语言查询中的知识处理-自然语言查询的最大特点在于它是基于现实世界的概念模型即领域知识而提问的。因此,自然语言查询的问题不单单是从数据库中找出现成的数据,而且要查出非现成的数据,即知识。前者若称为直接性查询,后者则可称为间接性查询。要想正确理解间接性查询,必须借助领域知识才能完成。对直接性查询,当出现歧义时,也必须用到知识加以处理。知识在自然语言查询处理中的作用远不限于此,概括起来有以下三方面内容:领域知识在解释查询中的重要性、领域知识在回答查询中的重要性、用户模型的重要性。1.3.4自然语言更新处理-自然语言更新处理在某种意义上讲要比自然语言的查询更难处理。其困难在于,更新操作要改变数据库的内容,而如何改变是与数据库的具体结构有关的。就关系模式来讲,是与表的结构和表的参照关系有关的,而自然语言用户的最大特点是不用了解数据库的结构。这一矛盾会导致更新操作出现一种歧义性现象,这种歧义不是来自用户的表述,而是来自数据库底层对一个请求有几种不同的更新方式。因此,对一个自然语言更新所潜在的问题是实现上可能存在多个数据库更新操作,称为候选更新(candidateupdate)。1.3.5受限自然语言的处理-目前,nlidb都只能处理自然语言的一个很小的子集,因此,用户在使用自然语言查询时要受到很多限制(即受限自然语言),而这些限制对用户来讲是不明确的。解决受限自然语言的途径有两个方面,一是改进处理方法,增大可处理的语言面,我们称之为主动性方法;另一方面是在不降低表达能力的情况下,能以一种清晰的方法告诉用户语言的受限范围,从而减少用户出错的情况,我们称之为被动性方法。显然后一种方法简单易行,而且系统实现也可因此大大简化,但它不是解决问题的积极方法。1.3.6对现存问题的解决-为解决数据库自然语言界面中存在的问题,目前技术研究主要朝以下三方面努力: 增强系统的可移植性; 扩展系统的语言范畴; 扩展系统的概念范畴。-其实这三方面内容的解决是紧密缠绕在一起的。如领域知识提取技术既增加了系统的可移植性,也是解决另两类问题所必需的。就目前技术来看,对可移植性问题的解决比较充分,如体系结构、词典组织、领域知识提取都在一定程度上解决了领域的独立性;基于中间语言的分析框架解决了dbms的独立性。-受限语言的处理方法(受限语法和界面生成)可以在一定程度上解决范围失配问题,但这不是从根本上解决问题的方法。我们认为在系统中增加知识的运用是解决后两类问题的关键。1.4数据库自然语言界面研究展望-我们认为,目前首先要解决的是研究方法问题。传统的研究方法在走两个极端,从事自然语言处理的人认定nlidb的核心技术是“自然语言理解”,而搞数据库的人则总是不能跳出原有数据库查询的圈子,只能给出其实不需语言处理的菜单构造界面。我们认为,在研究方法上应定位于以数据库语义为中心的思想。nlidb处理的是数据库这一特定领域的语言问题,它的直接处理目标是将自然语言表述的查询转换为数据库查询。如何将自然语言查询与现存的数据库语义信息结合,是解决这一处理目标的关键。基于此,我们提出了基于数据库语义的一整套语言处理逻辑来解决nlidb的一些关键问题,如基于数据库语义的自动分词、句法分析及数据库查询转换,设计实现了一个自然语言查询系统nchiql,对可移植性体系结构、领域知识的自动提取、中文自然语言查询分析处理、受限中文查询语言的设计实现与评估、智能界面管理等方面进行了多方位全面、系统的深入探索。nchiql原型系统具有良好的可移植性、可用性、可适应性、鲁棒性和智能性,它采用三层结构,可以直接嫁接在不同厂家的dbms引擎上。-计算机处理自然语言的能力远未达到人们的想像和期望,自然语言界面的可用性也远不及图形界面等其他类型的界面。人们不得不问,为什么还要研究自然语言界面?目前,图形界面虽然在直观友好方面比原先的字符界面大大改进了,但使用者仍需要将脑中所想的(what)转化成如何操作(how)来完成任务的执行步骤。而新一代界面应该是mtm(mindtomachine)型,即将脑中所想的直接提交给机器来完成,人们只需关心what,而无需关心how。具体的有语音、手势、虚拟空间等操作计算机的方式,而语音、手写等交互方式都是以自然语言理解为基础的。人们不断追寻着这一梦想,但这需要计算机科学、语言学、思维科学等各学科的共同努力,相互促进,不断地将各学科的成果融合起来。1.5中文分词技术1.5.1中文切词 - 基本介绍众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子i am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白学、生两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我 是 一个 学生。 1.5.2 中文切词 - 技术特点中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法。 现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。 基于字符串匹配的分词方法 这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个充分大的机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下: 1. 正向最大匹配法(由左到右的方向); 2. 逆向最大匹配法(由右到左的方向); 3. 最少切分(使每一句中切出的词数最小)。 还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。 一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。 对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。 基于理解的分词方法 这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。 基于统计的分词方法 从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字x、y的相邻共现概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如这一、之一、有的、我的、许多的等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。 到底哪种分词算法的准确度更高,目前并无定论。对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法。笔者了解,海量科技的分词算法就采用复方分词法,所谓复方,相当于用中药中的复方概念,即用不同的药才综合起来去医治疾病,同样,对于中文词的识别,需要多种算法来处理不同的问题。 1.5.3中文切词 - 技术难点有了成熟的分词算法,是否就能容易的解决中文分词的问题呢?事实远非如此。中文是一种十分复杂的语言,让计算机理解中文语言更是困难。在中文分词过程中,有两大难题一直没有完全突破。 * 歧义识别。 歧义是指同样的一句话,可能有两种或者更多的切分方法。例如:表面的,因为表面和面的都是词,那么这个短语就可以分成表面 的和表面的。这种称为交叉歧义。像这种交叉歧义十分常见,前面举的和服的例子,其实就是因为交叉歧义引起的错误。化妆和服装可以分成化妆 和服装或者化妆 和服 装。由于没有人的知识去理解,计算机很难知道到底哪个方案正确。 交叉歧义相对组合歧义来说是还算比较容易处理,组合歧义就必需根据整个句子来判断了。例如,在句子这个门把手坏了中,把手是个词,但在句子请把手拿开中,把手就不是一个词;在句子将军任命了一名中将中,中将是个词,但在句子产量三年中将增长两倍中,中将就不再是词。这些词计算机又如何去识别? 如果交叉歧义和组合歧义计算机都能解决的话,在歧义中还有一个难题,是真歧义。真歧义意思是给出一句话,由人去判断也不知道哪个应该是词,哪个应该不是词。例如:乒乓球拍卖完了,可以切分成乒乓 球拍 卖 完 了、也可切分成乒乓球 拍卖 完了,如果没有上下文其他的句子,恐怕谁也不知道拍卖在这里算不算一个词。 * 新词识别。 新词,专业术语称为未登录词。也就是那些在字典中都没有收录过,但又确实能称为词的那些词。最典型的是人名,人可以很容易理解句子王军虎去广州了中,王军虎是个词,因为是一个人的名字,但要是让计算机去识别就困难了。如果把王军虎做为一个词收录到字典中去,全世界有那么多名字,而且每时每刻都有新增的人名,收录这些人名本身就是一项巨大的工程。即使这项工作可以完成,还是会存在问题,例如:在句子王军虎头虎脑的中,王军虎还能不能算词? 新词中除了人名以外,还有机构名、地名、产品名、商标名、简称、省略语等都是很难处理的问题,而且这些又正好是人们经常使用的词,因此对于搜索引擎来说,分词系统中的新词识别十分重要。目前新词识别准确率已经成为评价一个分词系统好坏的重要标志之一。 第二章 数据库理论基础 2.1数据库系统设计一个成功的信息管理系统,是建立在许多条件之上的,而数据库是其中一个非常重要的条件和关键技术。信息管理系统所涉及的数据库设计分五个步骤:数据库需求分析、概念设计、逻辑设计、物理设计与加载测试。(1)数据库需求分析的任务是将业务管理单证流化为数据流,划分主题之间的边界,绘制出dfd图,并完成相应的数据字典。(2)概念设计的任务是从dfd出发,绘制出本主题的实体关系图,并列出各个实体与关系的纲要表。(3)逻辑设计的任务是从e-r图与对应的纲要表出发,确定各个实体及关系的表名属性。(4)物理设计的任务是确定所有属性的类型、宽度与取值范围,设计出基本表的主键,将所有的表名与字段名英文化(现在很多软件能支持中文字段,如access 2000),实现物理建库,完成数据库物理设计字典。(5)加载测试工作贯穿于程序测试工作的全过程,整个录入、修改、查询、处理工作均可视为对数据库的加载测试工作。数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照dbms提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。数据库设计的步骤主要是:(1)数据库结构定义:目前的数据库管理系统(dbms)有的是支持联机事务处理cltp(负责对事务数据进行采集、处理、存储)的操作型dbms,有的可支持数据仓库、有联机分析处理clap(指为支持决策的制定对数据的一种加工操作)功能的大型dbms,有的数据库是关系型的、有的可支持面向对象数据库。针对选择的dbms,进行数据库结构定义。(2)数据表定义:数据表定义指定义数据库中数据表的结构,数据表的逻辑结构包括:属性名称、类型、表示形式、缺省值、校验规则、是否关键字、可否为空等。关系型数据库要尽量按关系规范化要求进行数据库设计,但为使效率高,规范化程度应根据应用环境和条件来决定。数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数据的字段或临时数据表。(3)存储设备和存储空间组织:确定数据的存放地点、存储路径、存储设备等,备份方案,对多版本如何保证一致性和数据的完整性。(4)数据使用权限设置:针对用户的不同使用要求,确定数据的用户使用权限,确保数据安全。(5)数据字典设计:用数据字典描述数据库的设计,便于维护和修改。2.2 sql语言介绍2.2.1 sql基础sql(structured query language,结构查询语言)是一个功能强大的数据库语言。sql通常使用于数据库的通讯。ansi(美国国家标准学会)声称,sql是关系数据库管理系统的标准语言。sql语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用sql的常见关系数据库管理系统有:oracle、 sybase、 microsoft sql server、 access、 ingres等等。虽然绝大多数的数据库系统使用sql,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的sql命令,比如select、 insert、 update、 delete、 create和 drop常常被用于完成绝大多数数据库的操作。sql语言的突出优点就是它的非过程化、统一,而且还是所有关系数据库的公共语言。sql语言一次处理一个记录,对数据提供自动导航,它允许用户在高层的数据结构上工作,而部队单个记录进行操作,可操作记录集,所有sql语句接受集合作为输入,返回集合作为输出。sql的集合特性允许一条sql语句的结果作为另一条sql语句的输入。同时,它不要求用户指定对数据的存放方法,这种特性使用户更易集中精力于要得到的结果;所有sql语句使用查询优化器,它是rdbms的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。作为统一的语言,sql可用于所有用户的db活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。2.2.2 sql语句sql语句概括起来可以分为数据操作语言,数据定义语言和数据控制语言几大组,它们用于对数据库数据的查询,修改和更新,是一种完备的数据处理语言。主要用到的数据操作语言主要是:select:用于数据检索;insert:用于增加数据到数据库;update:用于从数据库中修改现存的数据;delete:用于从数据库中删除数据。第三章 需求分析3.1 任务概述3.1.1建立一个数据库用来存储基本信息。语义字典信息,包括所有的原义字典和同义字典基本信息,食品的基本信息。录取资料信息库,包括 年份 ,省份,专业,科类,分数,人数本项目的任务是智能查询接口的实现。3.1.2语义理解包括分词,词义理解,句意理解以及段意理解3.1.3 语义抽取从语义中抽取所需要的查询要求3.1.4语义输出根据语义从数据库查询并输出信息3.2 系统需求硬件环境:cpu p 550 ,内存 256m ,硬盘 20g软件环境使用windowsxp操作系统,用visual c+ 6.0为开发平台,数据库使用sql server 2000,在开发此软件时用的是vc中的mfc框架。对数据的计算处理使用的是数据库字段汇总。3.2.1 microsoft sql server2000数据库所谓数据库,一些关于某个特定主体或目的的信息集合。信息由数据组成。microsoft access是微软公司推出的桌面数据库应用系统,数据库应用系统是帮助人们创建数据库应用程序的软件,access就是一个面向对象的关系性数据库的应用系统。使用access可以创建各自独立的数据表以保存各种类型的信息。定义表之间的关系已合并个表数据。用access可以创建查询并检索符合指定条件的数据。access中的各种向导帮助用户方便快捷地创建各种数据库对象。3.2.2 mfc简述 mfc(microsoft foundation class)指的是microsoft基础类,是用来为windows开发c+gui应用程序。mfc是一种十分优秀的工具,使得面向对象的软件函数包装技术演变成为一种可以进行代码复用、简化了程序的复杂性并使程序更加有效的软件开发环境.对于使用windows api 进行应用程序开发的人员来说, mfc使程序员大大提高了程序开发效率.你不必创建gdu对象,不必编写许多代码行对这些对象进行初始化,并且小心地跟踪其生命周期的运行情况,你只需建立一个mfc类的实例,使用其默认值,然后让撤消程序来清除系统资源即可.3.2.3 vc+6.0 ado数据访问技术 microsoft新近推出的uda(universal data access,一致数据访问技术)为关系型或非关系型数据访问提供了一致的访问接口,为企业级intranet应用多层软件结构提供了数据接口标准。一致数据访问包括两层软件接口,分别为ado(active data object)和oled b,对应于不同层次的应用开发,ado提供了高层软件接口,可在各种脚本语言(script)或一些宏语言中直接使用;ole db提供了底层软件接口,可在c/c+语言中直接使用。ado以ol e db为基础,它对ole db进行了封装。一致数据访问技术建立在microsoft的com(组件对象模型)基础上,它包括一组com组件程序,组件与组件之间或者组件与客户程序之间通过标准的com接口进行通讯。 由于ado建立在自动化(automation)基础上,所以ado的应用场合非常广泛,不仅可在visual basic这样的高级语言开发环境中使用,还可以在一些脚本语言中使用,这对于开发web应用,在asp(activeserver page)的脚本代码访问数据库中提供了操作应用的捷径。本文将首先介绍ado和ole db的结构模型,以便读者了解ado与ole db之间的关系,然后介绍ado的对象模型和ado的一些特性,同时我们也将通过一些例子代码向读者展示ado的用法。一致数据访问介绍 随着网络技术和数据库技术的不断发展,现在的应用系统对数据集成的要求越来越高,这些数据有可能分布在不同的地方,并且使用不同的格式,例如关系型数据库和操作系统中的文件、电子表格、电子邮件、多媒体数据以及目录服务信息等等。传统的解决方案是使用大型的数据库系统,把所有这些数据都移到数据库系统中,然后按照操作数据库的办法对这些数据进行访问,这样做虽然能够按统一的方式对数据进行各种操作,但这种间接访问方式带来了很多问题,比如数据更新不及时、空间资源的冗余和访问效率低等等。microsoft公司推出的一致数据访问技术则较好地解决了这些问题,它使得应用通过一致的接口来访问各种各样的数据,而不管数据驻留在何处,也不需要进行数据转移或复制、转换,在实现分布式的同时也带来了高效率。并且uda技术在统一数据访问接口的同时,它的多层结构使数据使用方有了更多的选择机会,而它强大的扩展能力也给数据提供方留下了更多的扩展余地,这种开放型的软件结构使它具有极强的生命力,所以,这种技术从一推出便获得了广泛的欢迎,可以说,uda技术是继odbc之后的又一数据访问技术的飞跃。uda技术包括ole db和ado两层标准接口,ole db是系统级的编程接口,它定义了一组com接口,这组接口封装了各种数据系统的访问操作,这组接口为数据使用方和数据提供方建立了标准,ole db还提供了一组标准的服务组件,用于提供查询、缓存、数据更新、事务处理等操作,因此,数据提供方只需实现一些简单的数据操作,在使用方就可以获得全部的数据控制能力。ado是应用层的编程接口,它通过ole db提供的com接口访问数据,它适合于各种客户机/服务器应用系统和基于web的应用,尤其在一些脚本语言中访问数据库操作是ado的主要优势。ado是一套用自动化技术建立起来的对象层次结构,它比其他的一些对象模型如dao(data access object)、rdo(remote data object)等具有更好的灵活性,使用更为方便,并且访问数据的效率更高。 应用程序既可以通过ado访问数据也可以直接通过ole db访问数据,而ado则通过ole db访问底层数据。而且,oledb分成两部分,一部分由数据提供者实现,包括一些基本功能,如获取数据、修改数据、添加数据项等;另一部分由系统提供, 包括一些高级服务,如游标功能、分布式查询等等。这样的层次结构既为数据使用者即应用程序提供了多种选择方案,又为数据提供方简化了服务功能的实现手段,它只需按oled b规范编写一个com组件程序即可,使得第三方发布数据更为简便,而在应用程序方可以得到全面的功能服务,这充分体现了ole db两层结构的优势。 由于ole db和ado都以com组件的形式实现,所以com组件的各种特性也使得构建数据应用更为灵活,而不仅仅局限于一般的客户机/服务器或web应用模型,它既适合于以数据为中心的应用,也适合于多层结构的分布式软件系统。通过对com组件的配置,我们可以建立各种复杂的应用系统。利用从com到dcom的位置透明技术,我们可以很方便地建立分布式应用系统;利用mts(microsoft transaction server)运行环境,我们也可以在数据访问一层增加安全性控制,并利用mts的对象管理使数据访问效率更高。所有这些功能都无需数据提供方编写代码实现,只需在dcom或mts环境中进行常规的配置即可。 可以说一致的数据访问技术的核心是ole db,ole db建立了数据访问的标准接口,它把所有的数据源经过抽象形成行集(rowset)的概念。ole db模型主要包括以下一些com对象: (1)数据源(data source)对象 数据源对象对应于一个数据提供者,它负责管理用户权限、建立与数据源的连接等初始操作。 (2)会话(session)对象 在数据源连接的基础上建立会话对象,会话对象提供了事务控制机制。 (3)命令(command)对象 数据使用者利用命令对象执行各种数据操作,如查询命令、修改命令等。 (4)行集(rowset)对象 提供了数据的抽象表示,它可以是命令执行的结果,也可以直接由会话对象产生,它是应用程序主要的操作对象。ole db的对象模型非常简单,这种简单性也带来了灵活性,从上面的几个com对象也可以看出这一点。下面我们将从应用层角度出发,通过建立在ole db基础上的ado对象模型结构的分析和使用以帮助读者进一步理解一致数据访问技术。 ado对象模型 ado对象模型定义了一组可编程的自动化对象,可用于visual basic、visual c+、java以及其他各种支持自动化特性的脚本语言。ado最早被用于microsoft internet information server中访问数据库的接口,与一般的数据库接口相比,ado可更好地用于网络环境,通过优化技术,它尽可能地降低网络流量;ado的另一个特性是使用简单,不仅因为它是一个面向高级用户的数据库接口,更因为它使用了一组简化的接口用以处理各种数据源。这两个特性使得ado必将取代rdo和dao,成为最终的应用层数据接口标准。ado实际上是ole db的应用层接口,这种结构也为一致的数据访问接口提供了很好的扩展性,而不再局限于特定的数据源,因此,ado可以处理各种ole db支持的数据源。在ado模型中,主体对象只有3个:connectioncommand和recordset,其他4个集合对象errors、properties、parameters和fields分别对应error、property、parameter和field对象,整个ado对象模型由这些对象组成。 一个典型的ado应用使用connection对象建立与数据源的连接,然后用一个command对象给出对数据库操作的命令,比如查询或者更新数据等,而recordset用于对结果集数据进行维护或者浏览等操作。command命令所使用的命令语言与底层所对应的ole db数据源有关,不同的数据源可以使用不同的命令语言,对于关系型数据库,通常使用sql作为命令语言。 在connection、command和recordset 3个对象中,command对象是个可选对象,它是否有效取决于ole db数据提供者是否实现了icommand接口。由于ole db可提供关系型数据源也可以提供非关系型数据源,所以在非关系型数据源上使用传统的sql命令查询数据有可能无效,甚至command命令对象也不能使用。 从结构上看,ado模型非常简单,但使用上又非常灵活,下面我们先从单个对象的角度进行讨论: (1) connection对象 connection对象代表与数据源之间的一个连接,ado的connec tion对象封装了ole db的数据源对象和会话对象。根据ole db提供者的不同性能,conne ction对象的特性也有所不同,所以connection对象的方法和属性不一定都可以使用。利用connection对象,我们可以完成以下一些基本设置操作。 a.通过connectionstringconnectiontimeout和mode属性设置连接串、超时信息、访问模式。 b.还可以设置cursorlocation属性以便指定使用客户端游标,以便在客户程序中使用批处理修改方式。 c.设置连接的缺省数据库属性defaultdatabase。 d.设置ole db提供者的属性provider。 e.通过open和close控制connection对象与物理数据源的连接。 f.通过execute方法执行命令。 g.提供事务机制,通过begintranscommittrans和rollbacktrans方法实现事务控制。 h.通过errors集合属性检查数据源的错误信息。 i.通过openschema方法获取数据库的表信息。 connection对象是ado的基本对象之一,它独立于所有其他的对象。如果我们要对数据库进行查询操作,既可以使用execute方法,也可以使用command对象。使用execute方法比较简便,但用command对象可以保存命令的信息,以便多次查询。 (2) command对象 command对象代表一个命令,可以通过其方法执行针对数据源的有关操作,比如查询、修改等。command对象的用法下: a.通过commandtext属性设置命令串。 b.通过parameters集合属性和parameter对象定义参数化查询或存储过程的参数。 c.通过execute方法执行命令,可能的话返回recordset对象。 d.在执行命令之前,可通过设commandtype属性以便优化性能。 e.可以通过prepared属性指示底层的提供者为当前命令准备一个编译过的版本,以后再执行时,速度会大大加快。 f.通过commandtimeout属性设置命令执行的超时值(以秒为单位)。 g.可以设置activeconnection属性,为命令指定连接串,command对象将在内部创建c onnection对象。 h.可以设置name属性,这样以后可以在相应的conn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论