基础篇
数据库系统概述
数据、数据库、数据库管理系统、数据库系统
- 数据:数据库中
存储的基本对象
。 - 数据库:长期存储在计算机内的、有组织的、可共享的
数据集合
。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性
,可为各种用户共享。 - 数据库管理系统(DataBase Management System,DBMS):位于用户和操作系统之间的一层
数据管理软件
。主要包括数据定义功能、数据操纵功能、数据库运行管理、数据库的建立和维护功能
。DBMS提供的数据控制功能
包括:数据的安全性保护、数据完整性检查、并发控制、数据库恢复。 - 数据库系统(DataBase System,DBS):在计算机系统中引入数据库后的
系统
,一般由数据库、数据库管理系统及其开发工具、应用系统、数据库管理员和用户构成。数据库系统的特点主要有:数据结构化、数据共享性高,冗余度低,易扩展、数据独立性高、数据由DBMS统一管理和控制
。
数据模型
- 数据模型的组成要素
- 数据结构:研究的对象类型的集合,是对系统静态特性的描述。
- 数据操作:对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。是对系统动态特性的描述。
- 完整性约束:一组完整性规则的集合。
- 概念模型
- 用于信息世界的建模,是现实世界到信息世界的第一层抽象。
- 信息世界的基本概念:实体(Entity)、属性(Attrubute)、码(Key)、域(domain)、实体型(Entity type)、实体集(Entity Set)、联系(RelationShip:一对一、一对多、多对多)
- E-R图(概念模型的表示方法Entity-RelationShip Approach):描述现实世界的概念模型,E-R图提供表示实体型、属性和联系的方法。
- 常用的数据模型
- 层次模型(Hierarchical Model) 非关系模型
- 层次数据库系统采用层次模型作为数据的组织方式(eg:IBM公司的IMS数据库管理系统)
- 用树形结构表示各类实体以及实体间的联系
- 数据结构
- 有且只有一个结点没有双亲结点,这个结点为根节点;
- 根节点以外的其他结点有且只有一个双亲结点。
- 网状模型(Network Model) 非关系模型
- 网状数据模型系统采用网状模型作为数据的组织方式(eg:DBTG系统)
- 数据结构
- 允许一个以上的结点无双亲
- 一个结点可以有多余一个的双亲
- 允许两个结点之间有多种联系(复合联系)
- 关系模型(Relational Model)
- 关系数据库系统采用关系模型作为数据的组织方式。
- 术语:关系(Relation)、元组(Tuple)、属性(Attribute)、主码(key)、域(Domain)、分量、关系模式
- 完整性约束条件:实体完整性、参照完整性和用户定义完整性
- 面向对象模型(Object Oriented Model)
- 层次模型(Hierarchical Model) 非关系模型
数据库系统结构
- 数据库系统三级模式结构
- 外模式(子模式/用户模式)
- 数据库用户能够看见和使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图,与某一应用有关的数据逻辑表示。
- 一个数据库可以有多个外模式。
- 是保证数据库安全性的有力措施。
- DBMS提供子模式描述语言(子模式DDL)严格定义子模式。
- 模式(逻辑模式)
- 数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 一个数据库只有一个模式
- DBMS提供模式描述语言(模式DDL)严格定义模式
- 内模式(存储模式)
- 一个数据库只有一个内模式
- 数据物理结构和存储方式的描述,是数据在数据库内部的标识方式。
- DBMS提供内模式描述语言(内模式DDL)严格定义模式
- 外模式(子模式/用户模式)
数据库系统组成
- 硬件平台及数据库
- 软件
- 人员
关系数据库
关系模型概述
- 关系数据库系统是支持关系模型的数据库系统
- 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成
关系的完整性
- 实体完整性:主属性不能为空
- 参照完整性
- 用户定义完整性
关系代数
- 传统集合运算:并(Union)、差(Difference)、交(Intersection)、广义笛卡尔积(Extended Cartesian Product)
- 专门的关系运算:选择(Selection)、投影(Peojection)、连接(Join)、除(Division)
关系演算
- 元组关系演算语言ALPHA
- 元组关系演算
- 域关系演算语言QBE(Query By Example)
- 域关系演算
关系数据库标准语言SQL
SQL概述
- sql特点
- 综合统一
- 高度非过程化
- 面向集合的操作方式
- 以同一种语法结构提供两种使用方式
- 语言简洁,易学易用
- SQL语言基本概念
- 外模式对应视图(View)和部分基本表(Base Table),模式对应于基本表,内模式对应于存储文件
数据定义
- 关系数据库系统支持三级模式结构
- 模式、外模式和内模式中的基本对象有表、视图、索引。
- 视图是基于基本表的虚表
- 索引是依附于基本表的
数据更新
- 定义、删除与修改基本表
- 定义基本表: CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件] …);
- 修改基本表:ALTER TABLE <表名> [ADD <新列名><数据类型> [列级完整性约束条件]] [DROP<完整性约束名>][MODIFY<列名><数据类型>];
- 删除基本表:DROP TABLE <表名>
- 建立与删除索引
- 建立索引是加快查询速度的有效手段
- 建立索引:CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>]]…)
- UNIQUE表示该索引的每一个索引值只对应唯一的数据记录
- CLUSTER表示建立的索引是聚簇索引
- 删除索引:DROP INDEX<索引名>
数据查询
- 对查询结果排序:用ORDER BY子句
- 对查询结果分组:GROUP BY子句
- 连接查询
- 等值连接:连接运算符为 = ,在等值连接中把目标列中的重复属性列去掉则为自然连接。
- 自身连接:连接操作再一个与其自己进行连接。
- 外连接:在连接谓词的某一边加符号*,如果外连接符出现在连接条件的右边,称其为右外连接,如果出现在连接条件的左边,称为左外连接。
- 复合条件连接:WHERE子句有多个连接条件
- 嵌套查询
- 带IN谓词的子查询
- 带有比较运算符的子查询
- 带有ANY或ALL谓词的子查询
- 带有EXISTS谓词的子查询
- 集合查询
- 并操作UNION
- 交操作INTERSECT
- 差操作MINUS
视图
- 视图是从一个或几个基本表(或视图)导出的表,它是一个
虚表
。 - 定义视图
- 建立视图:CREATE VIEW <视图名>[(<列名>[,<列名>]…)] AS <子查询> [WITH CHECK OPTION];
- 删除视图:DROP VIEW <视图名>;
- 查询视图
- 更新视图
- 视图的作用
- 简化用户操作
- 用户能以多种角度看待同一数据
- 视图对重构数据库提供一定程度的逻辑独立性
- 视图能够对机密数据提供安全保护
数据控制
- 授权 GRANT
- 收回权限 REVOKE
嵌入式SQL
关系系统及其查询优化
关系系统
- 一个系统可以定义为关系系统,当且仅当它:
- 支持关系数据库(关系数据结构)
- 支持选择、投影和自然连接运算,对这些运算不必要定义任何物理存钱路径。
- 关系数据库系统的查询优化
- 查询优化的一般准则
- 选择运算应尽可能先做
- 在执行连接前对关系适当地预处理,预处理方法主要有两种:在连接属性上建立索引和对关系排序,然后执行连接第一种称为索引连接方法,第二种称为排序合并连接方法。
- 把投影运算和选择运算同时进行
- 把投影同其前或期后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系
- 把某些选择同在它前面要执行的笛卡尔积结合起来称为一个连接运算
- 找出公共子表达式
- 关系代数等价变换规则
- 用相同的关系代替两个表达式中相应的关系所得到的结果是相同的
- 优化的一般步骤
- 把查询转换成某种内部表示
- 把语法数转换成标准(优化)形式
- 选择底层的存取路径
- 生成查询计划,选择代价最小的
- 查询优化的一般准则
关系数据理论
构造数据库模式
- 关系模式:
- 关系模式是一个五元组 R(U,D,dom,F)
- 关系名R,它是符号化的元组语义;
- 一组属性U;
- 属性组U中属性所来自的域D;
- 属性到域的映射dom;
- 属性组U上的一组数据依赖F
规范化
- 函数依赖
- 码
- 范式
- 第一范式(1NF):列不可再分
- 第二范式(2NF):表中非主键列不存在对主键的部分依赖
- 第三范式(3NF):消除对非主键列的传递依赖
- BC范式(BCNF):所有非主属性对每个码都是完全函数依赖;所有的主属性对每一个不包含它的码也是完全函数依赖;没有任何属性完全函数依赖于非码的任何一组属性
- 第四范式(4NF):属性之间不允许有非平凡且非函数依赖的多值依赖。