1.2 数据模型 – 第1章 数据库基础 – 第1篇 基础知识 – MySQL从入门到精通

1.2.1 数据模型的概念

数据模型就是数据库系统的核心与基础,是关于描述数据与数据之间的联系、数据的语义、数据一致性约束的概念性工具的集合。

数据模型通常是由数据结构、数据操作和完整性约束3部分组成的,分别如下:

(1)数据结构:是对系统静态特征的描述,是对数据库各种对象实例的操作。

(2)数据操作:是对系统动态特征的描述,是对数据库各种对象实例的操作。

(3)完整性约束:是对完整性规则的集合,它定义了给定数据模型中数据及其联系所具有的制约和依存规则。

1.2.2 常见的数据模型

常用的数据库数据模型主要有层次模型、网状模型和关系模型,下面分别进行介绍。

(1)层次模型:用树状结构表示实体模型及实体间联系的数据模型成为层次模型,如图 1.2所示,它具有以下特点。

①每棵树有且仅有一个无双亲节点,称为根。

②树中除根外所有节点有且仅有一个双亲。

图 1.2   层次模型
图 1.2 层次模型

(2)网状模型:用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,如图 1.3所示。用网状模型编写应用程序极其复杂,数据的独立性较差。

图 1.3   网状模型
图 1.3 网状模型

(3)关系模型:以二维表来描述数据。关系模式中,每个表有多个字段列和记录行,每个字段列有固定的属性(数字、字符、日期等),如图 1.4所示。关系模型数据结构简单、清晰、具有很高的数据独立性,是目前主流的数据库模型。

①关系:一个二维表就是一个关系。

②元组:二维表中的一行,即表中的记录。

③属性:二维表中的一列,用类型和值表示。

④域:每个属性取值的变化范围,如性别的域为{男,女}。

关系中的数据约束如下:

①实体完整约束:约束关系的主键中的属性值不能为空值。

②参照完整性约束:关系之间的基本约束。

③用户定义的完整性约束:反映了具体应用中数据的语义要求。

图 1.4   关系模型
图 1.4 关系模型

1.2.3 关系数据库的规范化

关系数据库的规范化的理论为:关系数据库中的每一个关系都要满足一定的规范。根据满足规范的条件不同,可以分为5个等级:第一范式(1NF)、第二范式(2NF)……第5范式(5NF)。其中,NF是Normal Form的缩写。一般情况下,只要把数据规范到第三范式表示就可以满足需要了。下面举例介绍前3中范式。

1.第一范式(1NF)

在一个关系中,消除重复字段,且各字段都是最小的逻辑存储单位。第一范式是第二和第三范式的基础,是最基本的范式。第一范式包括下列指导原则。

(1)数据组的每个数属性只可以包含一个值。

(2)关系中的每个数组必须包含相同数量的值。

(3)关系中的每个数组一定不能相同。

在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系型数据库。

如果数据表中的每一个列都是不可再分割的基本数据项——即同一列不能有多个值,那么就称此数据表符合第一范式,由此可见第一范式具有不可再分割的原子特性。

在第一范式中,数据表的每一个行只包含一个实体的信息,并且每一行的每一列只能存放实体的一个属性。例如,对于学生信息,不可以将学生实体的所有属性信息(如学号、姓名、性别、年龄、班级等)都放在一个列中显示,也不能将学生实体的两个或多个属性信息放在一个列中显示,学生实体的每个属性信息都放在一个列中显示。

如果数据表中的列信息都符合第一范式,那么在数据表中的字段都是单一的、不可再分的。如表 1.1就是不符合第一范式,因为“班级”列中包含“系别”和“班级”两个属性信息,这样“班级”列中的信息就不是单一的,是可以再分的;而表 1.2就是符合第一范式的学生信息表,它将原“班级”列的信息拆分到“系别”列和“班级”列中。

学号姓名性别年龄班级
9527东*方20计算机系3班
表 1.1 不符合第一范式的学生信息表
学号姓名性别年龄系别班级
9527东*方20计算机3班
表 1.2 符合第一范式的学生信息表

2.第二范式(2NF)

