- 数据库系统是一个人-机系统,而数据库是用于存储数据的。
- 提高开发效率
- 少量修改应用程序
- 减轻DBA维护负担
区别
- 前者冗余度大,后者相反
- 前者共享性差,后者相反
- 前者独立性差,后者相反
- 前者面向某一个应用,后者面向整个组织或企业
- 文件记录有结构,整体无结构
- 数据库数据是完全结构化的
联系
- 都是管理数据的软件
- 数据库中数据的组织和存储通过文件系统来实现
- 数据结构化
- 数据的共享性高,冗余度低,易扩充
- 数据的独立性高
- 数据由DBMS统一管理和控制
- 数据库定义功能
- 数据组织、存储和管理功能
- 数据操纵功能
- 数据库的事务管理和运行管理
- 数据库的建立和维护功能
- 其他功能,如不同数据库之间的互访和互操作功能
- 定义:用于信息世界的建模
- 作用:方便设计人员与用户交流
- 概念:用于对现实世界的抽象的工具,用于提供信息表示和操作手段的形式架构
- 作用:数据模型是数据库系统的基础
- 三要素:数据结构、数据操作、完整性约束
- 定义:
- 有且仅有一个节点有双亲,代表根节点
- 根以外的其他节点有且仅有一个双亲节点
- 优点:
- 数据结构简单清晰
- 查询效率高
- 良好的完整性支持
- 缺点:
- 无法表达非层次性的联系
- 对用户要求比较高
- 定义:
- 允许一个以上的节点无双亲
- 一个节点可以有多于一个的双亲
- 优点:
- 能直更为直接描述世界
- 存取效率高
- 缺点:
- 结构复杂
- 数据定义语言、数据操纵语言比较复杂,要求用户掌握数据库结构和存取路径,不容易使用
- 优点:
- 严格的数学基础
- 概念单一
- 存取路径对用户透明,具有更高的数据独立性、更好的安全保密性,简化开发的工作
- 缺点:
- 查询效率不如非关系数据模型
- 定义:
- 外模式——子模式或用户模式
- 模式——逻辑模式
- 内模式——存储模式
- 优点:
- 外模式/模式映象和模式/内模式映像(两级映像)使得数据具有较高的逻辑独立性和物理独立性
- 数据库
- 数据库管理系统
- 应用系统
- 数据库管理员
- 用户
- 数据库管理员:
- 决定数据库信息和内容
- 决定数据库的存储结构和存取策略
- 定义数据安全性和完整性要求
- 监控数据库使用和运行
- 数据库改进和重组
- 系统分析员:
- 应用系统的需求分析和规范说明
- 数据库系统的概要设计
- 数据库设计人员:
- 数据的确定和数据库各级模式的设计
- 参与用户需求调查和系统分析,然后进行数据库设计
- 应用程序员的职责:
- 设计和编写应用系统的程序设计,并进行调试和安装
- 语法格式:GET 工作空间名 (表达式1) [:条件] [DOWN | UP 表达式2 ]
- 例子:
- 查询信息系(IS)中年龄小于20岁的学生的学号和年龄
- GET W (Student.Sno,Student.Sage): Student.Sdept=’IS’∧ Student.Sage<20
- 查询计算机科学系(CS)学生的学号、年龄,结果按年龄降序排序
- GET W (Student.Sno,Student.Sage): Student.Sdept=’CS‘ DOWN Student.Sage
- 综合统一:数据定义、操纵、控制于一体
- 高度非过程化
- 面向集合的操作方式
- 自含式语言、嵌入式语言
- 语言简洁,易学易用
- RESTRICT:表的删除是有限制的,如有依赖,则删除失败
- CASCADE:表的删除是没有限制的,如有依赖,一并删除
- 简化用户操作
- 多角度看待同一数据
- 一定的逻辑独立性
- 安全保护
- 基本表的行列子集视图一般可更新
- 若视图的属性来自聚集函数、表达式,则肯定不可更新
- 用户身份鉴别
- 多层存取控制
- 视图技术
- 审计
- 数据加密
- 自主存取控制(B2):各个用户对不同数据对象的存取权限
- 强制存取控制(B2):每个数据对象被标以一定的密级,每个用户也被授予某一个级别的许可证
- 自主的含义:用户可以自主地将权限授予别人
- GRANT语句的一般格式:
GRANT <权限>[,<权限>]…
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]…
[WITH GRANT OPTION];- WITH GRANT OPTION子句:
指定:可以再授予
没有指定:不能传播- 将角色R1授予用户U1,并且U1可继续授权给其他用户
GRANT R1 TO U1 WITH ADMIN OPTION
- 主体:系统中的活动实体,包括实际用户和用户进程
- 客体:系统中的被动实体,包括文件、基本表、视图、索引
- 敏感度标记:绝密、机密、可信、公开
- 主体敏感度标记:许可证级别
- 客体敏感度标记:密级
- 定义功能
- 检查功能
- 违约处理功能
- CONSTRAINT 名称 CHECK (条件)
- constraint 名称 foreign key(Deptno) references DEPT(Deptno)
- 创建断言的语句格式
CREATE ASSERTION<断言名><CHECK 子句>- 示例
CREATE ASSERTION ASSE_SC_CNUM1
CHECK(60 >= ALL( SELECT count(*)
FROM SC
GROUP by cno)
);
- 需求分析
- 概念结构设计(模式)
- 逻辑结构设计(外模式)
- 数据库物理设计(内模式)
- 数据库实施
- 数据库运维
- 目标:了解原系统的工作概况,明确用户需求,确定新系统的功能
- 内容:“数据“ 和 “处理”
- 信息需求
- 处理要求
- 安全性与完整性要求
- 数据项、数据结构、数据流、数据存储、处理过程
- 对数据的描述,在需求分析阶段建立,概念设计的基础,不断修改、充实、完善
- 定义:信息世界的结构,既概念模型
- 特点:
- 真实反映
- 易于理解
- 易于转换(成网状、层次)
- 易于更改
- 策略:
- 自顶向上
- 自底向上
- 逐步扩张
- 混合策略
- 将E-R模型转换为DBMS所支持的数据模型相符合的逻辑结构
- 步骤:
- 概念模型—>关系模型
- 对数据模型优化
- 为判断关系模式的优劣提供标准
- 指导关系数据模型的优化
- 预测模式可能出现的问题
- 提供自动产生各种模式的算法工具
- 提供严格的理论基础
- 为逻辑数据模型选取一个最适合应用要求的物理结构
- 步骤:
- 确定数据库的物理结构,主要指存取方法和存储结构
- 对物理结构进行评价,重点是时间和空间效率
- 再组织:重新安排存储位置、回收垃圾、减少指针链
- 重构造:部分修改模式和内模式,既修改逻辑和物理结构
- 原因:物理存储变坏,降低了存取效率,数据库性能下降,应用需求改变了,实体间的联系发生了变化
- 非平凡的函数依赖:X→Y,但Y⊈X
- (Sno,Cno) ——> Grade
- 平凡的函数依赖:X→Y,但Y⊆X
- (Sno,Cno) ——> Sno
- (Sno,Cno) ——> Cno
- 传递函数依赖
- (Sno,Cno) ——> Mname
- 候选码是最小的超码,超码相对比较大
- 1NF:(表中不含表)
- 强调的是列的原子性,即列不能够再分成其他几列。
- 2NF:(消除部分函数依赖)
- 若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。
- 例子:
S-L-C(Sno, Cno, Sdept, Sloc, Grade) ∈1NF
S-L-C(Sno, Cno, Sdept, Sloc, Grade) ∈ 2NF
非主属性 Sdept 和 Sloc 部分函数依赖于码(Sno, Cno)- 3NF:(消除传递函数依赖)
- 符合2NF,另外非主属性必须直接依赖于主属性,不能存在传递依赖。
- BCNF:(消除多个候选码)
- 符合3NF,并且主属性不依赖于主属性
- 在满足第三范式的基础上,且不允许主键的一部分被另一部分或其它部分决定。
- 特定:
- 满足第三范式。
- 所有非主属性对每一个码都是完全函数依赖。
- 所有的主属性对每一个不包含它的码,也是完全函数依赖。
- 没有任何属性完全函数依赖于飞码的任何一组属性。
- 示例:(以下例子 不符合 第BCNF范式)
学生 老师 课程
Stu Teacher Course
张三 李开复 数据库
假设:每个老师只教一门课
候选码:
(Stu,Teacher)->Course
(Stu,Course)->Teacher
这两个码由两个属性组成,而且它们是相互交叉的,所以不存在传递依赖,所以为3NF
但是由于:Teacher->Course,(主键的一部分被另一部分决定),所以不符合BCNF
http://www.cnblogs.com/bewolf/p/4445027.html
- 当两个操作之间发生故障时,只写入成功一个的时候:
- 若先写数据库,日志文件没写成功,则无法恢复
- 若先写日志文件,数据库没写成功,则执行UNDO操作即可恢复
- 若故障发生时,T1的事物已开始但未做完则回滚,否则重做
事务故障的恢复策略和方法
- 反向扫描文件日志,查找该事务的更新操作
- 对该事物的更新操作执行逆操作,直至读到此事物的开始标记,事务故障恢复完成
系统故障的恢复策略和方法
- 正向扫描日志文件找出在故障发生前已经提交的事务队列和未完成的事物队列
- 对未完成的事务队列中的各个事务执行回滚操作
- 对已经提交的事务队列中的各个事务执行重做操作
- 介质故障的恢复策略和方法
- 装入最新的数据库后备副本,是数据库恢复到最近一次转储时的一致性状态
- 装入转储结束时刻的日志文件副本
- 启动系统恢复命令,由DBMS完成恢复功能
- 利用检查点技术,只需从某个时刻开始扫描日志文件,这样就缩短了扫描日志的时间
- 检查点技术不需要执行重做操作
- 保证镜像数据与主数据一致性
- 用途:
- 用于数据库恢复
- 提高数据的可用性(充当从服务器)
- 保证事务的一致性和隔离性
- 带来数据不一致:
- 丢失修改(结果被覆盖)
- 不可重复读(数据被修改)
- 读脏数据(读到不正确的数据)
- 排他锁(写锁)
- 共享锁(读锁)
- 含义:该等待事务等待时间太长,好像被锁住了
- 避免策略:先来先服务
- 含义:事务永远无法结束,形成死锁
- 避免策略:
- 一次封锁(一次将所要使用的数据加锁)
- 顺序封锁(预先规定封锁顺序)
- 诊断死锁:超时法、事务等待图法
- 定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次次序串行地执行它们时的结果相同
- 先一起获得锁,再一起释放锁,两个阶段分开
- 提高封锁子系统的效率
- 对任一节点加锁时,先对它的上层节点加意向锁。引进意向锁之后,系统对某一个数据对象加锁时不必逐个检查与下一级节点的封锁冲突了