2.1 数据库基础
数据库由一批数据构成有序的集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映了客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。本节将介绍数据库中的一些基本概念,包括数据库的定义、数据表的定义和数据类型等。
2.1.1 什么是数据库
数据库的概念诞生于60年前,随着信息技术和市场的快速发展,数据库技术层出不穷,随着应用的拓展和深入,数据库的数量和规模越来越大,其诞生和发展给计算机信息管理带来了一场巨大的革命。
数据库的发展大致划分为人工管理阶段、文件系统阶段、数据库系统阶段和高级数据库阶段。其种类大概有3种:层次式数据库、网络式数据库和关系式数据库。不同种类的数据库按不同的数据结构来联系和组织。
对于数据库的概念,没有一个完全固定的定义。随着数据库历史的发展,定义的内容也有很大的差异,其中一种比较普遍的观点认为,数据库(DataBase,DB)是一个长期存储在计算机内、有组织、有共享、统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统,即数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术。
数据库的特点包括:实现数据共享,减少数据冗余;采用特定的数据类型;具有较高的数据独立性;具有统一的数据控制功能。
2.1.2 关系数据库的基本特性
关系数据库最重要的特性之一是具有坚实的数学理论基础。该理论包括两方面内容:其一是关系数据库设计的理论基础,即数据依赖与规范化理论;其二是数据库查询的实现与优化理论,这两方面内容构成了数据库设计和应用最重要的理论基础。
关系数据库是基于关系系统的,那么究竟什么是关系系统呢?直观地说,关系系统是这样的:
(1)结构化方面:数据库中的数据对用户来说是数据表,并且只是数据表。
(2)完整性方面:数据库中的数据表需要满足一定的完整性约束。
(3)操纵性方面:用户可以使用操作符进行数据表操作。例如,为了检索数据,需要使用从一个数据表导出另一个数据表的操作符。
关系系统和非关系系统的区别在于:关系系统的用户把数据看作数据表,而且只能是数据表;非关系系统的用户则把数据看作其他的数据结构,代替或者扩展关系系统中的数据表结构。
关系是关系系统的核心,是汇集在表结构中行和列的集合。每个关系由一个或多个属性(列)组成,属性将类型相似的数据归纳在一起。属性与关系直接关联,数据以元组(行)的方式存储在关系中,每个元组代表相关数据的一个记录。
2.1.3 数据表
在关系数据库中,数据表(简称表)是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构。它由纵向的列和横向的行组成:行被称为记录,是组织数据的单位;列被称为字段,每一列表示记录的一个属性,都有相应的描述信息,如数据类型、数据宽度等。
例如,一个有关作者信息的名为authors的表中,每列包含所有作者的某个特定类型的信息,比如“姓名”,而每行则包含了某个特定作者的所有信息(编号、姓名、性别、专业),如图2.1所示。
图2.1 authors表结构与记录
2.1.4 数据类型
数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。常用的数据类型有整数数据类型、浮点数数据类型、精确小数类型、二进制数据类型、日期/时间数据类型、字符串数据类型。
表中的每一个字段就是某种指定数据类型,比如图2.1中“编号”字段为整数数据,“性别”字段为字符型数据。
2.1.5 主键
主键(Primary Key)又称主码,用于唯一地标识表中的每一条记录。可以定义表中的一列或多列为主键,主键列上不能有两行相同的值,也不能为空值。假如,定义authors表,该表给每一个作者分配一个“作者编号”,该编号作为数据表的主键,如果出现相同的值,将提示错误,系统不能确定查询的究竟是哪一条记录;如果把作者的“姓名”作为主键,则不能出现重复的名字,这与现实中的情况不相符,因此“姓名”字段不适合作为主键。