- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
子表和超表 简单来说就是表与表之间的继承。 操作时是对表和他的所有子表进行操作。 添加ONLY可以实现对单独表的操作。 进行映射后的表 对象 属性1 属性2 属性3 OID1 OID2 OID3 OID4 整个表为类 Primary key 再次介绍OID 针对于对象,需要能够唯一识别它们的标识符。在关系数据库中,对应的概念称之为键(Key);在面向对象的技术中,称之为OID(Object ID)。OID在对象模型中的典型实现是作为完整的对象,而在关系模型中,则作为整数来实现,或者对于较大的应用中,以若干整数来实现。 关系数据库中实现继承 在关系数据库中,一个关键问题是表主键的唯一性策略的选取。适当的方案能优化继承、组合及对象之间关系的实现。 考虑类的继承问题。在关系数据库中保存对象时,基本上问题归结于“如何在数据库中组织被继承的属性?”该问题的不同解决方案会影响到整个设计。 关系数据库中实现继承的方法 关系数据库中实现继承的方法可划分为三类: 1.? 将整个类层次映射为单个数据库表。 2.? 每个具体子类映射成单个数据库表。 3.? 每个类均映射为数据库表。 1.? 将整个类层次映射为单个数据库表。 类层次的所有类映射为单个的数据库表,表中保存所有类(基类、子类)的属性。 优点: 实现简单。 支持多态——对象角色发生变化,或存在多重角色时。 报表操作实现简单:表中包含了所有信息。 缺点: 增加类层次中的耦合。类层次中任何类的属性的增加都会导致表的变更;某个子类属性的修改会影响到整个层次结构,而不仅仅是该子类。 浪费了大量的数据库空间。 可能需要指明具体的角色。 2每个具体子类映射成单个数据库表。 数据库表包括自身的属性和继承的属性,每个具体的子类包含各自的OID。抽象的基类不参与映射。 优点: 报表操作实现简单:表中包含了具体子类的所有信息。 缺点: 类的修改会导致相对应的表及其子类所对应表的更改。 角色的更改会造成ID的重新赋值(因为不同子类的ID可能重复)。 难以在支持多重角色时,保持数据的完整性。 3.? 每个类均映射为数据库表。(子表与超表) 为每一个类创建数据库表,表中包含特定于该类的属性和OID。 优点: 与面向对象的概念的一致性最好。对多态的支持最好,对于对象所可能充当的角色仅需要在相应的表中保存记录。 易于修改基类和增加新的类。 缺点: 数据库中存在大量的表。 访问数据的时间较长。 对报表的支持较差,除非定义视图。 关系映射(参照类型) 不仅仅是对象需要被映射至数据库,对象之间的关系也需要映射至数据库。对象之间的关系可分为:继承(Inheritance),关联(association),聚集(aggregation),组合(composition)。要有效地映射关系,必须理解它们之间的不同点,如何实现一般的关系以及如何实现特定的多对多关系。 但是由于对象之间的关系接触最多的是继承,以讲解,其他的关系主要讲以下三点。 关系映射(续) 关系数据库之间的关系实现主要靠外键。 主要是三种 一对一 一对多 多对多 一对一 引入外键,类似于关系数据库。 可选的1对强制的1既为单向的,外键只能放在其中一边。 其他的一对一,外键可以放在任意一边。 但是需要注意不能在两边都设置对方的主键。这样会增加冗余度。 一对多 与关系数据库一样,外键放置在多的一方,既引用的一方。 多对多 关系数据库中需要把多对多分解为多个一对多。而这里需要在添加另一个表既是关联表,它是一种数据实体,唯一目标是在关系数据库中维护两个或多个表之间的关联。 引用完整性及关系约束检查 对象关系数据库 张志远、孟禹彤、仲逸凡、覃夏怡、郭晨、徐昊。 对象数据库产生的原因 1.关系数据库在处理复杂关系的时候很笨重,往往需要很多个表来表示关系。 其主要原因是因为关系模式不能很好的描述客观的事物,而且缺乏对复杂数据类型的支持。 2抗阻失配(Impedance mismatch) 3数据不能与行为相关联。也即是这有数据不能有方法(操作)。 阻抗失配(Impedance mismatch) SQL语言不是图灵完备语言。一般来说一门语言只要有if判断,递归或循环结构以及最基本的赋值能力和四则运算就是图灵完备的了。 由于对象模型和关系模型之间缺乏固有的“亲和力”从而产生面向对象程序设计向关系数据库存取数据表示方式不一致的问题。 由于要解决阻抗失配,从而产生了对象数据库的概念。 但是,由于对象关系数据库只是在原有的关系数据库的基础上加入了面
文档评论(0)