`
wp63
  • 浏览: 30659 次
  • 性别: Icon_minigender_1
  • 来自: 山西...
最近访客 更多访客>>
社区版块
存档分类
最新评论

抽象数据类型,让Oracle数据库数据管理更加容易

阅读更多
姓名,其实包括两个部分,分别为姓与名。在没有抽象数据类型之前,在数据库设计的时候,往往需要利用两个字段来保存这个姓名内容,如First_name与Last_name等等。这主要是因为在很多时候,前台应用程序只需要用到姓即可,因为在称呼别人的时候,往往不会连名带姓的叫。如在CRM系统中,若利用CRM系统自带的邮件系统给客户发送邮件的时候,台头往往是李公、张公等等。而不会带来名字。为此,就需要把姓与名分开来保存。

  此时,若没有抽象数据类型的话,则在数据库中就需要设立两个字段来处理。但是,在Oracle数据库8以后的版本,包括现在最新的数据库版本,都有一个抽象数据类型,专门来处理这些问题。简单的讲,抽象数据类型就是一些可以作为单独实体的小的基本数据类型的集合。或者说,抽象数据类型是用户自己做的一个箱子,里面有很多抽屉,而每个抽屉就是一个原始的数据类型,如INT或者Varchar数据类型。把几个基本的数据类型根据不同的需要,组合成一个新的抽象数据类型,这就让数据库管理员在处理数据的时候,更加的容易;而且容易控制,减少出错的几率。

  一、抽象数据类型的用途。

  抽象数据类型在实际工作中非常管用。因为自从面向对象的JAVA语言出现后,Oracle数据库设计者就开始意识到创建抽象数据类型的能力可以大大简化他们的Oracle数据库设计。为此,经过他们的努力,在Oracle数据库中,对SQL语句进行了扩展,实现了面向对象的抽象数据类型。具体的来说,抽象数据类型主要有以下几个优点。

  一是可以重复使用。抽象数据类型集成了普通数据结构的层次性,为此,用户定义的抽象数据类型可以在整个数据库范围内多次使用。如此的话,就可以减少编码的时间,并且确保了数据结构的统一性。如用户自定义的姓名抽象数据类型,其不仅可以在企业员工信息表中使用,也可以在业务伙伴联系人表中使用。数据库管理员不需要每次使用时都定义一次。

  二是灵活性。有了抽象数据类型就可以创建数据的真实世界表现形式的能力使得Oracle数据库对象设计者可以塑造一个真实世界的模型,并且创建可以统一应用于设计的强有力的数据类型。其实,这就是面向对象的编程语言的根本特性。

  三是可以实现对数据很好的封装。因为每一个抽象数据类型以一个完整的实体存在,它包括数据定义、默认值和取值范围。添加抽象数据类型可以确保整个Oracle数据库范围的统一性与一致性。一旦定义了某个抽象数据库类型,它就可以加入到很多其他的抽象数据类型中,因为无论这些数据类型在数据库中出现在何处,相同的逻辑数据类型总是具有相同的定义、默认值与取值范围。如在一个ERP系统的产品基本信息表中,有产品规格、尺寸、颜色、外处理方式等等。为此,无论在产品基本信息表中,还是在订单表中,都可以实现很好的一致性。而且,此时若在订单层面对这个数据进行更新的话,也不容易出错。

  二、抽象数据类型建立与引用。

  上面笔者谈到过,抽象数据类型就是一些基本数据类型的组合。下面笔者以地址为例,谈谈抽象数据类型的建立与引用。如现在某个地址,具有如下内容,分别为街道、城市、省份、邮编等。其中街道、城市、省份三个位字符型数据,而邮编则为整数型字段。为了数据的一致性与统一性,数据库管理员决定采用抽象数据类型来管理这些内容。

  1、 定义名为Adrees的抽象数据类型。

  我们可以利用Create Type语句来建立新的抽象数据类型。具体的语句如下:

  Create OR Replace Type Adress AS OBJECT

  (街道 Varchar2(100),

  城市 Varchar2(100),

  省份Varchar2(100),

  邮编 integer(6));

  OR Replace关键字跟在其他语句中具有相同的作用。它表示若有其他相同的抽象数据类型的话,则这个语句就会替换原有的抽象数据类型。另外,在建立抽象数据类型的时候,利用中文名字来定义仍然不是一个好的习惯。最好要利用统一命名规则来定义其内部的名字。笔者上面只是为了叙述方面的简便起见,才如此定义。所以,数据库管理员在这方面还是需要有一个清晰的认识。

 2、 抽象数据的引用。

  当建立好抽象数据类型的时候,数据库管理员就可以向基本数据类型那样,引用抽象数据类型,包括在建立表或者对相关字段进行赋值的时候,都这么方便。

  如在建立表的时候,可以把这个抽象数据类型直接跟某个字段关联起来。如

  Create Table USERS

  (F­­_Adress Adress );

  上面这个语句就是在USERS表中建立了一个F_Adress的字段,其数据类型为Adress。

  若要对这个字段赋值的话,需要注意一个问题,要依次输入赋值的内容,顺序不能够颠倒。如按照上面的定义,用户在赋值的时候,需要依次输入街道、城市、省份、邮编等等内容。若用户在输入的过程中,忘记输入城市的话,则省份的内容将会直接输入到城市中。另外,若数据类型不匹配的话,则就直接会有错误提示。当然数据库管理员也可以根据需要,为特定的数据内容设置默认值,以方便管理。

  三、抽象数据类型管理经验分享。

  笔者平时在数据库设计中,非常钟爱这个抽象数据类型。笔者十多年的数据库管理经验证明,利用抽象数据类型可以大幅度的简化我们平时的工作。为此笔者在这方面也积累了不少的经验。这里就拿出来跟大家分享一下。

  经验一:利用脚本建立抽象数据类型。

  对于一些常用的抽象数据类型,数据库管理员最好能够利用脚本来建立抽象数据类型。如果每次建立数据库的时候,都通过手写代码来完成的话,工作量会比较大。如笔者在日常工作中,就把常用的一些抽象数据类型,如员工姓名、地址、产品规格等抽象数据类型都保存在一个SQL脚本中,等到需要的时候,只需要运行这个脚本即可。这就可以减少一些不需要的编码的编写,从而提高数据库开发设计的效率。

  经验二:对于多个数据库对象中经常需要用到的数据,最好采用抽象数据类型。

  如在一个ERP系统中,产品基本信息的产品规格可能包含多个部分的内容,如产品的颜色、尺寸、大小、外处理方式等等。而在采购订单、进货单等地方有需要多处进行引用。为了保障数据的一致性与统一性,最好为产品规格设置一个抽象数据类型 。如此的话,一方面在其他对象中引用这个内容的话,不用一个个字段的引用,从而简化应用程序的设计; 另一方面,因为这些信息组合才能够唯一的定位产品,所以,在采购订单或者其他单据中统一的显示,非常的关键。为此,若能够一个数据类型来包含这些内容的话,则应用程序设计时就可以减少错误的发生。

  经验三:要考虑不同数据库库的兼容性问题。

  抽象数据类型,它是Oracle数据库对标准SQL语句的一种扩展。所以,虽然Oracle数据库提供了抽象数据类型的功能,但是,其他品牌的数据库不一定支持。这也就是说,这个抽象数据类型的兼容性并不时很好。如果数据库管理员能够预见在以后可能会把数据库迁移到其他平台的数据库中,则这个抽象数据类型就需要慎用。否则的话,在数据库移植的过程中,就会平白的遇到很多麻烦。

  另外,由于标准的SQL语句不支持这个抽象数据类型,所以,如果采用其他的非Oracle数据库出的SQL语句,就可能会造成额外的困扰。如有些数据库管理员喜欢采用Excle等工具作为Oracle数据库管理的辅助工具。若在数据库中采用了抽象数据类型,那么Excle软件将无法很好的支持Oralce数据库。这也是Oracle数据库管理员在考虑采用抽象数据类型需要考虑的内容。

  最后,有一个值得庆幸的就是,这些抽象数据类型的执行计划与其他Oracle数据库系统默认的内部数据类型的执行计划相同。这也就是说,抽象数据类型的引入对SQL语句的执行性能将不会产生任何影响。换一句话说,采用抽象数据类型并不会降低数据库的性能,相反可以提高数据库数据管理的一致性与统一性,从而让数据管理起来更加的容易。所以说,如果不考虑抽象数据类型的兼容性问题的话,那么抽象数据类型将是数据库管理员规划数据的一个好帮手。

分享到:
评论

相关推荐

    Oracle数据库基础教程-参考答案

    第1章Oracle数据库概述 1.简答题 (1) 数据是描述事物的符号,是数据库中存储的基本对象。在计算机中,用记录的形式来描述数据。数据与数据的解释即数据的语义是紧密结合的。数据库是指按一定的数据模型组织、描述...

    Oracle数据库经典学习教程

    1. Oracle数据库对象 67 2. 同义词 67 3. 序列 70 4. 视图 72 5. 索引 74 6. 表空间 75 7. 本章总结 79 8. 本章练习 80 PL/SQL程序设计 83 1. PL/SQL简介 84 2. PL/SQL块 85 3. PL/SQL数据类型 89 4. PL/SQL条件控制...

    oracle数据库dba管理手册

    1.4.3 抽象数据类型 6 1.4.4 分区和子分区 7 1.4.5 用户 7 1.4.6 模式 8 1.4.7 索引 8 1.4.8 簇 9 1.4.9 散列簇 9 1.4.10 视图 9 1.4.11 序列 10 1.4.12 过程 10 1.4.13 函数 10 1.4.14 软件包 11 1.4.15 触发器 11 ...

    JAVA ORACLE数据库资料讲解

    并进行归纳、抽象,在此基础上建立企业运行的逻辑模型—集成化的数据模型(即数据库模式)和业务模型才能实现,这是信息系统建设的核心和难点。 稳定的数据库模式是客观存在的,它深藏于组织的业务之中,必须采取...

    5.4空间数据库管理系统.pdf

    提供了类似Oracle Spatial 的数据类型和一个对象关系模式 存储多维的网格化数据和栅格层 栅格数据拥有空间参考信息 进行空间检索 对象关系数据库管理特点 3 解决了空间数据的变长记录管理问题,由数据库软 件商扩展...

    adodb510数据库抽象库

    ADODB内置一个元类型(metatype)系统,使得它认为像CHAR,TEXT和STRING这样的数据类型在各种不同数据库中是相当的。它具有:可移植数据库创建,依赖数据库的session支持,SQL执行监控和数据库"健康"检查。 很多的知名...

    数据库访问抽象层PDO4You.zip

    它提供了一个抽象层来访问数据,不管您使用的是哪个数据 库,并确保有一个单独的对象实例/数据库连接。它可以连接到几个可能的SQL数据库使用可用的PDO驱动程序。目前它支持MySQL、 PostgreSQL、Oracle、Microsoft SQL ...

    会议管理系统数据库设计文档.doc

    在oracle数据库设计中,一 般来说,对于定长的字符数据字段,取字符类型(char),对于不定长的,取变长字符类 型(varchar)。 2.对于以分类形式出现的字段,建议不使用字符类型,而使用数字类型。如:货物 是否配送为...

    Oracle8i_9i数据库基础

    §3.7 抽象数据类型的使用 118 §3.8 大数据类型的使用 119 §3.8.1 可用数据类型 119 §3.8.2 为LOB数据类型指定存储 120 §3.8.3 操作和检索LOB数据 121 §3.9 表和索引有关的数据字典 124 §3.9.1 表和索引数据...

    美食数据库的设计.docx

    数据库表设计 数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有MySQL、SQL Server、Oracle等。根据用户的需求和系统分析,本系统采用MySQL数据库管理系统。在MySQL数据库管理...

    数据库基础 ORACLE

    §3.7 抽象数据类型的使用 118 §3.8 大数据类型的使用 119 §3.8.1 可用数据类型 119 §3.8.2 为LOB数据类型指定存储 120 §3.8.3 操作和检索LOB数据 121 §3.9 表和索引有关的数据字典 124 §3.9.1 表和索引数据...

    数据库系统概论第四版答案

    司的 DBZ 关系数据库管理系统和 IMS 层次数据库管理系统、美国 Oracle 公司的 orade 关系数据库管理系统、 s 油 ase 公司的 s 油 ase 关系数据库管理系统、美国微软公司的 SQL Serve ,关系数据库管理系统等。 2 ....

    空间数据库管理系统概论.docx

    空间数据引擎和对象关系空间数据库的对比 项目 空间数据引擎(寄生模式) 对象关系空间数据库(融合模式) 技术特点 中间件技术 数据库技术 代表产品 ARCSDE、SuperMap SDX+、MapGIS SDE、TerraLib(开源) Oracle ...

    什么是数据库设计数据库设计的步骤.docx

    物理设计 根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取...

    数据库系统基础知识.doc

    比如:Visual FoxPro 6.0,SQL Server,Oracle等系统就是数据库管理系统。 其主要功能包括以下几个方面: (1) 数据定义功能 (2) 数据操纵功能 (3) 数据控制功能 (4) 数据库的建立和维护功能 3) 数据库系统...

    数据库设计概述.pdf

    数据库设计概述 数据库设计概述 ⽬录 数据库设计概述 数据库设计概述 数据库设计是指对于⼀个给定的应⽤环境,构造最优的数据库模式,建⽴数据库及其应⽤系统,使之能够有效地存储数据,满⾜各种⽤户的 应⽤需求,...

Global site tag (gtag.js) - Google Analytics