关系模型和对象模型的究竟匹配还是不匹配?
2011-12-05 19:31
288 查看
引用
第一范式:
1、内容相似的数据列必须消除(消除的办法就是再创建一个数据表来存放他们,建立关联关系)
2、必须为每一组相关数据分别创建一个表
3、每条数据记录必须用一个主键来标示
第二范式:
1、只要数据列里面的内容出现重复,就意味着应该把表拆分为多个表
2、拆分形成的表必须用外键关联起来。
第三范式:
1、与主键没有直接关系的数据列必须消除(消除的办法就是再创建一个表来存放他们)
这三大范式就像给ORM的人如何设计数据库写的指南:
引用
第一范式:
1、每个持久对象映射一张表
2、每个持久对象必须有一个主键
第二范式:
1、持久对象要有内聚性,冗余的内容拿出去,单独创建持久对象
2、持久对象之间的关系用外键关联
第三范式:
1、持久对象要有内聚性,无关的内容拿出去,单独创建持久对象
关系模型和对象模型是不是在存储概念上一致,就不用多说废话了。
说关系模型和对象模型“阻抗不匹配”,当然是有不匹配的地方,比方说对象模型当中特有的“继承”,“组合”,“聚合”,“依赖”的概念在关系模型当中是不存在的,但是这种模型的“阻抗不匹配”最终在存储模型是还是能够统一起来的,这就是ORM的作用:
1、对象的继承关系可以表达为三种不同的关系存储模型:整个继承数一张表;每个继承层次一张表;每个对象一张表
2、对象的组合和聚合可以用主外键关联的表来存储,它可以表达1:n,n:1和n:m的关系
3、对象的依赖关系和存储无关,所以不需要ORM做什么。
所以结论就是这样:
关系模型和对象模型存在概念上的阻抗不匹配,但是在关系数据库的存储模型上是一致的,无论你从关系模型的三大范式理论出发,还是从对象模型的ORM理论出发,最终一定会得到一致的数据库表设计。
第一范式:
1、内容相似的数据列必须消除(消除的办法就是再创建一个数据表来存放他们,建立关联关系)
2、必须为每一组相关数据分别创建一个表
3、每条数据记录必须用一个主键来标示
第二范式:
1、只要数据列里面的内容出现重复,就意味着应该把表拆分为多个表
2、拆分形成的表必须用外键关联起来。
第三范式:
1、与主键没有直接关系的数据列必须消除(消除的办法就是再创建一个表来存放他们)
这三大范式就像给ORM的人如何设计数据库写的指南:
引用
第一范式:
1、每个持久对象映射一张表
2、每个持久对象必须有一个主键
第二范式:
1、持久对象要有内聚性,冗余的内容拿出去,单独创建持久对象
2、持久对象之间的关系用外键关联
第三范式:
1、持久对象要有内聚性,无关的内容拿出去,单独创建持久对象
关系模型和对象模型是不是在存储概念上一致,就不用多说废话了。
说关系模型和对象模型“阻抗不匹配”,当然是有不匹配的地方,比方说对象模型当中特有的“继承”,“组合”,“聚合”,“依赖”的概念在关系模型当中是不存在的,但是这种模型的“阻抗不匹配”最终在存储模型是还是能够统一起来的,这就是ORM的作用:
1、对象的继承关系可以表达为三种不同的关系存储模型:整个继承数一张表;每个继承层次一张表;每个对象一张表
2、对象的组合和聚合可以用主外键关联的表来存储,它可以表达1:n,n:1和n:m的关系
3、对象的依赖关系和存储无关,所以不需要ORM做什么。
所以结论就是这样:
关系模型和对象模型存在概念上的阻抗不匹配,但是在关系数据库的存储模型上是一致的,无论你从关系模型的三大范式理论出发,还是从对象模型的ORM理论出发,最终一定会得到一致的数据库表设计。
相关文章推荐
- 关系模型和对象模型的究竟匹配还是不匹配?
- 关系模型和对象模型的究竟匹配还是不匹配?
- 对象模型与关系模型阻抗不匹配之处
- Windows内核开发中如何区分文件对象究竟是文件还是文件夹?(FILE_OBJECT包括了无数详细信息)
- 对象的构成模型和关系模型
- 5.匹配,还是匹配——双运放的对称度究竟如何?
- form1究竟是类名还是对象名?
- [Java] Java参数传递,究竟值传递还是引用对象(转)
- 对象的构成模型和关系模型
- myeclipse对象建模设计(对象建模(域模型)还是E-R建模(数据模型))
- 不要主动地去对立对象模型和关系模型,而是要使之融洽相处,物尽其用
- 11-hibernate实战 多对一对象模型和关系模型映射
- Windows内核开发中如何区分文件对象究竟是文件还是文件夹?
- 读【深度探索C++对象模型】【下】
- DOM(文档对象模型)简介
- [Q学习]QT对象模型:标识与值
- unity3d 拖动模型对象旋转效果
- JavaScript Window - 浏览器对象模型
- python 500行 小项目 --- 简单对象模型
- 甘露模型,用prototype更好地去实现对象继承