软件系统数据库设计中的对象关系映射(OR Mapping)设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4)当为访问数据寻找一种合适的方法时,这种不匹配就 成为了主要矛盾: 使用对象模型,常常通过对象之间的关系来进行访问; 而根据关系理论,则通过表的连接、行列的复制来实 施数据的存取。 (5)对象模型和关系模型不一致的示例 在电信BOSS模型中有一个概念“销售品”——商品、 商品包、增值业务和营销资源都可以是销售品,对应到 数据库表的设计,则演变成为商品表、商品包表、增值 业务表和营销资源表。 那么,销售品表需不需要存在呢?有多大意义? 演变到对象设计,销售品对象代表着重大意义,它是 对商品、商品包、增值业务和营销资源等对象共用业务 规则的抽象,承载着大量的行为和约束。
6、解决对象模型和关系模型不一致的基本方法 (1)它们最终在存储模型中还是能统一,这要依赖于ORM (2)对象的继承关系可以表达为三种不同的关系存储模型 (3)对象的组合和聚合可以用主外键关联的表来存储,它 可以表达1:n,n:1和n:m的关系 (4)对象的依赖关系和存储无关,所以不需要ORM
7、在关系数据库中如何实现对象的继承关系 (1)关系数据库中实现继承的方法 整个类层次结构使用一个数据实体 ---- 将整个类层次 映射为单个数据库表 每个具体类使用一个数据实体 -----每个具体子类映射 成单个数据库表,但抽象基类不参与映射。 每个类使用一个数据实体---每个类均映射为数据库表 (2)对比映射继承的各种办法并总结
9、每个具体子类映射成单个数据库表
(1)优点:报表操作实现简单,因为 表中包含了具体子类的所有信息。 (2)缺点 类的修改会导致相对应的表及其 子类所对应表的更改 角色的更改会造成 ID 的重新赋值 (因为不同子类的ID可能重复) 难以在支持多重角色时,保持数 据的完整性
ห้องสมุดไป่ตู้ 10、每个类均映射为数据库表
4、O/R Mapping的一些基本规则 (1)类与数据库表之间不必须完全对应 (2)关于继承关系的映射问题及具体的实现方法 (3)对映射后的数据库表需要进行冗余控制调整以使其达 到合理的关系范式
5、基于3NF范式设计数据实体类 (1)满足第一范式的要求——每个持久对象映射一张表, 并且每个持久对象必须有一个主键属性。 (2)满足第二范式的要求 持久对象要有内聚性,不应该存在冗余的属性项,持 久对象之间的关系用外键关联。 (3)满足第三范式的要求 ——持久对象要有内聚性,无关 的属性项应该要独立出去并单独创建另一个持久对象。
软件系统数据库设计中的对象关系映射 (O/R Mapping)设计
软件系统数据库设计中的对象关系映射 (O/R Mapping)设计
在本讲您能了解如下内容 对象-关系的映射(O/R Mapping) O/R Mapping的一些基本规则 如何实现对象的继承关系 如何体现对象之间的关联关系
1、对象-关系映射——将关系数据库表和对象之间相关联 2、为什么要采用O/R Mapping技术 (1)对象模型和关系模型存在不一致性 主要是由于面向对象设计的机制与关系模型的不同, 造成了面向对象设计与关系数据库设计之间的不匹配。 (2)为什么会存在不一致性 OOD基于如耦合、聚合、封装等理论,而关系模型基于 数学原理; OO具有“继承”、“组合”、“聚合”和“依赖”等 关系,而在关系模型中则不存在这些关系 (3)不一致性所导致的后果 不同的理论基础导致了不同的优缺点,对象模型侧重 于使用包含数据和行为的对象来构建应用程序; 关系模型则主要针对于数据的存储。
您知道在UML中对这四 种关系的表示形式吗
由于对象之间的关系反映了具体的商业规则,因此将对 象映射到关系数据库时,必须保证对象之间的关系。
(2)在关系数据库中实现关联关系的基本思路 在关系数据库中主要是通过使用外键来实现关联关系。外 键允许将表中的某一行与其它表中的行相关联。 实现一对一或一对多关系,仅仅需要在表中加入另一个表 的主键
在ORMapping技术中不仅要解决对象在纵向方面的继承关 系需要被映射至数据库,对象之间在横向的的关联关系也需 要映射至数据库
(2)对象之间的关系总的可以分为
继承(Inheritance) 关联(association) 依赖(Dependency) 聚集(aggregation) 组合(composition)
12、各种关联关系的实现示例—请见文档 (1)“1对1”关联关系
(2)“1对多”关联关系
(3)“多对多”关联关 系
本讲的简要回顾
1、子曰:“学而不思则罔,思而不学则殆。” “学而时习之”
(1)优点
与面向对象的概念的一致性最好。对 多态的支持最好,对于对象所可能的 充当的角色仅需要在相应的表中保存 记录; 易于修改基类和增加新的类。
(2)缺点
数据库中存在大量的表 访问数据的时间较长 对报表的支持较差,除非定义视图
11、在数据库系统中如何体现对象之间的关联关系 (1)问题的背景
8、将整个类层次映射为单个数据库表的示例
(1)该方法的优点:实现简单并且支持多态--对象角色发生变 化,或存在多重角色时;报表操作实现简单,因为表中包含 了所有信息。 详细内容请见文档 (2)该方法的缺点 中的说明 增加类层次中的耦合,类层次中任何类的属性的增加会导 致表的变更 如果在某个子类属性的修改错误会影响到整个层次结构, 而不仅仅是该子类;同时也会浪费了大量的数据库空间。
您熟悉Hibernate中的 3、O/R Mapping的基本实现方式 Component 映射技术 吗 (1)属性映射成字段——类的属性映射至数据库字段
但要注意的是并不是类中的所有属性均是永久的。例
如,发票(Invoice)中的合计(grandTotal)属性可 能是用于计算而不需保存在数据库中。 另外,有时某个对象包含其它对象,如顾客 (Customer)中的Address属性(Address本身映射为 数据库表)。此时,属性映射成多个字段。 (2)类映射成表 类直接或间接地映射成表,但两者之间不完全一一对应