数据组织的层次体系
任何信息系统都有一个数据组织的层次体系。在该层次体系中,每一后继层都是其前驱
层数据元组合的结果,最终实现一个综合的数据库。处于第一层的
“位”用户是不必了解的,
而其它五层则是用户输入和请求数据时合理的需要。数据是一切信息系统的基础。一个高质
量的计算机信息系统的最终用户必须具备数据的组织及其处理方面的知识。
位是主存储器和辅助存储器的基本单位。计算机是电子的,因而只能实现两种状态。从物
理上讲,可以通过不同途径来实现这两种状态
(电流的方向,开关,涂在带上和盘上的铁淦
氧的磁性排列
)。由于每一位只能表示两种状态,因此,必须将位组合才能形成字母数字字
符。由位组合成的字母数字字符被暂时存放在主存储器中,或永久地存放在辅助存储器中。
在主存和辅存中存放的是字母数字字符的内部表示形式
(例如,如果采用 EBC-DIC 编码体
制,则
11000010 表示字母 A,而 11110001 表示数字 1)。
在输入时,对字母数字字符进行编码以形成若干位的组合,而在输出时进行译码。目前
还没有工业标准的编码体制。最为流行的编码体制是六位二进制编码的十进制码
(BCD),七
位
ASCII 码以及八位扩充二进制编码的十进制交换码(EBCDIC-发音为 eb-se-dik)。
六位编码最多可以表示 64 个字符(2?6)。七位编码可以表示 128 个字符,而八位编码可
以表示
256 个字符。读者可能会问:既然用六位就可以对一个字符编码。为什么还要用八位
来编码
?这是因为六位码的 64 种可能的组合只够表示字母、数字和 18 个特殊符号。如果希
望有表示大写和小写字母,那么六位编码就不够用了。因此,就需要具有
128 种组合的七
位编码。
目前还难以想象出对 128 种以上的位的组合需要。引进八位编码体制(EBCDIC)是为了
利用这一个事实,即只用
4 位(24-具有 16 种可能的组合)来表示一个数值数据。因此,一
个
8 位的编码实际上可以用来表示两个十进制数字。由于所存储的数据多数是数值数据,所
以将两个数字的编码压缩成八位可以节省存储空间。
EBCDIC 的 8 位组合称之为一个字节。
而
BCD 的六位就构成一个字节。在 BCD 和 ASCII 编码体制中,字节是字符的同义词。在
EBCDIC 编码体制中,由于可以将两个数字压缩到一个字节中,所以 EBCDIC 的字节与字
符间并不一一对应。然而,在涉及到存储容量时,则经常交替地使用字符和字节。一个磁盘
组可以有
800 兆字节容量(即 800 兆字节的永久存储器),而一台计算机的主存可以有 8 兆
字节
(作为处理用的兆字节的高速临时存储器)。较小的存储设备用千字节(一千个字节的倍
数来度量
)。通常将兆和千分别缩写“M”和“K”。
在逻辑上讲,一个
EBCDIC 字节是 8 位,而实际上它有 9 位。由于要将这些位在计算
机和外部设备
(或远程终端)之间传送,所以在计算机硬件中使用了一种内部校验方法来保
证传送数据的准确性。这种构验方法之一是给传送的数据附加一位奇偶校验位,用该位来发
现在传送过程中是否丢失了一位。计算机可以采用偶数奇偶校验或奇数奇偶校验法,即每一
字符要包含偶数个或奇数个
“开状态”位。假定某台计算机采用偶数奇偶校验法,如果要将一
个
EBCDIC 的字母 A(它具有奇数个“开”位-11000001)写到磁带上,那么在传送之前为了
维持偶校验,则需要增加一位奇偶位
(即:111000001—偶数个“开”位),在将字符写到磁
带之前,硬件自动计算
“开”位的个数。如果计算机结果是奇数,则说明已经出现了奇偶校验
错误,计算机自动向操作员发出警告。
字符(字节)
在通过键盘
(光符号识别器或其他输入设备)输入一个字符时,机器直接将字符翻译成
某特定的编码系统中一串位的组合。一个计算机系统可以使用不止一种编码体制。例如,某
些计算机系统中将
ASCII 编码体制用于数据通信,而将 EBCDIC 编码体制用于数据存储。
数据元
描述数据元的最好办法是举例说明。一个人的社会保险号、姓名、信用卡号、街道地址和婚
姻状况等都是数据元。在数据的层次体系中,数据元是最低一层的逻辑单位,为了形成一个
逻辑单位,需要将若干位和若干字节组合在一起。一个日期不一定是一个数据元,它可以是
三个数据元:年、月、日。对地址来说,也是同样的。一个地址中可以包括州、城市、街道地址
和邮政码这四个数据元。从逻辑上可以把日期和地址都看成是一个数据元,但是输出这种数
据元是不方便的。例如,通常在输出时总是把街道地址单写一行,因而应该把一个地址的几
个数据元分开。此外,由于姓名和地址文件经常按邮政码排序,因此,需要将邮政码作为一
个逻辑实体
(数据元)来对待。
根据上下文的需要,有时也把数据元称作为字段(记录中的字段)。数据元是泛指的,而数
据项才是实际的实体
(或实际的“值”)。例如,社会保险号是一个数据元,而 445487279 和