关系数据库(Relational DataBase,RDB)
目录 |
关系数据库是采用关系模型作为数据组织方式的数据库。关系数据库的特点在于它将每个具有相同属性的数据独立地存储在一个表中。对任一表而言,用户可以新增、删除和修改表中的数据,而不会影响表中的其他数据。关系数据库产品一问世,就以其简单清晰的概念,易懂易学的数据库语言,深受广大用户喜爱。
关系数据库的层次结构可以分为四级:数据库(Database)、表(Table)与视图、记录(Record)和字段(Field),相应的关系理论中的术语是数据库、关系、元组和属性,分别说明如下。
关系数据库可按其数据存储方式以及用户访问的方式而分为本地数据库和远程数据库两种类型。
(1)本地数据库:本地数据库驻留在本机驱动器或局域网中,如果多个用户并发访问数据库,则采取基于文件的锁定(防止冲突)策略,因此,本地数据库又称为基于文件的数据库。典型的本地数据库有Paradox、dBASE、FoxPro以及Access等。基于本地数据库的应用程序称为单层应用程序,因为数据库和应用程序同处于一个文件系统中。
(2)远程数据库:远程数据库通常驻留于其他机器中,用户通过结构化查询语言SQL来访问远程数据库中的数据,因此,远程数据库又称为SQL服务器。有时,来自于远程数据库的数据并不驻留于一个机器而是分布在不同的服务器上。典型的SQL服务器有InterBase、Oracle、Sybase、Informix、MicrosoftSQLServer,以及IBMDB2等。基于SQL服务器的应用程序称为两层或多层应用程序,因为数据库和应用程序驻留在彼此不依赖的系统(层)中。
本地数据库与SQL服务器相比较,前者访问速度快,但后者的数据存储容量要大得多,且适合多个用户并发访问。究竟使用本地数据库还是SQL服务器,取决于多方面因素,如要存储和处理的数据多少,并发访问数据库的用户个数,对数据库的性能要求等。
关系数据库的基本成分是一些存放数据的表(关系理论中称为“关系”)。数据库中的表从逻辑结构上看相当简单,它是由若干行和列简单交叉形成的,不能表中套表。它要求表中每个单元都只包含一个数据,可以是字符串、数字、货币值、逻辑值、时问等较为简单的数据。一般数据库中无法存储c++语言中的结构类型、类对象。图像的存储也比较烦琐,很多数据库无法实现图像存储。
对于不同的数据库系统来说,数据库对应物理文件的映射是不同的。例如,在dBASE、FoxPro、Paradox数据库中,一个表就是一个文件,索引以及其他一些数据库元素也都存储在各自的文件中,这些文件通常位于同一个目录中。而在Access数据库中,所有的表以及其他成分都存储在一个文件中。
为了方便地使用数据库,很多DBMS都提供对于视图(Access中称为查询)结构的支持。视图是根据某种条件从一个或多个基表(实际存放数据的表)或其他视图中导出的表,数据库中只存放其定义,而数据仍存放在作为数据源的基表中。故当基表中数据有所变化时,视图中看到的数据也随之变化。
为什么要定义视图呢?首先,用户在视图中看到的是按自身需求提取的数据,使用方便。其次,当用户有了新的需求时,只需定义相应的视图(增加外模式)而不必修改现有应用程序,这既扩展了应用范围,又提供了一定的逻辑独立性。另外,一般来说,用户看到的数据只是全部数据中的一部分,这也为系统提供了一定的安全保护。
表中的一行称为一个记录。一个记录的内容是描述一类事物中的一个具体事物的一组数据,如一个雇员的编号、姓名、工资数目,一次商品交易过程中的订单编号、商品名称、客户名称、单价、数量等。一般地,一个记录由多个数据项(字段)构成,记录中的字段结构由表的标题(关系模式)决定。
记录的集合(元组集合)称为表的内容,表的行数称为表的基数。值得注意的是,表名以及表的标题是相对固定的,而表中记录的数量和多少则是经常变化的。
表中的一列称为一个字段。每个字段表示表中所描述的对象的一个属性,如产品名称、单价、订购量等。每个字段都有相应的描述信息,如字段名、数据类型、数据宽度、数值型数据的小数位数等。由于每个字段都包含了数据类型相同的一批数据,因此,字段名相当于一种多值变量。字段是数据库操纵的最小单位。
表定义的过程就是指定每个字段的字段名、数据类型及宽度(占用的字节数)。表中每个字段都只接受所定义的数据类型。