,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,9,.1 数据库访问概述,9,.2 嵌入式SQL,第9章,数据库访问与系统建模,9,.3 数据库接口技术,9,.4 数据库系统建模方法,9.1 数据库访问概述9.2 嵌入式SQL第9章 数据库,9,.1 数据库访问概述,应用程序与SQL数据库联系的基本方式有:,(1)嵌入式SQL或者动态SQL,(2)数据库接口,(3)SQL模块,借助高级语言的功能实现过程化控制与高级计算。,通过应用程序编程接口(API)函数中的参数-SQL语句,来使用数据库。,利用SQL扩展过程包的功能编程,调用程序模块,来操作数据库。SQL模块是对SQL语句的过程化扩展,常用于数据库服务器的编程。,9.1 数据库访问概述应用程序与SQL数据库联系的基本方式,9.2 嵌入式 SQL,一、概述,SQL分:,交互式,嵌入式,为何引入嵌入式:,过程化应用,复杂数据处理,主语言作用:,负责控制流程及处理操纵结果。,嵌入式 SQL作用:,负责操纵DB。,两种实现方法:,预编译,扩充、修改主语言编译程序使之能处理SQL,预编译方法:,预处理程序,宿主语言语句+函数调用,宿主语言编译程序,目标程序,连接程序,可执行程序,OS,运行结果,宿主语言语句+嵌入式SQL语句,9.2 嵌入式 SQL一、概述预编译方法:预处理程序,9.2 嵌入式 SQL,二、嵌入式SQL的工作原理,1.嵌入式SQL与主语言的接口,SQL语句:面向集合,主语言语句:过程性、记录式,(1)状态变量SQLSTATE,描述系统当前状态和运行情况,0,一般类别,特殊子类,SQLSTATE 的格式,在每一个SQL语句执行之后,DBMS将描述当前工作状态和运行环境的一个状态值放入SQLSTATE中。,(2)主变量,SQL语句中使用的主语言程序变量称为主变量。,输入主变量,由应用程序对其赋值,SQL语句引用。,输出主变量,由SQL语句对其赋值或置状态,返应用程序。,9.2 嵌入式 SQL二、嵌入式SQL的工作原理 0,9.2 嵌入式 SQL,(3)游标(Cursor),游标,是系统开设的一个数据缓冲区,存放SQL语句的执行结果。,作用:,用户可以通过游标获取纪录,并赋给主变量,交主语言处理。,游标名,.,.,.,一条纪录,主变量,游标指针,SQL查询结果,9.2 嵌入式 SQL(3)游标(Cursor)游标名,9.2 嵌入式 SQL,2、嵌入式SQL需解决的问题:,(1)如何区分SQL与主语言语句?,前缀加EXEC SQL,结束处用ENDEXEC(或用分号),例:嵌入到C程序中:,EXEC SQL,;,嵌入到Java程序中:,#SQL,;,(2)如何区分主变量与SQL的列变量?,主变量前加冒号。如:,:Cname,(3)主变量与SQL的列变量如何交互、转换?,需要有一种机制:能将SQL中的集合量逐个送入主变量内,供主程序使用。,方法:用一组游标语句。,9.2 嵌入式 SQL2、嵌入式SQL需解决的问题:(3)主,9.2 嵌入式 SQL,3、SQL语句与主语言间的通信:,1)主语言向SQL语句提供参数;,2)向主语言传递SQL的执行状态;,3)将SQL操作结果交主语言进一步处理,嵌入式SQL工作原理:,主语言程序,SQL语句,游标,主变量,SQL,状态,执行参数,执行状态,结果状态,9.2 嵌入式 SQL3、SQL语句与主语言间的通信:嵌入,9.2 嵌入式 SQL,三、嵌入式SQL的程序组成,嵌入式 SQL语句可分为:,可执行语句,(数据定义、控制、操纵),说明性语句,(说明变量、游标),程序的主要部分,(1)DECLARE段(用于定义主变量),格式:,EXEC SQL BEGIN DECLARE SECTION;,/主变量说明,EXEC SQL END DECLARE SECTION;,(2)CONNECT 语句(建立SQL连接),格式:,EXEC SQL CONNECT TO USER;,9.2 嵌入式 SQL三、嵌入式SQL的程序组成,9.2 嵌入式 SQL,(3)WHENEVER语句,使用WHENEVER语句可以简化每条嵌入式SQL语句后编写检查SQLSTATE值的程序。,WHENEVER语句通知预编译程序如何处理三种异常:,WHENEVER SQLERROR,:通知预编译程序产生处理错误的代码(SQLSTATE,ID,Name:,Address:,Hobbies0.:,INT,CHAR(20),CHAR(50),CHAR(10),ChangeAddr(NewAddr:CHAR(50),AddHobby(Hobby:CHAR(10),STUDENT,ID,Name,Address:,GPA:,StartDate:,INT,CHAR(20),CHAR(50),DEC(3,1),DATE,ChangeAddr(NewAddr:CHAR(50),SetStartDate(Date:DATE),self.GPA 80.0,四、UML的E-R建模UML是进行系统分析和设计的重要工具,,四、UML的E-R建模,2.在UML中表示联系,在UML中,类之间的联系被称为关联,而联系类型被称为关联类型。UML图为关联类型附加了比在E-R图中更丰富的语义。,(1)不带属性的关联,EMPLOYEE,Subordinate,R,EPORTS,T,O,Supervisor,PROFESSOR,DE,PARTMENT,WORKSIN,PROJECT,PART,S,UPPLIER,SOLD,Customer,Product,(b),(c),UML类的关联示例,(a),关联,四、UML的E-R建模2.在UML中表示联系EMPLOYE,四、UML的E-R建模,(2)带属性的关联-关联类,关联类也用矩形表示,且含该联系上的属性,但用一条虚线将它连到相关的联系上。关联类和联系的名称必须相关。,EMPLOYEE,Subordinate,REPORTSTO,Supervisor,PROFESSOR,DEPARTMENT,WORKSIN,(b),WORKSIN,Since:DATE,(c),PROJECT,PART,SUPPLIER,SOLD,Customer,Product,SOLD,Date:DATE,Price:DEC(7,2),(a),关联类,关联类,四、UML的E-R建模(2)带属性的关联-关联类EMPL,四、UML的E-R建模,3.UML中的简单约束,(1)关联中的码约束,主码约束、外码约束,允许:用,帮助理解UML中约束。,(2)重复度约束(multiplicity constraint),UML 中类之间的联系双方线上的数字指定了参与该联系的可能实体,(对象),的数量,称为“,重复度约束,”。,关联到类A和类B的角色R上的一个重复度约束,是附加到R上的形如n.m的范围定义,它给出了类A可关联到类B实体数目的下限和上限。,简写范围*的意思是:0.*,范围1的意思是:1.1。,注意:,UML图中重复度约束与E-R图中基数表示形式相似,,但位置相反。,四、UML的E-R建模3.UML中的简单约束,3.UML 中的简单约束:,主码约束、外码约束,WORKSIN,0.,1,SOLD,Customer,Product,PROFESSOR,ProfId:INT,DEPARTMENT,DeptId:INT,WORKSIN,ProfId:INT,Since:DATE,PROJECT,ProjId:INT,PART,PartId:INT,SOLD,ProjId:INT,PartId:INT,Date:DATE,Price:DEC(7,2),SUPPLIER,SuppId:INT,(a),(b),Key:Customer,product;Date,重复度约束,注释:,说明约束,3.UML 中的简单约束:主码约束、外码约束WORKSIN,五、UML的高级建模,1类层次,在UML中,父类与子类联系(Is A联系)被称为一般联系,用一个子类指向一个父类的实心箭头表示。,PERSON,ID:INT,Name:CHAR(20),Address:CHAR(50),STUDENT,GPA:DEC(3,1),StartDate:DATE,STUDENT,GPA:DEC(3,1),StartDate:DATE,freshman,Sophomore,Major:CHAR(3),JUNIOR,Major:CHAR(3),SENIOR,Major:CHAR(3),Advisor:CHAR(20),complete,disjoint,(a),(b),覆盖,不相交约束,五、UML的高级建模1类层次PERSONSTUDENTST,2依赖关系-,Part-of联系,Part-of联系是需要依赖的两个实体类型之间的一种依赖关系。UML 分为两种形式的实体类型间的依赖关系。,在UML中,非独占part-of联系(其部分可以独立存在)被称为,聚合,。,如:教室与座椅。,UML聚合用特殊的符号-一条带有中空菱形的线表示,UML中聚合是在聚合方用中空菱形表示。与UML中的聚合相伴随的常是重复度约束。,例:,独占part-of联系在UML中被称为,复合,。,如:会议与参会者,复合可以被看作一种特殊的聚合,用一端带有实菱形的线表示。,例:,2依赖关系-Part-of联系Part-of联系是需要依,3.E-R模型与UML表示,1)E-R模型设计,E-R模型的基本组件和UML的非常相似,UML类图向关系模型的转换与E-R图方法相同,主要问题是正确转换图中的约束。,E-R模型的UML表示例:,【例】,有价证证券公司是一个经纪公司,它为客户买卖股票。主要参与者是经纪人和客户。,该公司在不同的城市地点设有营业厅,每个营业厅有一个主管、多个经纪人;每个经纪人在营业厅之一工作,一个经纪人可以是其所在的一个营业厅的主管。,一个客户可以有多个帐户,且任何帐户可有多个拥有者。,每个帐户只能有一个经纪人管理,一个经纪人可以管理多个帐户,但在,一个给定营业厅中,一个客户不能有多个帐户,。,3.E-R模型与UML表示1)E-R模型设计,客户/经纪人信息的E-R图,Client,WorkPhone#,HASACCOUNT,Account#,DateOpened,Status,ACCOUNT,IsHANDLEDBY,Phone#,Office,Address,WORKSIN,Since,Broker,MANAGED,Date,PhoneExtension#,n,n,1,1,1,1,1,m,n,Key:Client,office,客户/经纪人信息的E-R图ClientWorkPhone#H,2)UML表示,HASACCOUNT,Client Account,CLIENT,WorkPhone#,Account,Account#,DateOpened,Status,office,Phone#,Address,BROKER,PhoneExtensions 1.*,Managed,Date,WORKSIN,Since,MANAGEDBY,WORKSIN,1 *,Office,1 1,ISHANDLEDBY,Key:Client,office,*,*,0.1 0.1,2)UML表示HASACCOUNTClient,3)其他UML表示,UML表示的其他部分对于数据库应用系统的建模也是有用的。如:,用UML用例图来描述该应用系统的用户交互与系统功能;,用UML顺序图来构建用例的动态方面;,用UML状态图来描述该系统中不同对象的行为;,UML活动图可用于说明行为是如何协同的;,协作图可用于描述组成一个复杂系统的不同对象之间的交互,即消息交换;,还需要有构件图、部署图等更多的内容来描述整个系统的构建。,3)其他UML表示UML表示的其他部分对于数据库应用系统的建,第9章,数据库访问技术,要点:,1.,数据库访问,-,嵌入式 SQL/动态SQL,2.数据库访问接口,开放式接口-