使用ORM的基于事实的数据建模(对象角色建模)(读书笔记)
2007-12-20 09:56
786 查看
数据建模是应用程序设计中的很重要的部分,尤其对分布式应用程序更是如此。然而,现在创建模型的方法在许多方面都不太完善。Microsoft的Terry Halpin博士提出了ORM(对象角色建模)来解决数据建模的问题。
在概念层上,ORM是一种设计和查询数据库模型的方法,在这一层中,应用程序是用一些非技术用户也能理解的术语描述的。实际上,ORM数据模型常常获取较多的商务规则,并且比其它方法创建的数据模型更容易验证和升级。简而言之,ORM使得数据建模更加面向商务规则。
建模比设计出现的早。从传统意义上讲,ORM不能代理E-R模型,也不能用于设计数据库。它是数据存储建模的推理模型,就像UML是对象建模的推理模型一样。ORM可以用来把用户具体思想概念化以形成一般的数据模型。例如,用户可以勾画一篇报表,而我们能根据报表的信息建立一般的数据模型。
下面是要讲述的ORM的内容:
对象角色建模的概念
在建模过程中Visio的用途
用ORM建立数据库
最后讲解一些实例代码
举一个例子,假设我们正在看一个电话簿,我们能用完全的二元关系描述此数据。例如:
此人名叫"Bill"
住在“123大街”
”123大街“在Ohio
电话号码是"555-1212“
”555-1212“的电话区号是“614”
这个数据的描述可以概括为事实,对于普通劳动者的电话薄来说,它实际上是ORM的基础。
市民的姓名
市民的居住地址
地址位于的国家
市民的电话号码
电话号码的电话区号
市民具有姓名
这是最普通的事实类型:一个二元元素。
如果句子只有一个名词,它将是一个属性或一个一元元素。如:市民是男性的。
同样有三元和四元元素。如:市民从Kroger获得食品。这里有三个名词。
事实中的名词的数量称为它的元数(arity)。最终将与我们在数据库中庙宇的约束有关。
这就是建模,至今我们还没有进入设计阶段。实际上,如果建模过程要获得最高的效率,避免把任何事都映射到预先规划数据库外观是很重要的。
单一约束:如:一个电话号码有一个区号,一个区号可以有多个电话号码。在角色关系中很难看到这些,但他们通常在图表中出现。
在概念层上,ORM是一种设计和查询数据库模型的方法,在这一层中,应用程序是用一些非技术用户也能理解的术语描述的。实际上,ORM数据模型常常获取较多的商务规则,并且比其它方法创建的数据模型更容易验证和升级。简而言之,ORM使得数据建模更加面向商务规则。
建模比设计出现的早。从传统意义上讲,ORM不能代理E-R模型,也不能用于设计数据库。它是数据存储建模的推理模型,就像UML是对象建模的推理模型一样。ORM可以用来把用户具体思想概念化以形成一般的数据模型。例如,用户可以勾画一篇报表,而我们能根据报表的信息建立一般的数据模型。
下面是要讲述的ORM的内容:
对象角色建模的概念
在建模过程中Visio的用途
用ORM建立数据库
最后讲解一些实例代码
ORM的概念
ORM提供了数据关系以及与此数据有关的商务规则的可视化表示方法。然而,它不仅包括图表模式,也包括结构化的事实语言,以及建立图表的过程。它用来提高符合目标应用程序的最终用户,通过指出要采用什么数据结构提高了通常的非结构化处理过程的效率。ORM的组成部分
ORM有两种格式,和一个使它们起作用的处理过程。第一种格式以语言为基础。它允许我们用一种易懂的方法描述数据关系和商务规则。第二种格式是图表,用于形象的表示系统。
1.一些基本事实
举一个例子,假设我们正在看一个电话簿,我们能用完全的二元关系描述此数据。例如:此人名叫"Bill"
住在“123大街”
”123大街“在Ohio
电话号码是"555-1212“
”555-1212“的电话区号是“614”
这个数据的描述可以概括为事实,对于普通劳动者的电话薄来说,它实际上是ORM的基础。
市民的姓名
市民的居住地址
地址位于的国家
市民的电话号码
电话号码的电话区号
2.事实的类型(陈述句)
注意这些基本的事实全都有两个名词:市民具有姓名
这是最普通的事实类型:一个二元元素。
如果句子只有一个名词,它将是一个属性或一个一元元素。如:市民是男性的。
同样有三元和四元元素。如:市民从Kroger获得食品。这里有三个名词。
事实中的名词的数量称为它的元数(arity)。最终将与我们在数据库中庙宇的约束有关。
这就是建模,至今我们还没有进入设计阶段。实际上,如果建模过程要获得最高的效率,避免把任何事都映射到预先规划数据库外观是很重要的。
3.约束
它们大部分用图表定义,但是也是语言的重要组成部分。单一约束:如:一个电话号码有一个区号,一个区号可以有多个电话号码。在角色关系中很难看到这些,但他们通常在图表中出现。
4.图表
用椭圆代理名词(诊断),长方形代表动词(关系),那么就可以构建一个我们已确定事实的直观的表示图。相关文章推荐
- 使用Alluxio加速基于Ceph对象存储的数据分析
- 《Advanced .NET Debugging》 读书笔记 Listing 2-7: 使用debugger查看对象的syncblk的数据
- 使用对象类存储数据时的错误
- 如何使用SimpleXML对象操作XML数据
- TCP中使用ObjectOutputStream传输数据对象抛出**Connection reset**的异常。
- asp.net中使用基于角色role的Forms验证
- beego使用orm插入大量数据,回滚报错:buffer busy
- C#从基于FTPS的FTP server下载数据 (FtpWebRequest 的使用)SSL 加密
- jQuery 实战读书笔记之第四章:使用特性、属性和数据
- 基于C++的串口通讯//使用MsComm控件//SetRThreshold()函数的使用,根据数据数量触发端口
- [REDIS 读书笔记]第一部分 数据结构与对象 跳跃表
- 读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。
- 使用NSUserDefaults对iSO应用保存设置数据和缓存对象
- 《Effective C#》读书笔记——条目1:使用属性而不是可访问的数据成员<C#语言习惯>
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- Effective Objective-C 2.0 编写高质量iOS与OS X代码 在既有类中使用关联对象存放自定义数据
- List使用add方法添加对象-只显示最后添加的数据的问题
- 基于PHP和Mysql相结合使用jqGrid读取数据并显示
- Java基础知识强化之网络编程笔记16:Android网络通信之 使用Http的Get方式读取网络数据(基于HTTP通信技术)
- asp.net中使用基于角色role的Forms验证