概念数据模型:按照用户的观点来对数据和信息建模,E-R模型是概念数据模型的典型。
逻辑数据模型:从计算机实现的观点来对数据建模。
物理数据模型:从计算机的物理存储角度对数据建模。
逻辑数据模型的发展受到应用发展和需求的推动经过了以下四个时代:
文件系统 -> 层次和网状数据库 -> 关系数据库 -> 新一代数据库(OODB、ORDB)
目前广泛应用的关系数据模型又很多缺陷,第一:有限的数据类型,不支持自定义函数和运算,很难满足现实世界的要求。第二:不能清晰的表示和处理复杂对象,例如多值属性、组合属性、聚集。第三:缺少对象表示OID,这于显示世界不符。主键被关系数据库用来标识数据实体,但它又很多缺陷:主键发生变动,但数据实体是确定不变的;主键只在一定范围内有效,而数据实体往往是全局的;关系型的面向集合的数据操作虽然用起来方便,但很多情况下执行效率低。用OID来进行导航式的对象访问更直观、更有效。
随着面向对象技术应用到软件的各个领域,面向对象数据模型和对象关系数据模型应运而生。
OODB:用面向对象数据模型代替关系数据模型。
ORDB:将关系数据模型扩展为对象关系数据模型。
Oracle和DB2都在往对象关系数据库管理系统的方向发展。下面我们以Oracle为例给大家展现Oracle的对象特性。
从Oracle的Manager Console中我们可以看到Oracle把User Types分成了四类:Array Types、Table Types、Object Types和XML Schema。
首先我们来讲Object Types,在Oracle创建Object Types的方式是:
create type type_name as object(attr1_name attr1_type, attr2_name attr2_type
member function func_name1(参数说明) return 返回类型,
member function func_name2(参数说明) return 返回类型,
)
对象类型必须包含一个或多个属性,属性的类型可以是:数据库原有数据类型、LOB、对象(包括用户自定义的对象类型)、对象的引用(REF)、Collection。
例如:
create table circles(radius number, center point_type);创建一个包含点类型属性的表,它包含x和y坐标。
insert into circles values(1, point_type(1, 1));插入点一行数据。
select radius,center from circles;查询该表,但是这样看不到点的坐标。
select radius, c.center.x, c.center.y from circles c;这样查询可以看到对象类型的数据。
有了对象类型以后,我们就可以在数据库表中添加组合类型了。
下面我们来解决多值属性的问题。
Oracle中的表示集合类型有两个办法,一个是嵌套表,一个是Varray类型。
比如我们创建一个含有电话号码的嵌套表:
create type phone_no as table of number;
然后创建使用了嵌套表的主表。(注意嵌套表不是一个我们通常所认为的table,准确的说在Oracle数据库中它是叫table type,属于user types。)
create table stu (name varchar2(30), pn phone_no)
nested table pn store as table_of_phoneNumber;
stu表含有两个属性列,一个是通常的varchar2类型,一个是刚刚创建的phone_no类型。
向stu表中插入数据:
insert into stu values('wilmawang', phone_no(13647231280, 02761256399));
在对含有嵌套表类型的基本表查询的时候,普通的select * 的方式并不能查询到嵌套表那一个属性列的数据,要使用table函数来查询嵌套表中的数据。
select * from table(select pn from stu); 注意table函数只能处理单行的结果集,如果table中的查询结果集返回有多行记录,那么Oracle会报错:ORA-01427: single-row subquery returns more than one row。
最后我们来谈Varray类型。Varray也就是我们刚开始所说的Array Types。它与嵌套表一样可以用来存储多个值。与嵌套表不同的是,Varray的大小需要事先声明。Varray通常是做为一个整体被提取到Java等语言的数组类型中去处理。
create type pn as varray(2) of number;
create table stuv(name varchar2(20), pno pn);
insert into stuv values('WallyWong', pn(13545035202,01081438252));
关于含有Varray类型的表的查询方式和含有嵌套表类型的表一样。
分享到:
相关推荐
我主要想和大家分享一些数据治理的经验和数据模型管控的方法。其实数据治理的难度很大,因为牵扯的东西太多、外围的环境太复杂。尤其是IT系统建设到一定程度的时候,你才开始做数据治理,难度真的会非常大。数据治理...
跨层级、跨地域、跨系统、跨部门、跨业务的政务逻辑数据模型(GLDM)是衔接块数据理论体系和目前各省市区大规模开展的数据采集、共享、整合、集中、开放等实践的工程指南,也是省市区数据资源库(数据湖)建设的方法...
中国联通IT系统数据架构规范_第一分册_企业数据模型分册 以下是根据提供的文件信息生成的相关知识点: 企业数据模型是中国联通IT系统数据架构规范的重要组成部分,该规范旨在为中国联通企业提供一个统一的数据架构...
机构多、类型广、交易方式多样,机构内及机构间数据交换频繁、 业务发展迅速,为提高数据交换效率、规范行业机构数据应用系统建设、提升行业数据标准化水平,证 券期货行业组织开展了行业数据模型建设工作,...
相反,《微软Excel 2013:用PowerPivot 建立数据模型》承载了大量信息,这样一旦学完《微软Excel 2013:用PowerPivot 建立数据模型》 你在Excel新的建模选项中将有足够的背景知识。用最后一句话来强调这本书的主要...
数据模型与决策案例分析
1基本概念 1.1模型 1.2数据模型 1.3空间数据模型 1.4三维空间数据模型 1.5三维空间数据模型与三维空间数据结构的区别 三维空间数据模型与数据结构全文共28页,当前为第3页。 1.2数据模型(Data Model) 数据模型是...
数据模型与决策-第14章.pdf数据模型与决策-第14章.pdf数据模型与决策-第14章.pdf数据模型与决策-第14章.pdf数据模型与决策-第14章.pdf
阿里云数据中台电信行业数据模型白皮书
大数据平台数据模型概要设计.pdf大数据平台数据模型概要设计.pdf大数据平台数据模型概要设计.pdf大数据平台数据模型概要设计.pdf大数据平台数据模型概要设计.pdf大数据平台数据模型概要设计.pdf
本书将给您配备上一套功能强大的数据模型和数据仓库设计,采用这些模型可以将您的数据库设计项目带到一个高的起点上。您将获得通用业务功能的经过验证的模型,如订购和管理产品、处理装运、开票、财务和预算、管理...
电信数据模型参考文档 电信数据模型是中国电信企业的数据模型参考文档,该文档提供了电信企业数据模型的详细信息,涵盖概念模型、逻辑模型和物理模型等方面的内容。 概念模型是电信数据模型的最高级别的抽象模型,...
数据建模经典参考手册。多个行业数据模型参考,卷二。。。
《数据模型资源手册3卷》第三卷中文版 全书559页高清
阿里集团数据研发体系-数据模型设计规范.docx
畅销书《数据模型资源手册》系列丛书的第一卷,经典书籍。
关于Cassandra数据模型的简单介绍
数据模型与决策课程大作业.pdf数据模型与决策课程大作业.pdf数据模型与决策课程大作业.pdf数据模型与决策课程大作业.pdf数据模型与决策课程大作业.pdf
数据模型与决策案例集