关系数据库应用.ppt
关系数据库应用关系数据库应用软件技术基础软件技术基础北航可靠性工程研究所 2005,软件技术基础创建MS ACCESS数据库操作演示创建表创建表关系创建查询(视图)数据的转化 EXCELACCESSTEXTACCESSTEXTACCESS北航可靠性工程研究所 2005,软件技术基础创建SQL Server数据库在SQLServer7中创建数据库创建ODBC数据库连接将ACCESS表转到SQLServer数据库中北航可靠性工程研究所 2005,软件技术基础一致数据访问(UDA)UDA(Universal Data Access,一致数据访问)技术包括OLE DB 和ADO 两层标准接口。OLE DBOLE DB 是系统级的编程接口,它定义了一组COM 接口,这组接口封装了各种数据系统的访问操作,这组接口为数据使用方和数据提供方建立了标准,OLE DB 还提供了一组标准的服务组件,用于提供查询、缓存、数据更新、事务处理等操作,因此,数据提供方只需实现一些简单的数据操作,在使用方就可以获得全部的数据控制能力。ADO ADO 是应用层的编程接口,它通过OLE DB 提供的COM 接口访问数据,它适合于各种客户机/服务器应用系统和基于Web 的应用,尤其在一些脚本语言中访问数据库操作是ADO 的主要优势。ADO 是一套用自动化技术建立起来的对象层次结构,它比其他的一些对象模型如DAO(Data Access Object)、RDO(Remote Data Object)等具有更好的灵活性,使用更为方便,并且访问数据的效率更高。北航可靠性工程研究所 2005,软件技术基础UDA 的层次结构 北航可靠性工程研究所 2005,软件技术基础OLE DB一致的数据访问技术的核心是OLE DB,OLE DB 建立了数据访问的标准接口,它把所有的数据源经过抽象形成行集(rowset)的概念。OLE DB 模型主要包括以下一些COM 对象:(1)数据源(Data Source)对象数据源对象对应于一个数据提供者,它负责管理用户权限、建立与数据源的连接等初始操作。(2)会话(Session)对象在数据源连接的基础上建立会话对象,会话对象提供了事务控制机制。(3)命令(Command)对象数据使用者利用命令对象执行各种数据操作,如查询命令、修改命令等。(4)行集(Rowset)对象提供了数据的抽象表示,它可以是命令执行的结果,也可以直接由会话对象产生,它是应用程序主要的操作对象。OLE DB 的对象模型非常简单,这种简单性也带来了灵活性 北航可靠性工程研究所 2005,软件技术基础ADO 对象模型 在ADO 模型中,主体对象只有3 个:Connection、Command 和Recordset,其他4 个集合对象Errors、Properties、Parameters 和Fields 分别对应Error、Property、Parameter 和Field 对象。一个典型的ADO 应用使用Connection 对象建立与数据源的连接,然后用一个Command 对象给出对数据库操作的命令,比如查询或者更新数据等,而Recordset 用于对结果集数据进行维护或者浏览等操作。Command 命令所使用的命令语言与底层所对应的OLE DB 数据源有关,不同的数据源可以使用不同的命令语言,对于关系型数据库,通常使用SQL 作为命令语言。在Connection、Command 和Recordset 3 个对象中,Command 对象是个可选对象,它是否有效取决于OLE DB 数据提供者是否实现了ICommand 接口。由于OLE DB 可提供关系型数据源也可以提供非关系型数据源,所以在非关系型数据源上使用传统的SQL 命令查询数据有可能无效,甚至Command 命令对象也不能使用。北航可靠性工程研究所 2005,软件技术基础ADO 对象模型北航可靠性工程研究所 2005,软件技术基础Connection 对象 Connection 对象代表与数据源之间的一个连接,ADO 的Connection 对象封装了OLE DB 的数据源对象和会话对象。a.通过ConnectionString、ConnectionTimeOut 和Mode 属性设置连接串、超时信息、访问模式。b.还可以设置CursorLocation 属性以便指定使用客户端游标,以便在客户程序中使用批处理修改方式。c.设置连接的缺省数据库属性DefaultDatabase。d.设置OLE DB 提供者的属性Provider。北航可靠性工程研究所 2005,软件技术基础Connection 对象(续I)e.通过Open 和Close 控制Connection 对象与物理数据源的连接。f.通过Execute 方法执行命令。g.提供事务机制,通过BeginTrans、CommitTrans 和RollbackTrans 方法实现事务控制。h.通过Errors 集合属性检查数据源的错误信息。i.通过OpenSchema 方法获取数据库的表信息。Connection 对象是ADO 的基本对象之一。北航可靠性工程研究所 2005,软件技术基础Command 对象 Command 对象代表一个命令,可以通过其方法执行针对数据源的有关操作,比如查询、修改等。a.通过CommandText 属性设置命令串。b.通过Parameters 集合属性和Parameter 对象定义参数化查询或存储过程的参数。c.通过Execute 方法执行命令,可能的话,返回Recordset 对象。d.在执行命令之前,可通过设置CommandType 属性以便优化性能。北航可靠性工程研究所 2005,软件技术基础Command 对象(续I)e.可以通过Prepared 属性指示底层的提供者为当前命令准备一个编译过的版本,以后再执行时,速度会大大加快。f.通过CommandTimeOut 属性设置命令执行的超时值(以秒为单位)。g.可以设置ActiveConnection 属性,为命令指定连接串,Command 对象将在内部创建Connection 对象。h.可以设置Name 属性,这样以后可以在相应的Connection 对象上按Name 属性指定的方法名执行。北航可靠性工程研究所 2005,软件技术基础Recordset 对象 Recordset 对象代表一个表的记录集或者命令执行的结果,在记录集中,总是有一个当前的记录。记录集是ADO 管理数据的基本对象,所有的Recordset 对象都按照行列方式的表状结构进行管理,每一行对应一个记录(Record),每一列对应一个域(Field)。Recordset 对象也通过游标对记录进行访问,在ADO 中,游标(Cursor)分为以下4 种:静态游标(adOpenStatic)提供对数据集的一个静态拷贝,允许各种移动操作,包括前移、后移等等,但其他用户所做的操作反映不出来。动态游标(OpenDynamic)允许各种移动操作,包括前移、后移等等,并且其他用户所做的操作也可以直接反映出来。前向游标(OpenForwardOnly)允许各种前向移动操作,不能向后移动,并且其他用户所做的操作也可以直接反映出来。键集(OpenKeyset)游标类似于动态游标,也能够看到其他用户所做的数据修改,但不能看到其他用户新加的记录,也不能访问其他用户删除的记录。北航可靠性工程研究所 2005,软件技术基础Recordset 对象IRecordset 对象的用法如下:a.利用CursorType 属性设置游标类型。b.通过Open 方法打开记录集数据,既可以在Open 之前对ActiveConnection 属性赋值,指定Recordset 对象使用连接对象,也可以直接在Open 方法中指定连接串参数,ADO 将创建一个内部连接,即使连接串与外部的连接对象相同,它也使用新的连接对象。c.Recordset 对象刚打开时,当前记录被定位在首条记录,并且BOF 和EOF 标志属性为False,如果当前记录集为空记录集,则BOF 和EOF 标志属性为True。北航可靠性工程研究所 2005,软件技术基础Recordset 对象 d.通过MoveFirst、MoveLast、MoveNext 和MovePrevious 方法可以对记录集的游标进行移动操作。如果OLE DB 提供者支持相关功能的话,可以使用AbsolutePosition、AbsolutePage 和Filter 属性对当前记录重新定位。e.ADO 提供了两种记录修改方式:立即修改和批修改。在立即修改方式下,一旦调用Update 方法,则所有对数据的修改立即被写到底层的数据源。在批修改方式下,可以对多条记录进行修改,然后调用UpdateBatch 方法把所有的修改递交到底层数据源。递交之后,可以用Status 属性检查数据冲突。Recordset 对象是ADO 数据操作的核心,它既可以作为Connection 对象或Command 对象执行特定方法的结果数据集,也可以独立于这两个对象而使用,由此可以看出ADO 对象在使用上的灵活性。北航可靠性工程研究所 2005,软件技术基础VB6中的数据访问接口在 Visual Basic 中,可用的数据访问接口有三种:ActiveX 数据对象(ADO)、远程数据对象(RDO)和数据访问对象(DAO)。QDAO(Data Access Objects)数据访问对象是第一个面向对象的接口 QRDO(Remote Data Objects)远程数据对象是一个到 ODBC 的、面向对象的数据访问接口 QADO(ActiveX Data Objects)是 DAO/RDO 的后继产物。ADO 2.0在功能上与 RDO 更相似 北航可靠性工程研究所 2005,软件技术基础在Visual Basic 中使用ADO 利用ADO Control和DataGrid Control来访问数据库(例)直接利用数据对象来访问数据库(例)对记录集数据进行编辑操作对记录集数据进行移动和遍历操作北航可靠性工程研究所 2005,软件技术基础编辑操作I增加记录操作:AddNew 方法,再调用Update 方法,如:rs.AddNewrs!Author_id=strIDrs!AuthorName=strNamers!Title=strTitlers.Update北航可靠性工程研究所 2005,软件技术基础编辑操作删除记录操作:调用Delete 方法可以删除当前记录或者满足条件的一组记录。在立即修改模式下,删除马上生效;在批修改模式下,Delete 操作只在当前缓冲区中的记录上作了标记,只有当调用了UpdateBatch 之后,记录才真正被删除。一个简单的例子如下:rs.Filter=Title=Engineerrs.Delete adAffectGroupDelete the record.rs.UpdateBatch北航可靠性工程研究所 2005,软件技术基础编辑操作修改记录操作:对当前记录的各个域信息进行重新赋值后,调用Update 方法,如果要取消修改,则调用CancelUpdate 方法。举例如下:rs!Author_id=strIDrs!AuthorName=strNamers!Title=strTitlers.Update北航可靠性工程研究所 2005,软件技术基础移动和遍历操作操作操 作 类型 说明 MoveFirst方法 移动到记录集首MoveLast方法移动到记录集尾MoveNext方法移动到下一条记录MovePrevious方法移动到上一条记录Move方法往前或往后移动数条记录Bookmark属性返回标识当前记录的书签或设置到指定的书签位置BOF属性若当前位置在首条记录之前,则返回True否则为FalseEOF属性若当前位置在最后记录之后,则返回True否则为False 移动和遍历操作:Recordset 提供了各种方向的移动操作,利用这些操作可以对记录集进行遍历处理。各种移动操作如下表所示。利用这些属性和方法,可以很灵活地访问记录集 北航可靠性工程研究所 2005,软件技术基础结束语随着信息化时代的不断深入,信息处理和信息共享变得越来越重要,数据访问技术对于信息系统也就显得尤为重要,本文介绍了Microsoft 提供的一致数据访问(UDA)技术,从基本的结构模型到深入介绍ADO 对象模型,并从应用的角度分析了ADO 的一些特性,最后通过例程序展示了ADO 的基本用法。本节课旨在对ADO 技术作一个基本介绍,由于计算机技术发展很快,有些最新的技术在本文中没有涉及到,有兴趣的同学可以查阅有关资料,也可以与我共同探讨。北航可靠性工程研究所 2005,软件技术基础一个数据库应用系统的设计与实现应用背景与需求说明在单机上实现一个教学管理系统的例子,并且可以很容易地把它移植到C/S结构中,只涉及教学管理中的对学生、课程和教师的管理部分:项目的具体要求是:.运行环境是Windows 95/98操作系统,数据库的前端开发环境是VB 5.0。一门课程可由多名教师来讲授。一个教师可讲授多门课程。一个学生可以选修多门课程。需产生的报表有.每学期开学时要生成学生修课情况表,内容包括学号、姓名、课程名、修课类别,其中修课类别分为必修、选修、重修。.每学期结束时要生成学生修课成绩表,内容包括学号、姓名、课程名、修课类别、平时成绩、卷面成绩、总评成绩。生成教师授课服务表,内容包括教师号、教师名、课程名、授课类别、学时数、班数,授课类别分为主讲、辅导、带实验。安全性要求本门课程的主讲教师才具有对其所讲授课程的成绩的修改权,教学秘书和系主任才有修改教师授课服务表中的内容的权力。其它人只有查询有关信息的权力。北航可靠性工程研究所 2005,软件技术基础数据库设计概念设计核心活动:是系统中的其它活动都是围绕这个活动展开的或与此活动是密切相关的活动确定系统的核心活动:对现实系统分析的关键该教学管理系统中,核心活动就是授课,学生与课程之间是通过授课发生联系的,教师与课程之间是通过教师授课发生联系的。系统所包含的实体:课课程程:元素为由一个主讲教师负责且教学内容相同的教学活动 单位,用课程号来标识此实体。学生:学生:元素为一个学生,由学号来标识。教师:教师:元素为一个教师,由教师号来标识。课程号、课程名、讲授学期、学时数学号、姓名、系、专业、班级教师号、教师名、系、教研室北航可靠性工程研究所 2005,软件技术基础北航可靠性工程研究所 2005,软件技术基础数据库设计设计关系模式设计基本关系模式主要就是从ER图出发,将其直接转换为关系模式。转换的规则为:1.将每个实体都转换为一个关系模式。实体的属性就是关系的属性,实体的主码就是关系的主码。2.将每个联系也转换为一个关系模式,该关系模式的属性由与该联系相连的各个实体的主码及该联系的属性组成,该联系的主码分三种情况:.若联系是1:1的,则每个实体的主码即是该联系的候选码。.若联系是1:n的,则此联系的主码是n端实体的主码。.若联系是m:n的,则此联系的主码是各个实体的主码的并。此此E ER R图的关系模式为:图的关系模式为:(1)课程(课程号,课程名,讲授学期,学时数),主码为课程号。(2)学生(学号、姓名、系、专业、班),主码为学号。(3)教师(教师号、教师名、系、教研室),主码为教师号。(4)修课(学号,课程号,修课类别,平时成绩,卷面成绩,总评成绩),主码为(学号,课程号)。(5)授课(课程号,教师号,授课类别,班数),主码为(课程号,教师号)。北航可靠性工程研究所 2005,软件技术基础设计关系模式确定表中各属性的详细信息(1)(1)课程表课程表课程号:字符串型,10字节,主码课程名:字符串型,20字节,非空讲授学期:字符串型,2字节,非空学时数:整型,非空(2)(2)学生表学生表学号:字符串型,10字节,主码姓名:字符串型,20字节,非空系:字符串型,20字节,非空专业:字符串型,20字节,非空班:字符串型,10字节,非空(3)(3)教师表教师表教师号:字符串型,10字节,主码教师名:字符串型,20字节,非空 系:字符串型,20字节教研室:字符串型,10字节(4)(4)修课表修课表学号:字符串型,10字节,主码,学生表的外码课程号:字符串型,10字节,主码,课程表的外码修课类别:字符串型,4字节,非空平时成绩:浮点型,大于等于0,小于等于100卷面成绩:浮点型,大于等于0,小于等于100总评成绩:浮点型,大于等于0,小于等于100(5)(5)授课表授课表课程号:字符串型,10字节,主码,课程表的外码教师号:字符串型,10字节,主码,教师表的外码授课类别:字符串型,10字节班数:浮点型,大于0。假设选修课有半个班的情况,因此取浮点型。北航可靠性工程研究所 2005,软件技术基础确定数据库应用的功能最常用的功能就是对数据的增、删、改、查及生成报表1.数据录入(增加)2.数据删除3.数据修改4.数据查询5.生成报表包括对张表的数据录入有条件删除,有权限限制,有删除确认有条件查询后修改,有权限限制,修改后保存根据用户提出的条件查询,所有用户都有查询权限用数据库开发工具生成报表北航可靠性工程研究所 2005,软件技术基础本例三张报表本例三张报表:(1)学生修课表(学号,姓名,课程名,修课类别)(2)学生成绩表(学号,姓名,课程名,修课类别,平时成绩,卷面成绩,总评成绩)(3)教师授课服务表(教师号,教师名,课程名,授课类别,学时数,班数)创建视图的创建视图的SQLSQL语句可描述为:语句可描述为:CREATE VIEW 学学生生修修课课表表(学号,姓名,课程名,修课类别)ASSELECT 学生.学号,学生.姓名,课程.课程名,修课.修课类别 FROM 学生,课程,修课 WHERE 学生.学号=修课.学号 AND 课程.课程号=修课.课程号对对“学生成绩表学生成绩表”和和“教师授课服务表教师授课服务表”的处理与此类似的处理与此类似北航可靠性工程研究所 2005,软件技术基础数据库开发环境在C/S环境下实现时应注意数据的分布将数据全部放在服务器上-中央数据库中央数据库 将数据全部集中管理,数据只有一份,比如实时采集的数据一般都应该放在服务器端。将一部分数据放在服务器上,另一部分数据放在客户机上-地方数据库地方数据库 将数据分散管理,只将重要的、所有部门共享的数据放在中央数据库中,将各个部门自己需要的数据放在地方数据库中。便于全校统一管理,各部门共享,同时各部门有自己的地方数据库。便于全校统一管理,各部门共享,同时各部门有自己的地方数据库。如“修课表”,中央和地方各有一个,且两者结构一致,当地方课程数据库修改时,能及时修改中央数据库,在保持数据的一致性。将数据分为中央数据库和地方数据库的好处:减少对中央数据库的操作次数,先在地方数据库中录入数据有关数据(比如本系的修课情况表),当确认准确无误之后再送到中央数据库中。数据一旦被送到中央数据库就不能被随便地修改和删除,这也增加了中央数据库数据的安全性和可靠性。数据过于庞杂易于各部门开发自己专用的地方数据库分类北航可靠性工程研究所 2005,软件技术基础创建数据库应用程序数据控件(Data ControlData Control)数据控件是连接数据库中的信息和用户用来显示信息的依依附附控控件件,是简单数据库应用程序的核心。依附控件是为处理创建数据库应用程序的数据控件而建立的控件。数据控件用于绑定数据库和数据库中的某个表,依附控件用于绑定表中的某个列。数据控件是VB工具箱中的一个可用控件,设置数据控件的步骤:设置数据控件的步骤:打开VB选择Data控件在窗体中画出Data控件 设 定 Data控 件 的 DatabaseName和RecordSource属性。用于绑定某个用于绑定某个数据库数据库用于绑定数据用于绑定数据库中的某个表库中的某个表文本框、标签、文本框、标签、校验框、图片框、校验框、图片框、图像等图像等北航可靠性工程研究所 2005,软件技术基础创建数据库应用程序 创建一个简单的应用程序创建一个简单的应用程序例:创建一个课程表应用程序:例:创建一个课程表应用程序:建立窗体:建立窗体:打开打开VB 添加Data控件设置控件的属性添加依附控件设置依附控件属性。Name:CourseName:Course Caption:Caption:课程课程DatabaseName:JXGL.mdbDatabaseName:JXGL.mdbRecordSource:RecordSource:课程课程数据访问窗体设置的DataField和CaptionVBVB设置屏幕设置屏幕北航可靠性工程研究所 2005,软件技术基础浏览数据库中数据:浏览数据库中数据:单击运行按钮,结果如下结果如下:创建数据库应用程序 创建一个简单的应用程序创建一个简单的应用程序第一个记录第一个记录最后一个最后一个记录记录下一条下一条记录记录上一条上一条记录记录北航可靠性工程研究所 2005,软件技术基础数据控件的其它功能:添加记录、删除记录等 创建数据库应用程序 创建一个简单的应用程序创建一个简单的应用程序Private Sub cmdAdd_Click()End SubPrivate Sub cmdDelete_Click()If Not Data1.Recordset.EOF Then Else End IfEnd Sub北航可靠性工程研究所 2005,软件技术基础使用数据窗体模板使用数据窗体模板(Data Form WizardDFW)创建数据窗,创建数据窗,DFW是与VB一同发行的一个插件,用此插件用户只需选择一个数据库和数据表,DFW即自动为用户生成具有对此数据表进行增、删、改、浏览功能的窗体。用户可在此基础上进行修改,使之符合自己的需要。即:DFW是一种快速原型开发或简单应用程序的很好的工具。使用使用DFWDFW创建数据窗体的大致步骤为创建数据窗体的大致步骤为:VB窗口窗口外接程序数据库窗体向导Access 数据库名(JXGL.mdb)根据提示(下一步)完成此操作,显示结果如下:,显示结果如下:创建数据库应用程序 创建数据窗体创建数据窗体DFW生 成 的 课程数据窗体北航可靠性工程研究所 2005,软件技术基础创建数据库应用程序ADO数据控件ADOADO数据控件数据控件(Adodc)控件表格控件表格(DataGrid)与数据源连接与数据源连接