数据库系统概论
1. 绪论
- 数据是数据库中存储的基本对象
- 数据的含义称为数据的语义,数据与其语义是不可区分的
- 数据库是长期存储在计算机内的,有组织的可共享的,大量数据的集合。数据库中的数据按照一定的数据模型组织,描述和存储,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户所共享。
- 数据库管理系统的主要功能:
- 数据的定义
- 数据的组织,存储,管理
- 数据的操纵
- 数据库的事务管理和运行管理
- 数据库的建立和维护
- 数据库系统是由数据库,数据库管理系统及其应用开发工具,应用程序,数据库管理员 组成的存储,管理,处理和维护数据的系统。
- 数据管理的三个阶段
- 人工管理
- 文件系统
- 数据库系统
- 数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是与文件系统的本质区别
- 数据独立性
- 物理独立性:用户的应用程序与数据库中数据的物理存储是相互独立的
- 逻辑独立性:用户的应用程序与数据库的逻辑结构相互独立
- 数据库管理系统提供的数据控制功能
- 数据的安全性保护
- 数据的完整性检查
- 并发控制
- 数据库恢复
- 数据模型是对现实世界数据特征的抽象
- 数据模型是数据库系统的核心和基础
- 模型分为两大类
- 概念模型:现实世界到机器世界的一个中间层次
- 逻辑模型(层次模型,网状模型,关系模型。。)和物理模型
- 信息世界的一些概念
- 实体
- 属性
- 码:唯一标识实体的属性
- 实体型
- 实体集
- 联系(一对一,一对多,多对多)
- 概念模型的表示–实体联系方法— E- R方法
- 数据模型包括
- 数据结构
- 数据操作
- 数据的完整性约束
- 层次模型是数据库系统中最早出现的数据模型
- 关系模型是最重要的一种数据模型
- 每个关系的数据结构都是一张规范化的二维表
- 要求关系必须是规范化的:关系的每一个分量都必须是一个不可分的数据项(不允许表中还有表)
- 完整性约束条件
- 实体完整性
- 参照完整性
- 用户定义完整性
- 操作对象和操作结果都是关系
- 模式是数据库中全体数据的逻辑结构和特征的描述
- 数据库的三级模式结构是指数据库系统是由外模式,模式和内模式三级构成
- 数据库管理员的职责
- 决定数据库中的信息内容和结构
- 决定数据库的存储结构和存取策略
- 定义数据的安全性要求和完整性约束条件
- 监控数据库的使用和运行
- 数据库的改进,重组,重构
2.关系数据库
- 在关系模型中,现实世界的实体以及实体间的各种联系均用单一的结构类型,即关系来表示
- 若关系中某一属性组的值能唯一的标识一个元组,而其他子集不能,则称该属性组为候选码
- 关系可以有三种类型
- 基本关系(基本表):实际存在的表
- 查询表
- 视图表:是虚表,不对应实际存储的数据
- 关系模型要求关系必须是规范化的。最基本的一条就是,关系的每一个分量都必须是一个不可分的数据项。规范化的关系简称为范式。
- 关系的描述成为关系模式
- 关系操作
- 插入
- 删除
- 修改
- 查询
- 选择
- 投影
- 连接
- 等值连接
- 自然连接:一种特殊的等值连接:去掉重复的属性列
- 不存在属性上值相等的元组:被舍弃:悬浮元组
- 外连接:保留悬浮元组,属性上填NULL(左外,右外)
- 除
- 并
- 差
- 交
- 特点是集合操作的方式:操作的对象和结果都是集合
- 结构化查询语言(Structured Query Language)
- 完整性约束
- 实体完整性 : 主属性不为空
- 参照完整性: 主码被用
- 用户定义完整性
3.关系数据库标准语言SQL
-
SQL特点
- 综合统一
- 高度非过程化
- 面向集合的操作方式
- 以同一语法结构提供多种使用方式
- 语言简洁,易学易用
-
视图是由一个或几个基本表导出的表,本身不独立存储在数据库中。数据库中之存放对他的定义而不存放其对应的数据。是一个虚表
-
定义
- create table
- create view
- create index
- create schema
-
模式
- create schema authorization
-
基本表
-
create table SC ( Sno char(9), Cno char(4), Grade smallint, primary key(Sno,Cno), foreign key(Sno) references Student(Sno), foreign key(Cno) references Course(Cno) );
-
修改
- alter table **
- add
- drop
- alter
- drop table
- cascade
- restrict( default ):不能有视图,触发器等
- alter table **
-
-
索引
- 建立索引是加快查询速度的有效手段
- 建立
- create unique / cluster index index_name on table_name( column_name asc/desc)
- 修改
- alter index Scno rename to ScSno
- 删除
- drop index Stus
-
数据查询
-
select from where group by .. having .. order by .. asc/desc
-
in, not in ilke ,not like is null,is not null >=,<=,!=,<> % : a%b :以a开头,任意长度以b结尾 _ : a_b :长度为3 where cname like 'Db\_Design' escape '\'
-
select Sno from SC where Cno='3' group by grade desc; //左外连接列出左边关系中所有的元组 from Student left outer join SC on ( Student.sno = SC.sno )
-
聚合函数:where子句是不能用的,只能在select ,group by 或者having子句
count(distinct Sno)
avg(grade)
max(grade)
sum(credit)
//相关子查询
select Sno,Cno
from SC x
where Grade >= (Select avg(grade)
from SC y
where y.Sno = x.Sno
);
-
集合查询
- union
- intersect
- except
-
数据更新
-
insert into Student(Sno,Cno) values('222','1'); update Student set Sgae=22 where Sno='222'; delete from Student where Sno='222';
-
-
视图
-
必须明确列名:
- 某个目标列不是单纯的属性名,而是聚集函数或者列表达式
- 多表连接时列出了几个同名的列作为视图的字段
- 需要在视图中启用新的更合适的名字
-
create view Is_s as 子查询 with check option
-
作用
- 简化用户的操作
- 使用户从多个角度看待同一数据
- 对重构数据库提供了一定程度的逻辑独立性
- 对机密数据提供安全保护
- 利用视图更清晰的表达查询
-
4.数据库的安全性
-
是指保护数据库以防止不合法的使用造成的数据泄漏,更改或破坏
-
数据库安全性控制
-
用户身份鉴别
-
存取控制
- 存取控制机制主要包括:
- 定义用户权限
- 合法权限检查
- 定义用户权限和合法权限检查一起组成了数据库管理系统的存取控制子系统
- 存取控制机制主要包括:
-
自助存取控制方法
-
通过grant & revoke来实现
-
grant select on table Student to U1; revoke update(Sno) on table Student from U5 cascade;
-
-
授权:授予与收回
-
数据库角色
-
强制存取控制方法
- 对数据本身进行密级标记,无论数据如何复制,标记和数据是一个密不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性
-
5.数据库完整性
-
数据库的完整性是指数据的正确性,相容性
-
维护数据库的完整性
- 提供定义完整性约束的机制
- 提供完整性检查的办法
- 进行违约处理
-
发生不一致时:
-
拒绝执行 NO ACTION
-
级联操作 CASCADE
-
设置为空
-
foreign key(Sno) references Student(Sno) on delete no action on update cascade,
-
-
域
- check domain gender char(2)
- check(value in(‘nn’,‘n’));
- check domain gender char(2)
-
断言
- create assertion
-
触发器
- 是用户定义在关系表上的一类由事件驱动的特殊过程
- create trigger
6.关系数据理论
看PPT
会判断哪些事几NF
- 人们已经提出许多种类型的数据依赖,最重要的是多值依赖和函数依赖
会判断函数依赖类型
- 码
- 若候选码多于一个,选定其中一个为主码
- 包含在任意一个候选码中的属性为主属性
- 范式
- 5NF < 4NF<BCNF<3NF<2NF<1NF
- 满足最低要求的叫做第一范式,1NF
- 低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程叫做规范化
7.数据库设计
数据库设计是指对于一个给定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足各用户的应用需求,包括信息管理要求和数据操作要求。
-
基本步骤
- 需求分析
- 方法:结构化分析(Structured Analysis) ,SA是简单实用的方法:自顶向下,逐层分解
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库实施
- 数据库运行和维护
- 需求分析
-
数据字典 包括:
- 数据项:不可再分的数据单位
- 数据结构:一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成
- 数据流,
- 数据存储,
- 处理过程
-
概念结构设计
- E- R模型
- 实体型:矩形
- 属性:椭圆形
- 联系:菱形(写上几对几)
- E- R图的集成
- 合并(消除冲突)
- 修改和重构(消除冗余)
- E- R模型
-
逻辑结构设计
- 把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构
10.数据库恢复技术
- 事务
- 是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位
- 4个特性
- 原子性
- 一致性
- 隔离性
- 持续性
- 恢复的实现技术
- 建立冗余数据最常用的技术是数据转储和登记日记文件
11.并发控制
- 并发操作带来的数据不一致性 包括
- 丢失修改
- 不可重复读
- 读“脏”数据
- 基本的封锁类型
- 排他锁(写锁)
- 共享锁(读锁)
- 死锁的诊断与解除
- 超时法
- 事务等待图法
- 封锁的粒度
- 封锁对象的大小叫做封锁的粒度