资源描述:
《数据库基础与应用 第2版 王珊 李盛恩 第10章_第10章 对象关系数据库》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章对象关系数据库10.1关系模型的不足10.2面向对象数据模型10.3对象关系数据模型10.4小结10.1关系模型的不足(1)数据类型关系模型的第一范式要求属性只能是简单数据类型,不能是结构化的。如果属性是结构化的,就必须进行技术处理后,才能作为关系的属性。如下表,其中的工资和扣除两项,就必须经过处理。编号姓名职称工资扣除实发基本工龄职务房租水电86051陈平讲师120550801601201055………………………表10.1工资单10.1关系模型的不足(1)数据类型关系模型只允许单值,不允许多值,但是像集合或者是序列在实际应用中经常会遇到。例如,通讯录表,生活中一个
2、人会有多个电话。为了处理这种情况,根据关系规范化理论,将表进行分解,得到两个表:姓名电话号码王林8636xxxx(H),8797xxxx(O),139xxxxx001张大民133xxxxx125,138xxxxx878表10.2通讯录10.1关系模型的不足CREATETABLEPerson(PIDintIDENTITY(1,1),Pnamechar(10)PRIMARYKEY(PID))CREATETABLEPhone(PIDintPRIMARYKEY,PhoneNumbervarchar(20)FOREIGNKEY(PID)REFERENCESPerson(PID))10
3、.1关系模型的不足Person表存放联系人的姓名,并增加了一个关键字;Phone表存储联系人的电话号码,一个电话号码占用一个元组,两个表通过PID属性进行连接,就可以得到每个联系人的所有电话号码.这种处理方法一是不自然,二是需要对两个表做连接操作,而连接操作的代价比较高。通过这两个例子,我们可以看出关系模型在支持复杂数据类型方面能力不足。10.1关系模型的不足(2)IsA层次E-R模型支持IsA层次,由于父实体和子实体的属性可能存在不同,只用一个关系是无法同时容纳父实体和子实体的,一般采用拆分的办法用多个关系分别表示父实体和子实体,通过编写适当的程序维护父实体和子实体之间的
4、关系。在8.3.3节我们给出过产品的例子。产品是父实体,台式电脑、笔记本电脑和打印机是子实体,分别存放在Product、PC、Laptop和Printer表之中。10.1关系模型的不足每个父实体一定会出现在某个子实体中,每个子实体也会出现在父实体中。分别用Product、PC、Laptop和Printer表示之,三个表的关系模式如下:Product(model,maker,type)PC(model,speed,ram,hd,cd,price)Laptop(model,speed,ram,hd,screen,price)Printer(model,color,type,pr
5、ice)为了保证每个子实体都出现在Product表中,可以在子实体表上施加引用完整性限制,由DBMS加以维护。10.1关系模型的不足(3)阻抗失配问题SQL语言不具有图灵机的计算能力,不能用于解决复杂的应用问题,需要借助于宿主语言,如C和Java,编写数据库应用程序。这种处理方式存在若干问题。例如,要在SQL环境和宿主语言环境中移动数据;解决不同数据类型之间的转换问题;SQL语言是面向集合的,查询的结果是元组的集合,而C和Java等一次只能处理一个记录,为了解决此问题,需要引入游标。所有这些都会增加事务的执行时间,降低系统的事务吞吐率。10.2面向对象数据模型10.2.1面
6、向对象的基本概念(1)类型系统(typesystem)面向对象语言提供原子类型和构造类型两者类型。原子类型包括String、int、real等,它们是类型系统的基础。构造类型是用户使用语言提供的构造器自我定义的。例如学生的信息StructStudent{charSno[7];charSname[8];charSsex[2];shortSage;charSdept[20];}10.2面向对象数据模型(2)类(class)和对象(object)类与E-R模型中的实体型相似,类有一组属性,同时还有一组方法,访问类的属性必须要通过类的方法。对象是类的实例,给类的属性赋予合法的值后,
7、就得到了一个对象。对象和类的关系如同实体和实体型的关系。某一时刻的类的对象集合叫做类的外延(extent)。10.2面向对象数据模型(3)对象标识OID(ObjectIDentifier)面向对象语言使用对象标识区分不同的对象。每个对象有且仅有一个OID,对象被生成时,系统就赋予它一个在系统内唯一的OID,在对象存续期间,OID是不变的。对象可以被抽象为二元组,value是对象的值。可能有两个不同的对象,它们有相同的value,但是各自的OID一定不同。与关系模型相对照,OID相当于码。码与元