第二范式是在第一范式的基础上建立起来的,即满足第二范式必先满足第一范式(1NF)。第二范式要求数据库中的每个实体(即各个记录行)必须可以被唯一地区分。为实现区分各行记录通常需要为表设置一个“区分列”,用以存储各个实体的唯一标识。在学生信息表中,设置了“学号”列,由于每个学生的编号都是唯一的,因此每个学生可以被唯一地区分(即使学生存在重名的情况下),那么这个唯一属性列被称为主关键字或主键。

第二范式要求实体的属性完全依赖于主关键字,即不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多关系、例如,这里以“员工工资信息表”为例,若以(员工编码、岗位)为组合关键字(即复合主键),就会存在如下决定关系。

(员工编码,岗位)→(决定)(姓名、年龄、学历、基本工资、绩效工资、奖金)

在上面的决定关系中,还可以进一步拆分为如下两种决定关系、

(员工编码)→(决定)(姓名、年龄、学历)

(岗位)→(决定)(基本工资)

其中,员工编码决定了员工的基本信息(包括姓名、年龄、学历等);而岗位决定了基本工资,所以这个关系表不满足第二范式。

对于上面的这种关系,可以把上述两个关系表更改为如下3个表。

员工档案表:EMPLOYEE(员工编码、姓名、年龄和学历)

岗位工资表:QUARTERS(岗位和基本工资)

员工工资表:PAY(员工编码、岗位、绩效工资和奖金)

3.第三范式(3NF)

第三范式是在第二范式的基础上建立起来的,即满足第三范式必先满足第二范式。第三范式要求关系表不存在非关键字列对任意候选关键字列的传递函数依赖,也就是说,第三范式要求一个关系表中不包含已在其他表中包含的非主关键字信息。

所谓传递函数依赖,就是指如果存在关键字段A决定非关键字段B,而非关键字段B决定非关键字段C,则称非关键字段C传递函数依赖于关键字段A。

例如,这里以员工信息表(EMPLOYEE)为例,该表中包含员工编号、员工姓名、年龄、部门编码、部门经理等信息,该关系表的关键字为“员工编号”,因此存在如下决定关系。

(员工编码)→(决定)(员工姓名、年龄、部门编码、部门经理)

上面的这个关系表是符合第二范式的,但它不符合第三范式,因为该关系表内部隐含如下决定关系。

(员工编码)→(决定)(部门编码)→(决定)(部门经理)

上面的关系表存在非关键字段“部门经理”对关键字段“员工编码”的传递函数依赖。对于上面的这种关系,可以把这个关系表(EMPLOYEE)更改为如下两个关系表。

员工信息表:EMPLOYEE(员工编码、员工姓名、年龄和部门编码)

部门信息表:DEPARTMENT(部门编码和部门经理)

对于关系型数据库的设计,理想的设计目标是按照“规范化”原则存储数据,因为这样做能够消除数据冗余、更新异常、插入异常和删除异常。

1.2.4 关系数据库的设计原则

数据库设计是指对于一个给定的应用,根据用户的需求,利用数据模型和应用程序模拟现实世界中该应用环境的数据结构和处理活动的过程。

数据库设计原则如下:

(1)数据库内数据文件的数据组织应获得最大限度的共享、最小的冗余度,消除数据及数据依赖关系中的冗余部分,使依赖于同一个数据模型的数据达到有效的分离。

(2)保证输入、修改数据时数据的一致性与正确性。

(3)保证数据与使用数据的应用程序之间的高独立性。

1.2.5 实体与关系

实体是指客观存在并可相互区别的事物,实体既可以是实际的事物,也可以是抽象的概念或关系。

实体之间有3种关系,分别如下。

(1)一对一关系:是指表A中的一条记录在表B中有且只有一条相匹配的记录。在一对一关系中,大部分相关信息都在一个表中。

(2)一对多关系:是指表A中的行可以在表B中许多匹配行,但是表B中的行只能在表A中有一个匹配行。

(3)多对多关系:是指关系中每个表的行在相关表中具有多个匹配行。在数据库中,多对多关系的建立是依靠第三个表(称作连接表)实现的,连接表包含相关的两个表的主键列,然后从两个相关表的主键列分别创建与连接表中的匹配关系。

© 版权声明
THE END
喜欢就点赞支持一下吧,如果觉得不错或日后有所需要,可以收藏文章和关注作者哦。
点赞3打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容