1、对象-关系数据库及其语言2008.09目录n对象-关系数据库的兴起n关系数据库的弱点n对象-关系数据库的兴起n对象-关系数据模型及SQL:1999n背景n标准发展过程nSQL:1999内容1.1 关系数据库的弱点(关系数据库的弱点(1)n自20世纪80年代以来,关系数据库管理系统(RDBMS)一直是数据库管理系统(DBMS)的主流,其在数据库产品市场中一直占据统治地位。RDBMS的优越性主要体现在:n关系数据模型(relational data model)对传统的结构化数据(structured data)提供了简单、有效的建模(modeling)与表示(representation)机制;
2、nSQL语言以说明性(declarative)的联想式访问(associative access)方式提供了简便和国际标准的数据查询与操纵机制;nRDBMS提供了完备、高效的服务设施,包括索引和存储(indexing&storage)、查询优化(query optimization)、事务管理(transaction management)、安全(security)、完整性(integrity)、触发子(triggers)等;nRDBMS产品具有广泛的工业基础和完善厂商支持。1.1 关系数据库的弱点(关系数据库的弱点(2)n但是,随着数据管理技术应用的拓宽与深入,关系数据库也逐步暴露其弱点,主
3、要表现在:n有限的数据类型和刻板的数据结构;n缺少不依赖于属性值的、全系统唯一标识符(类似于OID);n不支持用户自定义的或系统可扩充的函数或运算。n以上弱点的根源在于关系数据模型(relational data model)。1.2 对象对象-关系数据库的兴起关系数据库的兴起n为克服关系数据库(源于关系数据模型)的弱点,20世纪80年代开始,研究界就对关系数据库后的下一代数据库问题进行探讨,研究重点集中在数据模型上。有代表性的数据模型有:n非第一范式(non-first normal form,NF2)关系数据模型n语义(semantic)数据模型n面向对象(object-oriented,
4、OO)数据模型n对象-关系(object-relational,OR)数据模型 1.2 对象对象-关系数据库的兴起关系数据库的兴起n面向对象和对象-关系数据模型对数据库工业的影响最大。n(新兴的)厂商推出了对象数据库管理系统(ODBMS)产品,但由于诸多原因(见教材),其并未成为替代RDBMS的主流产品(mainstream products);主要大厂商(e.g.,Oracle,IBM,Microsoft)着眼于对传统的关系数据库进行面向对象扩充,推出了对象-关系数据库管理系统(ORDBMS)产品,成为支配当前数据库市场的主流产品。n工业和标准化组织(e.g.,ISO&ANSI)已制定ORD
5、BMS数据模型及其数据库语言(SQL3/SQL:1999)的国际标准。2.对象-关系数据模型及SQL:1999n2.1 背景背景 BackgroundnSQL:1999(formerly known as SQL3,also called Object-Oriented SQL)is a database language for Object-Relational DBMS,e.g.,Oracle 8i/9i,Informix Universal Server,IBMs DB2 Universal Database,and Cloudscapes Cloudscape,etc.2.对象-关系
6、数据模型及SQL:19992.2 标准发展过程 Standards Development ProcessnSQL法定标准化组织n美国:ANSI/NCITS H2(以前X3H2);n国际:ISO/IEC JTC 1nSQL标准发展过程n(SQL1):SQL-86/SQL-87 SQL-89(minor enhancement)(by ANSI/X3H2,USA)nSQL2:SQL-92(by ISO&ANSI)n(SQL3):SQL:1999(by ISO&ANSI)n nNext steps?2.3 SQL:1999内容nHere is not a complete feature set
7、of SQL:1999,just new features to SQL2.n划分成“关系特性”与“面向对象特性”两部分。PART I 关系特性 Relational Features n新数据类型 New Data Typesn新谓词 New Predicatesn新语义 New Semantics n增强的安全机制 Enhanced Securityn主动数据库 Active DatabasePART I 关系特性 Relational Featuresn新数据类型 New Data Typesn4 new data types or related facilities.(other:U
8、DTs O-O features)n(1)大对象 LARGE OBJECT(LOB)n不允许用作PK or UNIQUE,FK;n不允许进行除=外的比较运算;n不允许用于Group By or Order By 子句中;n客户端类型LOB locator(二进制唯一值),作为DB中LOB值的替身,避免大量Clients端-DB Server端的传输代价,可用于如SUBSTRING等操作:LOB ValueLOB LocatorDB ServerClientsPART I 关系特性 Relational Featuresn新数据类型 New Data Typesn(2)布尔布尔BOOLEANna
9、llows SQL to directly record truth values:true,false,and unknown;nallows SQL to express complex combinations of predicates,e.g.:WHERE COL1 COL2 AND COL3=COL4 OR UNIQUE(COL6)IS NOT FALSEPART I 关系特性 Relational Featuresn新数据类型 New Data Typesn(3)数组与行数组与行ARRAY&ROWnARRAY&ROW are composite types,n WEEKDAYS
10、VARCHAR(10)ARRAY 7n n CREATE TABLE employee(EMP_ID INTEGER,NAME ROW(GIVEN VARCHAR(30),FAMILY VARCHAR(30),ADDRESS ROW(STREET VARCHAR(50),CITY VARCHAR(30),STATE CHAR(2),SALARY REAL )n n SELECT E.NAME.FAMILY WHERE employee E PART I 关系特性 Relational Featuresn新数据类型 New Data Typesn(3)数组与行数组与行ARRAY&ROWnQUES
11、TION:they violate the First Normal Form(1NF)condition?n可认为不是,”decomposable”data types.PART I 关系特性 Relational Featuresn新数据类型 New Data Typesn(4)DISTINCT types,a data type-related facility n不同类型的属性(值)不能在表达式中运算,除非用函数CAST()明确转换。n不允许 WHERE MY_SHOE_SIZE MY_IQSET MY_IQ=MY_IQ*2n允许 WHERE MY_SHOE_SIZE CAST(MY_
12、IQ AS SHOE_SIZE)SET MY_IQ=MY_IQ*CAST(2 AS IQ)PART I 关系特性 Relational Featuresn新数据类型 New Data Typesn(5)User_defined types(UDTs):见O-O features PART I 关系特性 Relational Features n新数据类型 New Data Typesn新谓词 New Predicatesn新语义 New Semantics n增强的安全机制 Enhanced Securityn主动数据库 Active DatabasePART I 关系特性 Relationa
13、l Featuresn新谓词 New Predicatesn3 new predicates.(1 predicate 见O-O features).n(1)SIMILAR TOn先前SQL标准仅提供字符串的:n简单比较,e.g.=or n基本的模式匹配:LIKE 如:WHERE NAME LIKE%SMIT_n新SQL标准提供:nUNIX风格的正则表达式模式匹配:SIMILAR TOn如:WHERE NAME SIMILAR TO(SQL-(86|89|92|99)|(SQL(1|2|3)PART I 关系特性 Relational Featuresn新谓词 New Predicatesn3
14、 new predicates.n(2)DISTINCTn有点像原来的有点像原来的UNIQUE谓词,但有较大的区别:两个谓词,但有较大的区别:两个NULL值满足值满足UNIQUE,但不满足,但不满足DISTINCT。PART I 关系特性 Relational Features n新数据类型 New Data Typesn新谓词 New Predicatesn新语义 New Semantics n增强的安全机制 Enhanced Securityn主动数据库 Active DatabasePART I 关系特性 Relational Featuresn新语义 New Semanticsn(1)
15、扩大了可更新视图(updatable view)的范围(取决于函数依赖)n(2)提供了递归查询(recursive query)n方法:Step 1)写出查询表达式,并赋予一个名称;Step 2)在另一查询表达式中调用这个查询名称 如:WHERE RECURSIVE Q1 AS SELECT FROM WHERE,Q2 AS SELECT FROM WHERE SELECT FROM Q1,Q2 WHERE PART I 关系特性 Relational Featuresn新语义 New Semanticsn(3)Locator除了可代理LOB值外,还可代理:ARRAY值及UDT值。n(4)增设
16、了savepoint机制:nROLLBACK TO SAVEPOINT;/撤销一个“子事务”操作nRELEASE SAVEPOINT;/提交一个“子事务”操作PART I 关系特性 Relational Features n新数据类型 New Data Typesn新谓词 New Predicatesn新语义 New Semantics n增强的安全机制 Enhanced Securityn主动数据库 Active DatabasePART I 关系特性 Relational Featuresn增强的安全机制 n增加了角色(role)机制(RDBMS产品中已广泛实现):n见角色机制课件Priv
17、ilegesAuthorization_IDsRolesRolesPART I 关系特性 Relational Features n新数据类型 New Data Typesn新谓词 New Predicatesn新语义 New Semantics n增强的安全机制 Enhanced Securityn主动数据库 Active DatabasePART I 关系特性 Relational Featuresn主动数据库n增加了触发器(trigger)机制(RDBMS产品中已广泛实现),是ECA rules。用于:n记日志(logging)n维护完整性约束(Integrity Constraints
18、)n实现更为复杂的业务规则(Bussiness Rules)n见主动数据库课件PART II 面向对象特性 Object Orientationn可调用例程可调用例程 n结构化用户定义类型结构化用户定义类型 Structured User-Defined Types(UTDs)n函数与方法的异同函数与方法的异同 Functions vs Methods n函数符号与点符号函数符号与点符号 Functional and Dot Notationsn完全的对象特性完全的对象特性ObjectsPART II 面向对象特性 Object Orientationn可调用例程可调用例程n一些一些O-O特性
19、已在特性已在1996年发布的年发布的SQL持久存储模块持久存储模块(SQL/PSM)中提供,)中提供,e.g.SQL语句中可调用函数或语句中可调用函数或过程过程:nSQL-invoked functionsnSQL-invoked proceduresn这次新增了方法调用:这次新增了方法调用:SQL-invoked methodsn函数、过程与方法通称为可调用例程:函数、过程与方法通称为可调用例程:SQL-invoked routinesPART II 面向对象特性 Object Orientationn可调用例程可调用例程 n结构化用户定义类型结构化用户定义类型 Structured Use
20、r-Defined Types(UTDs)n函数与方法的异同函数与方法的异同 Functions vs Methods n函数符号与点符号函数符号与点符号 Functional and Dot Notationsn完全的对象特性完全的对象特性ObjectsPART II 面向对象特性 Object Orientationn结构化用户定义类型结构化用户定义类型 UTDnUser_Defined Types(UDTs)nDISTINCT:based on SQLs built-in typesnStructured UDTs:based on any SQL types,including SQL
21、s built-in types and Structured UDTsn例子:CREATE TYPE emp_type UNDER person_type AS(EMP_ID INTEGER,SALARY REAL)INSTANTIABLE NOT FINAL REF(EMP_ID)INSTANCE METHODGIVE_RAISE (ABS_OR_PCT BOOLEAN,AMOUNT REAL)RETURNS REAL PART II 面向对象特性 Object Orientationn结构化用户定义类型结构化用户定义类型 UTDnCharacteristics of Structured
22、 UDTs:nhave 1n attributes,each of which can be any SQL type(built-in types like INTEGER,collection types like ARRAY,or other structured UDTs nested as deeply as desired)nTheir behaviors are provided through methods,functions,and proceduresnTheir attributes are encapsulated through the use of system-
23、generated observer&mutator functions(“get”,“set”),which cannot be overloaded;other functions&methods can be overloadednComparisons of their values are done only through user-defined functions(UDFs)PART II 面向对象特性 Object Orientationn结构化用户定义类型结构化用户定义类型 UTDnCharacteristics of Structured UDTs:nThey may p
24、articipate in“type hierarchies”:n注注:nSQL:1999的类型层次是单继承的(single inheritance),而不是多继承的(multiple inheritance)nSQL:1999的类型定义器可指定类型是否可实例化(instantiable),即:类型的值可被创建nSQL:1999结构类型的值可出现的地方(如一个基表的列中)可出现其子类型的值(称可替代性Substitutability)nSQL:1999不支持类型封装级别程度(encapsulation level/degree),而一些OOPL(如C+)则允许:PUBLIC、PRIVATE、P
25、ROTECTEDsupertypesubtypesPART II 面向对象特性 Object Orientationn可调用例程可调用例程 n结构化用户定义类型结构化用户定义类型 Structured User-Defined Types(UTDs)n函数与方法的异同函数与方法的异同 Functions vs Methods n函数符号与点符号函数符号与点符号 Functional and Dot Notationsn完全的对象特性完全的对象特性ObjectsPART II 面向对象特性 Object Orientationn函数与方法的异同函数与方法的异同n不同之处:(简言之:一个不同之处:
26、(简言之:一个M是一个带有某些限制和增是一个带有某些限制和增强的强的F)nM被紧密绑定到一个单一UDT;F不是这样。nM所绑定的UDT(变元类型)是一个对此M特异的(如,可识别或区分的)数据类型;F的任何变元均是非特异的。nF可以是多态的,但一个具体(i.e.,特定)的F是在编译时就被选定的;M也可以是多态的,但其特异变元的大多数具体类型可在运行时确定,并允许推迟到执行时才选定具体的调用方法(当然,其他变元是基于其申明的类型在编译时消解的)nM必须存储于绑定它的结构化类型定义所存储的模式中;F则并不限定模式 PART II 面向对象特性 Object Orientationn函数与方法的异同函
27、数与方法的异同n相同之处:相同之处:nF&M均既可用均既可用SQL/PSM的计算完备的计算完备(computationally-complete)语句来定义,又可用)语句来定义,又可用传统的编程语言(如:传统的编程语言(如:JAVA)来定义。)来定义。PART II 面向对象特性 Object Orientationn可调用例程可调用例程 n结构化用户定义类型结构化用户定义类型 Structured User-Defined Types(UTDs)n函数与方法的异同函数与方法的异同 Functions vs Methods n函数符号与点符号函数符号与点符号 Functional and Do
28、t Notationsn完全的对象特性完全的对象特性ObjectsPART II 面向对象特性 Object Orientationn函数符号与点符号函数符号与点符号nUDT的属性值的访问可使用两种运算符号实现:函数和点。的属性值的访问可使用两种运算符号实现:函数和点。它们是语法上等价的变种。它们是语法上等价的变种。n大多数情况下“点符号”更自然。e.g.,WHERE emp.salary 10000n少数情况下“函数符号”更自然。e.g.,WHERE salary(emp)10000/设salary是定义在emp所属类型上的函数n在此场合,Methods稍欠灵活仅“点符号”可用于方法调用至少
29、为指定其一个特异变元(值)时。如:若salary是其绑定类型为employee的方法,且:emp:employee /其中emp为列,employee为类型 则方法salary可这样调用:emp.salary 当然,employee中定义的方法give_raise可这样调用(“点符号”与“函数符号”相结合):emp.give_raise(amount)PART II 面向对象特性 Object Orientationn可调用例程可调用例程 n结构化用户定义类型结构化用户定义类型 Structured User-Defined Types(UTDs)n函数与方法的异同函数与方法的异同 Funct
30、ions vs Methods n函数符号与点符号函数符号与点符号 Functional and Dot Notationsn完全的对象特性完全的对象特性 ObjectsPART II 面向对象特性 Object Orientationn完全的对象特性完全的对象特性nTyped table:nObject,its full features are embodied via typed tables,each RowID in a typed table behaves as an OID of an objectnREF type:nIts value refers to an RowID
31、in a typed table,or is NULL(means“dangling reference”)nAll REF types are“scoped”,使得编译时被引用的表是可确定的nAccess attributes of a structured type value:n“Following a reference”,e.g.,emp.manager-last_name (i.e.,via a pointer notation(-)对象-关系数据库及其语言n注:详细内容请进一步参阅英文文献:nSQL 1999,Formerly Known as SQL3.(ACM SIGMOD Record,28(1),1999).