数据库系统概述:
数据库技术是应数据管理任务的需求而产生的,其发展历史为:
人工管理阶段 —> 文件系统阶段 —> 数据库系统阶段。
数据库组成:
数据库系统(DataBase System, DBS)是采用数据库技术的计算机系统,包括了数据库(数据)、数据库管理系统、数据库管理员(人员 DabaBase Administrator,DBA)、支持数据库系统的硬件和软件 以及用户,一共五部分组成。
数据模型:
由数据结构、数据操作和完整性约束组成。
常见数据库模型:
层次模型:用树状结构来表示实体类型及实体间联系的数据库模型
网状模型:用网状结构来表示实体类型及实体间联系的数据库模型
关系模型:以二维表来描述数据。
关系模型的基本术语:
- 关系:一个数据表等于一个关系
- 元祖:二维表中的一行记录
- 属性:二维表中的一列,用类型和值表示
- 域:每个属性取值的变化范围(如
性别的域为{男,女})
关系模型的完整性约束:
实体完整性约束:关系的主属性,即主码(主键)的组成不能为空,不能为控制(NULL)。
参照完整性约束:定义外码(外键)对主码(主键)之间的引用规则,它是对关系间引用数据的一种限制。(其定义为:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元祖在F上的值只允许两种可能,即要么取空值,要么等于S中某个元祖的主码值)。
用户自定义完整性约束:针对某一应用环境的完整性约束条件,它反映了某一具体应用所涉及的数据应该满足的要求。Mysql支持的用户完整性约束有:非空约束、CHECK约束和触发器。
关系数据库的规范化:
第一范式(1NF):
数据组的每个属性只包含一个值。
关系中的每个数组必须包含相同数量的值。
关系中的每个数组一定不能相同。
即:每个数据表中的字段是单一的、不可再分的
例:学生表中,不能有“班级”字段(“计算机系3班”),因为该字段还包含“系别”和“班级”两种属性(“计算机系”和“3班”)。
第二范式(2NF):
要求数据库中的每个实体(即各个记录行)必须可被唯一区分的。
第二范式要求实体的属性完全依赖主关键字,即不能存在仅依赖主关键字的一部分的属性, 如果存在,那么应该把该属性和主关键字分离出来形成一个新的实体,新实体和原实体间应该是一对多的关系。
例: “员工工资信息表”中
(员工编码,岗位)→(姓名、年龄、学历、基本工资、绩效奖金、奖金)
↓↓↓↓↓(拆分成下面两种关系)
(员工编码)→(姓名、年龄、学历)
(岗位)→(基本工资)
↓↓↓↓↓(可以生成下面三张表)
员工档案表 EMPLOYEE(员工编码、姓名、年龄、学历)
岗位工资表 QUARTERS(岗位、基本工资)
员工工资表 PAY (员工编码、岗位、绩效工资、奖金)
第三范式(3NF):
第三范式要求关系表中不存在非关键字对任意候选关键字列的传递函数依赖,即,要求一个关系表中不包含已在其他表中包含的非主关键字信息。(传递函数依赖:如果存在关键字段A决定非关键字B,而非关键字B决定非关键字C,则称非关键字C传递函数依赖于关键字A。)
例:“员工信息表”
(员工编码)→(员工姓名、年龄、部门编码、部门经理)
其中
(员工编码)→(部门编码)→(部门经理)
即非关键字字段“部门经理”传递函数依赖于主关键字段“员工编码”,违反第三范式。
可将该关系表,分成如下两个表:
员工信息表 EMPLOYEE (员工编码、员工姓名、年龄、部门编码)
部门信息表 DEPARTMENT (部门编码、部门经理)
数据库的三级模式结构:
数据库的三级模式结构结构分别是指模式、内模式、外模式。
模式:也称逻辑模式或者概念模式,是数据库中全体数据的逻辑结构和特征的描述。是所有用户的公共数据视图。一个数据库只有一个概念。模式处于三级结构的中间层。
外模式:也称用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑和特征的描述,是数据库用户的数据视图。外模式是模式的子集,一个数据库可以有多个外模式。
内模式:也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表达方式。一个数据只有一个内模式。