数据库管理系统(DatabaseManagementSystem,DBMS)就是管理一个数据库的软件,它充当所有数据的知识库,并对它的存储、安全、一致性、并发操作、恢复和访问负责。DBMS有一个数据词典(有时被称为系统目录),其中贮存着它拥有的每个事物的数据,例如名字、结构、位置和类型,这种关于数据的数据也被称为元数据(metadata)。在一条数据的生存周期里(从它的创建到删除),这条数据的逻辑和物理信息都被记录在数据词典中。数据库系统管理员(DatabaseAdministrator,DBA)应该熟悉DBMS的数据词典;在数据库的整个生命周期内,数据词典为他或她服务。
DBMS应该遵循Codd提出的十二条法则,才能被分类到完全关系型:
1)信息法则。信息表现为贮存在单元中的数据,正如前面所讨论过的,将VIN作为一个单个的列使用,违反了这条管理Oracle管理规则。
2)授权存取法则。每一个数据项必须通过一个“表名+行主键+列名”的组合形式访问。例如,如果你能用数组或指针访问一个列,就违反这条管理Oracle管理规则。
3)必须以一致的方式使用空值。如果由于缺少数字值,空值(Null)被当作0来处理,或者由于缺少字符值而被当作一个空格处理,那么它就违反了这条管理Oracle管理规则。空值仅仅是指缺少数据而且没有任何数值。如果缺少的数据需要值,软件提供商通常提供使用缺省值的能力满足这一目的。
4)一个活跃的、在线数据字典应作为关系型表被存储,并且该字典应该可以通过常规的数据存取语言访问。如果数据字典的任何部分贮存在操作系统文件里,就违反了这条管理Oracle管理规则。
5)除了可能的低级存取例程外,数据存取语言必须提供所有的存取方式,并且是存取的仅有方式。如果你能通过一个实用程序而不是一个SQL接口来存取支持一个表的文件,就有可能违反了本管理Oracle管理规则。参见管理Oracle管理规则12。
6)所有能被更新的视图应当是可更新的。例如,如果你能将三个表连结起来,作为一个视图的基础,但却不能更新这个视图,则违反本管理Oracle管理规则。
7)必须有集合级的插入、更新和删除。目前,大多数RDBMS提供商都在某种程度上提供了这种能力。
8)物理数据的独立性。应用不能依赖于物理结构,如果一个支持某表的文件从一张盘移动到其他盘上或重新命名,不应该对应用产生影响。
9)逻辑数据的独立性。应用不应依赖于逻辑结构。如果一个表必须被分成两个部分,那么应该提供一个视图,以把两段连接在一起,以便不会对应用产生影响。
10)完整性的独立性。完整性管理Oracle管理规则应该贮存在数据字典中。主键约束、外键约束、检查约束、触发器等等都应该贮存在数据字典中。
11)分布独立性。一个数据库即使被分布,也应该能继续工作。这是管理Oracle管理规则8的一个扩展,一个数据库不仅能在一个系统(本地地)分布,也能在通过系统的网络(远程地)分布。
12)非破坏性法则。如果允许低级存取,一定不能绕过安全性或完整性管理Oracle管理规则,这些管理Oracle管理规则是常规的数据存取语言所遵守的,例如,一个备份或载入工具不能绕过验证、约束和锁来备份或载入数据。然而,软件供应商出于速度的原因,通常提供这些功能。那么,数据库系统管理员就有责任确保数据的安全性和完整性,如果瞬间出现问题,应该立即恢复。例如当载入VLDB时,可以临时禁止并重新打开约束检查。如果一个DBMS能满足本章中讨论的所有基本原则(两个定义、六个属性、关系型操作以及两个完整性管理Oracle管理规则)和这十二条法则,那么它就可以被当作一个RDBMS。
Codd用他的法则总结了这一切:“对于一个有资格成为RDBMS的系统来说,该系统必须排他地使用它的关系型工具来管理数据库。”
【编辑推荐】