数据库的存储结构9 L! L% Y+ J' R# `5 d7 [
数据库的存储结构不同于一般文件系统的存储结构。数据库数据的特点是各种记录型之间彼此有联系,数据是结构化的。数据的存储结构不仅涉及每种记录型的记录如何存储,而且要使数据的存储反映各种记录型之间的联系。在DB多级模式中引入内模式(存储模式)的主要目的是使模式的数据结构的描述同它的存储表示的描述分开,以致DBA为了协调数据库性能而对数据库数据的存储方法进行修改时,可不必修改模式,以提高数据库的物理独立性。在各个数据库管理系统中,对内模式的定义功能各不相同。在关系数据库管理系统中有些DDL语句可影响数据库的存储结构。在DBMS中各级模式的存储结构是恒定的或唯一的,而数据库内容(或其记录)的存储方式是不唯一的。数据库存储结构设计的好坏直接影响系统的性能。在存储结构中主要是涉及存储记录的设计。存储记录与概念记录之间具有对应关系,如果存储记录与概念记录之间具有一一对应关系,在这种情况下存储记录的设计就比较简单,不需要进一步讨论。概念记录是指在逻辑结构中的记录。但当一个概念记录对应多个不同类型的存储记录时,存在如何设计存储记录的问题。对于这样的概念记录,其存储记录可以有以下几种设计:
$ s- k5 f/ }5 c- g 1.顺序组织# l9 A% j7 F' j& B
将存储记录设计成与概念记录一一对应,按SNO大小(或按记录到来)的顺序将记录组成一个顺序组织的文件。这样组织的优点是结构简单,缺点是会浪费存储空间。
! z7 X7 R& M" c `5 v. I# O 2.顺序带链的组织
# w ~4 o" c5 `; z: ^# ~ 顺序带链组织允许记录中带有指针(Pointer),这样可以大大节省存储空间。
: N( m8 L0 N9 M$ p- S8 i* k 3.带次关键字索引的顺序组织: @, c) g6 Z. W% |/ C, _
为了适应对多项内容的检索,可以建立索引文件,上述组织可改为带次关键字索引的顺序组织。" h8 y8 ], W/ _) p( {& t) @
4.多表组织
$ m% ?- ?9 Y( L) @ 在次关键字索引中,由于一个次关键字值对应于多个记录值,它们的个数是不固定的,所以对应的指针数目是可变的。这种可变性给管理带来困难,为了解决这个困难,引入了多表组织。多表组织的实现思想比较简单,在索引中多个指针分散存放在每个记录值中,索引项中的指针指向第一个记录,在第一个记录中的指针指向第二个记录等等。' D/ _8 t5 o" C- |
5.完全倒排组织/ W t3 n' d; u) a
在一个记录型中,对主关键字以外的数据项都建立索引,这样的组织称之为完全倒排组织。
& g h" U" j- o3 B3 e" f 6.Hash定址组织
: A, y" h! ^0 }* C 对于每一个存储记录值存放在数据库的什么地方,可通过对该记录的主关键字值的杂凑函数计算得出。这种组织为Hash定址组织。杂凑函数种类很多,如质数除余法、基数转换法、平方取中法、折叠法、位移法及各位数字分析法等等。关键是如何选择一个杂凑函数,尽可能避免发生碰撞。对于不同的主关键字值通过计算而得到同一个地址的映象,称之为碰撞。& s4 \; n" h; |! M9 C) H) D$ a
7.联系的存储
. P. S$ b6 ?) R3 } 在关系数据库中,通过外来关键字(Foreign Key)来表示概念记录之间的联系。例如,为了表达学生和学校的联系,可以在学生记录中增加外来关键字“学校号”来表示联系。 |