数据库中的表

上传人:晴*** 文档编号:407073 上传时间:2017-02-18 格式:DOC 页数:7 大小:57.50KB
返回 下载 相关 举报
数据库中的表_第1页
第1页 / 共7页
数据库中的表_第2页
第2页 / 共7页
数据库中的表_第3页
第3页 / 共7页
数据库中的表_第4页
第4页 / 共7页
数据库中的表_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《数据库中的表》由会员分享,可在线阅读,更多相关《数据库中的表(7页珍藏版)》请在金锄头文库上搜索。

1、第10章 数据库表在这一章中,我们将讨论各种类型的数据库表,并介绍什么情况下想用哪种类型的数据库表(也就是说,在哪些情况下某种类型的表比其他类型更适用)。我们会强调表的物理存储特征:即数据如何组织和存储。从前只有一种类型的表,这千真万确,原先确实只有一种“普通” 表。管理这种表就像管理“ 一个堆”一样(下一节会给出有关的定义)。后来,几类更复杂的表。如今,除了堆组织表外,还有聚簇表(共有3种类型的聚簇表)、索引组织表、嵌套表、临时表和对象表。每种类型的表都有不同的特征,因此 分别适用于不同的应用领域。们先对各种类型的表给出定义。q 堆 组织表( 这些就是“普通” 的标准数据库表。数据以堆的方式

2、管理。增加数据时,会使用段中找到的第一个能放下此数据的自由空间。从表中删除数据时,则 允许以后的就是这种表类型中的“堆” 这个名词的由来。堆(一组空间,以一种有些随机的方式使 用。528 / 976q 索引组织表(这些表按索引结构存储。这就强制要求行本身有某种物理顺序。在堆中,只要放得下,数据可以放在任何位置;而索引组织表(所不同,在据要根据主键有序地存储。q 索 引聚簇表(聚簇(指一个或多个表组成的组,这些表物理地存储在相同的数据库块上,有相同聚簇键值的所有行会相邻地物理存储。这种结 构可以实现两个目标。首先,多个表可以物理地存储在一起。一般而言,你可能认为一个表的数据就在一个数据库块上,但

3、是对于聚簇表,可能把多个表的数据存储 在同一个块上。其次,包含相同聚簇键值(如0)的所有数据会物理地存储在一起。这些数据按聚簇键值“聚簇”在一起。聚簇键使用B*树索引 建立。q 散 列聚簇表(这些表类似于聚簇表,但是不使用B* 树索引聚簇键来定位数据,散列聚簇将键散列到聚簇上,从而找到数据应该在哪个数据库块上。在散列聚簇中,数据就是索引(这是隐喻的说法)。如果需要频繁地通过键的相等性比较来读取数据,散列聚簇表就很适用。q 有 序散列聚簇表(这种表类型是0结合了散列聚簇表的某些方面,同时兼有概念如下:你的行按某个键值(如列,而与该键相 关的一系列记录以某种有序顺序到达(因此这些记录是基于时间戳的

4、记录),并按这种有序顺序处理。例如,客户在你的订单输入系统中下订单,这些订单会按先进 先出(方式获取和处理。在这样一个系统中,有序散列聚簇就是适用的数据结构。q 嵌 套表( 嵌套表是 们实际上就是系统生成和维护的父/子关系中的子表。嵌套表的工作类似于式中的 以认为为有一个指向外键套表与子表的主要区别是:嵌套表不像子表 (如样是“独立”表。q 临时表(这些表存储的是事务期间或会话期间的“ 草稿”数据。临时表要根据需要从当前用户的临时表空间分配临时区段。每个会话只能看到这个会话分配的区段;它从不会看到其他任何会话中创建的任何数据。q 对象表(对象表基于某种对象类型创建。它们拥有非对象表所没有的特殊

5、属性,如系统会为对象表的每一行生成象标识符)。对象表实际上是堆组织表、索引组织表和临时表的特例,还可以_包含嵌套表作为其结构的一部分。q 外 部表( 这些表并不存储在数据库本身中,而是放在数据库之外,即放在平常的操作系统文件中。在以上版本中,利用外部表可以查询数 据库之外的一个文件,就好像这个文件也是数据库中平常的表一样。外部表对于向数据库加载数据最有用(外部表是非常强大的数据加载工具)。0引入了一个外部表卸载功能,在不使用数据库链接的情况下,这为在们将在第 15章更详细地讨论外部表。q 不论哪种类型的表,都有以下一般信息:q 一 个表最多可以有1000列,不过我不鼓励设计中真的包含这么多列,

6、除非存在某个硬性需求。表中的列数远远少于1000列时才最有效。列数大于254的行存储在多个单独的行段(,这些行段相互指向,而且必须重新组装为完整的行影像。529 / 976q 表 的行数几乎是无限的,不过你可能会遇到另外某个限制,使得这种“ 无限”并不实际。例如,一般来讲,一个表空间最多有1022个文件(不过,0些表空间可以超出上述文件大小限制)。假设你有一些32就是说,每个表空间有 32,704会有2,143,289,344个块,每个块大小为16可能在每个块上放160行(每行大约80100字节)。这样就会有 342,926,295,040行。不过,如果对这个表分区,这个行数还能很容易地翻倍。

7、例如,假设一个表有1024个散列分区,则能有1024342,926,295,040行。确实存在着上限,但是在接近这些上限之前,你肯定会遇到另外某个实际限制。q 表中的列有多少种排列(以及这些列的函数有多少种排列),表就可以有多少个索引。随着基于函数的索引的出现,理论上讲,说能创建的索引数是无限的!不过,同样由于存在一些实际的限制,这会影响真正能创建和维护的索引数。q 即使在一个数据库中也可以有无限多个表。不过,还是同样的道理,实际的限制会使数据库中的表数在一个合理的范围内。不可能有数百万个表(这么多表对于创建和管理来说都是不实际的),但是有数千个表还是允许的。在下一节中,我们将讨论与表相关的一

8、些参数和术语。在此之后,我们再转而讨论基本的堆组织表,然后介绍其他类型的表。一节中,我们将介绍与表相关的各种存储参数和术语。并非每种表类型都会用到所有参数。例如,体讨论各种 表类型时还会分别介绍与之相关的参数。这一节的目标时介绍这些术语,并给出定义。在后面几节中,还会在适当的时候介绍使用特定参数的更多信息。占用磁盘上存储空间的一个对象。尽管有多种类型,不过最常见的段类型如下:q 聚簇(这种段类型能存储表。有两种类型的聚簇:B*树聚簇和散列聚簇。聚簇通常用于存储多个表上的相关数据,将其“预联结” 存储到同一个数据库块上;还可以用于存储一个表的相关信息。“聚簇”这个词是指这个段能把相关的信息物理的

9、聚在一起。q 表( 表段保存一个数据库表的数据,这可能是最常用的段类型,通常与索引段联合使用。q 表 分区( 子分区(这种段类型用于分区,与表段很相似。分区表由一个或多个分区段(成,组合分区表则由一个或多个表子分区段(成。q 索引(这种段类型可以保存索引结构。q 索引分区(类似与表分区,这种段类型包含一个索引的某个片。分区索引由一个或多个索引分区段(成。q (分区( 530 / 976结构。对包含表分区时,是用于此。有意思的是,并没有一种型不论出于什么原因,人很奇怪为什么要另外给一个特 殊的名字!)。q 嵌套表(这是为嵌套表指定的段类型,它是主 /明细关系中一种特殊类型的“子” 表,这种关系随

10、后将详细讨论。q 回滚段(据就存储在这里。回滚段是动创建和管理。举 例来说,一个表可以是一个段。索引有可能是一个段。这里我强调了“可能”,这是因为,我们可以把一个索引划分到不同的段中。所以,索引对象本身只是一个定 义,而不是一个物理段,索引可能由多个索引分区组成,而每个索引分区(一个段。表可能是一个段,也可能不是。由于同样的原因,由于表分区,一个表可以有多个表段:或者可以在一个称为聚簇的段中创建一个 表,此时这个表可能与其他表同在一个聚簇段中。不 过,最常见的情况是,表是一个段,索引也是一个段。对现在来说,这样考虑最简单。创建一个表时,通常就是创建一个新的表段,而且如第3章所述,这个段包含 区段,区段则包含块。这是平常的存储层次结构。但是要指出重要的一点,只在“通常” 情况下才有这种一对一的关系。例如,考虑以下这个简单的t ( x y z ;这个语句创建6个段。如果在一个初始为空(什么也没有)的模式中发出下面的句,会观察到以下结果:no t ( x y z ; 976 本身创建了一个段:如输出中最后一行所示。这里主键约束创建了一个索引段,以保证惟一性。注意 惟一约束或主键可能创建一个新索引,也可能不创建。如果约束列上已经有一个索引,而且这些列处于索引的前几列,这个约束就会(而且将会)使用这些列(而不再创建创建新索引)。另外,每个个段用于存储字符大对象(cha

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 模板/表格

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号