您的位置:首页 > 数据库 > Oracle

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

2010-04-29 16:45 309 查看

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

作者: Victor,  出处:IT专家网, 责任编辑: 包春林, 
2009-02-04 10:10

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

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

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

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

  抽象数据类型在实际工作中非常管用。因为自从面向对象的J***A语言出现后,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关键字跟在其他语句中具有相同的作用。它表示若有其他相同的抽象数据类型的话,则这个语句就会替换原有的抽象数据类型。另外,在建立抽象数据类型的时候,利用中文名字来定义仍然不是一个好的习惯。最好要利用统一命名规则来定义其内部的名字。笔者上面只是为了叙述方面的简便起见,才如此定义。所以,数据库管理员在这方面还是需要有一个清晰的认识
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