众所周知,数据库是逻辑上相关的数据元的集合。这些数据元可以按不同的结构组织起来,以满足单位和个人的多种处理和检索的需要。数据库本身不是什么新鲜事——早期的数据库凿在石头上,记在名册上,以及写入索引卡中。而现在,数据库普遍记录在可磁化的介质上,并且需要用计算机程序来执行必需的存储和检索操作。
在后文中你将看到除了最简单的以外,所有数据库中都有复杂的数据关系及其链接。处理与创建、访问以及维护数据库记录有关的复杂任务的系统软件包叫作数据库管理系统(DBMS)。DBMS软件包中的程序在数据库及其用户间建立了接口(这些用户可以是应用程序员、管理员以及其他需要信息和各种操作系统的人员)。
DBMS可组织、处理和显示从数据库中选择的数据元。该功能使决策者可以搜索、试探和查询数据库的内容,从而对在正式报告中没有的、不再出现的且无计划的问题作出回答。这些问题最初可能是模糊的并且/或者是定义不清的,但是人们可以浏览数据库直到获得问题的答案。简言之,DBMS将“管理”存储的数据项,并从公共数据库中汇集所需的数据项以回答那些非程序员的询问。在面向文件的系统中,需要特定信息的用户可以将他们的要求传送给程序员。该程序员在时间允许时,将编写一个或多个程序以提取数据和准备信息。但是,使用DBMS可为用户提供一种更快的、用户可选择的通信方式 (rutu)
顺序的、直接的以及其它的文件处理方式常用于单个文件中数据的组织和构造,而DBMS可综合几个文件的数据项以回答用户对信息的查询,这就意味着DBMS能够访问和检索非关键记录字段的数据,即DBMS能够将几个大文件中逻辑相关的数据组织并连接在一起。
逻辑结构。确定这些逻辑关系是数据管理者的任务,由数据定义语言完成。DBMS在存储、访问和检索操作过程中可选用以下逻辑构造技术:
1.表结构。在该逻辑方式中,记录通过指针链接在一起。指针是记录中的一个数据项,它指出另一个逻辑相关的记录的存储位置,例如,顾客主文件中的记录将包含每个顾客的姓名和地址,而且该文件中的每个记录都由一个账号标识。在记账期间,顾客可在不同时间购买许多东西。公司保存一个发票文件以反映这些交易,这种情况下可使用表结构显示任一给定时间未支付的发票。顾客文件中的每个记录都将包含这样一个字段,该字段指向发票文件中该顾客的第一个发票的记录位置,该发票记录又依次与该顾客的下一个发票记录相连,该链的最后一个发票记录由一个作为指针的特殊字符标识。
2.层次(树型)结构。该逻辑方式中,数据单元的多级结构类似一棵“倒立”的树,该树的树根在顶部,而树枝向下延伸。在层次(树型)结构中存在主-从关系,唯一的根数据下是从属的元或节点,而每个从属的元或节点又依次“拥有”一个或多个其它元(或者没有) 。该结构中根下面的每个元或树枝都只有一个所有者,这样,正如我们中所看到的,一个customer(顾客)拥有一个invoice(发票),而invoice(发票)又有从属项。在树型结构中,树枝不能相连。
3.网状结构。网状结构不像树型结构那样不允许树枝相连,它允许节点间多个方向连接,这样,每个节点都可能有几个所有者,而它又可能拥有任意多个其它数据单元。数据管理软件允许从文件的任一记录开始提取该结构中的所需信息。
4.关系型结构。关系型结构由许多表组成,数据则以“关系”的形式存储在这些表中。例如,可以建立一些关系表将大学课程同该课程的教师以及上课地点连接起来。为了找到英语课的上课地点和教师名,先查询课程/教师关系得到名字(“Fitt”),然后再查询课程/地点关系得到地点(“Main 142”),当然,也可能有其它关系。这是一个相当新颖的数据库组织技术,将来有望得到广泛应用。
5.物理结构。人们总是为了各自的目的,按逻辑方式设想或组织数据。这样,在一个具体应用中,记录R1和R2是逻辑相连且按顺序处理的,但是,在计算机系统中,这些在一个应用中逻辑上邻接的记录,物理上完全可能不存储在一起。记录在介质和硬件中的物理结构不仅取决于所采用的I/O设备、存储设备及输入输出和存取技术,而且还取决于用户定义的R1和R2中数据的逻辑关系。例如,R1和R2可能是持有信用卡的顾客记录,而顾客要求每两周将货物运送到同一个城市的同一个街区,而从运输部门的管理者看,R1和R2是按地理位置组织的运输记录的顺序项。但是在A/R应用中,可找到R1和R2表示的顾客,并且可根据其完全不同的账号处理他们的账目。简言之,在许多计算机化的信息记录中,存储记录的物理位置用户是看不见的。
数据独立性
数据库系统至关重要的一点是数据库应独立于任何一个具体的应用。传统的数据处理应用是数据相关的。COBOL语言程序包含详细描述数据格式和特性的文件说明和记录说明。
用户可以改变数据库结构而不影响基于它的应用,例如改变应用的要求。一个简单的例子就是将ZIP代码从5位扩大到9位。按照COBOL语言程序的传统使用方法,各个使用该字段的COBOL应用程序不得不改变, 并重新编译和测试。这些程序不能识别或访问已变化并含有一份新数据说明书的文件,而这又可能反过来造成处理的混乱,除非这些变化已在设计中仔细考虑过。
大多数数据库程序允许通过简单地修改ZIP代码段和数据项格式来改变数据库结构,在这种情况下,数据独立性使当前已存在的应用受到的破坏最小。用户可以继续工作甚至可以不管这个9位代码,该文件最终将转换成新的9位ZIP代码,如此容易地完成了修改更突出了数据独立性的重要性。
数据完整性
数据完整性指数据库中数据的精确度、正确性或合法性。在数据库系统中,数据的完整性意味着保护数据不被非法修改或破坏。在大型联机数据库系统中,数据的完整性更为重要,并且还存在另外两个复杂的问题:一个是不得不考虑多个用户同时访问数据库,例如,如果几千个旅行社代理人和航班订票员正同时访问同一个数据库,且两个旅行社代理人预定了同机同号的机票,那么前面一个代理人的预定将丢失,在这种情况下,采用封锁记录或字段的技术就可以保护用户正在修改的记录免受其他用户访问;第二个问题与硬件、软件或者处理过程中人为错误有关,它包括使数据库始终保持完整性的数据库事务。数据库事务是一组视作整体的数据库修改工作,如一个旅行社代理人预定一个航班,预约就包括几个数据库的修改(即增加乘客的姓名和地址, 并修改可用座位字段),这些修改组成了一个事务。只有当所有修改执行完毕后,才认为该数据库事务完成,否则不允许再进行其它任何修改。
数据安全性
数据安全性指保护数据库不被越权或非法访问、修改,这通常涉及到一级或多级口令保护,而这些口令在数据字典中指明权限。例如,高级口令可允许用户读、写和修改数据库结构,而低级口令只允许用户从数据库读数。
通常,审计跟踪——记录着数据库修改的历史,可用来指明数据库被破坏的时间和地点,也可用于文件的复原。
管理信息系统(MIS)的概念已经用许许多多的方式定义过,因为任何MIS的组织模型似乎都不同,所以各MIS的定义随应用范围的不同而变化就不奇怪了。按照我们的思想,一个MIS可定义为这样一个基于计算机的数据处理过程的网络系统,它是一个机构为了支持决策及其它必需的管理功能提供及时有效的信息而开发的,并且可按需要把人工操作过程结合在一起。