数据模型是数据库系统的核心与基础,是描述数据与数据之间的联系、数据的语义、数据一致性约束的概念性工具的集合。
数据模型通常是由数据结构、数据操作和完整性约束3个部分组成的。
(1)数据结构是对数据库系统静态特征的描述,描述对象包括数据的类型、内容、性质和数据之间的关系。
(2)数据操作是对数据库系统动态特征的描述,是对数据库中各种对象实例的操作。
(3)完整性约束是完整性规则的集合。它定义了数据模型中数据及数据之间的联系所具有的制约和依存规则。
常用的数据模型主要有层次模型、网状模型和关系模型,下面分别进行介绍。
(1)层次模型,用树形结构表示实体类型及实体间联系的数据模型,层次模型的相应示例如图1.1所示。它具有以下特点。
图1.1 层次模型示例
① 每棵树有且仅有一个无双亲节点,该节点称为根。
② 树中除根外的所有节点有且仅有一个双亲节点。
(2)网状模型,用有向图结构表示实体类型及实体间联系的数据模型,网状模型的相应示例如图1.2所示。用网状模型编写的应用程序极其复杂,且数据的独立性较差。
图1.2 网状模型示例
(3)关系模型,以二维表来描述数据的数据模型。在关系模型中,每个表有多个列(字段)和行(记录)。关系模型的数据结构简单、清晰,具有很强的数据独立性,因此该模型是目前主流的数据模型,关系模型的相应示例如图1.3所示。
图1.3 关系模型示例
关系模型的基本术语如下。
① 关系:一个二维表就是一个关系。
② 元组:二维表中的一行,即表中的记录。
③ 属性:二维表中的一列,用类型和值表示。
④ 域:每个属性的取值范围,如性别的域为{男,女}。
关系中的数据约束如下。
① 实体完整性约束:约束关系的主键(Primary Key)中的属性值不能为空值。
② 参照完整性约束:关系之间的基本约束。
③ 用户定义的完整性约束:反映具体应用中数据的语义要求。
关系数据库的规范化理论认为,关系数据库中的每一个关系都要符合一定的规范。根据规范条件的不同,规范可以分为5个等级:第一范式(1NF)、第二范式(2NF)……第五范式(5NF)。其中,NF是Normal Form的缩写。一般情况下,只要把数据规范到第三范式(3NF)的标准就可以满足需求了。下面分别介绍第一范式、第二范式、第三范式。
(1)第一范式。在一个关系中,消除重复字段,且各字段都是最小的逻辑存储单位。
(2)第二范式。在第一范式基础上,关系中的每一个非主关键字段都完全依赖于整个主关键字段,不能只依赖于主关键字段的一部分。
(3)第三范式。在第一范式基础上,关系中的所有非主关键字段都完全依赖于整个主关键字段,且第三范式要求去除传递依赖。
数据库设计是指对于一个给定的应用环境,根据用户的需求,利用数据模型和应用程序模拟现实世界中该应用环境中的数据结构和处理活动的过程。
数据库的设计原则如下。
(1)数据库内部数据文件的数据组织应具有最大限度的共享、最小的冗余度,并消除数据及数据依赖关系中的冗余部分,使依赖于同一个数据模型的数据实现有效的分离。
(2)在输入、修改数据时,保证数据的一致性与正确性。
(3)保证数据与使用数据的应用程序之间的高度独立性。
实体是指客观存在并可相互区别的事物,既可以是实际的事物,也可以是抽象的概念或关系。
实体之间有3种关系,分别如下。
(1)一对一关系:表A中的行在表B中有且只有一个匹配的行。在一对一关系中,大部分相关信息都在一个表中。
(2)一对多关系:表A中的行可以在表B中有许多匹配行,但是表B中的行在表A中只能有一个匹配行。
(3)多对多关系:每个表的行在相关表中具有多个匹配行。在数据库中,多对多关系的建立是依靠第3个表(连接表)实现的。连接表包含相关的两个表的主键,可通过两个相关表的主键分别创建与连接表中的匹配列的关系。