第一章绪论
- 表述事物的符号称为数据。表述事物的符号可以是数字,也可以是文字、图形、图像、音频、视频等。
- 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。
- 数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护的系统。
- 数据库管理技术经历了人工管理、文件系统、数据库系统三个阶段。
- 概念模型实际上是现实世界到机器世界的的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象。概念模型到机器世界的过程叫逻辑结构设计,结果是数据库管理系统支持的数据模型。
- 数据库系统的三级模式结构是指数据库系统是由外模式、模式、内模式三级构成。
- 模式也称为逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 模式实际上是数据库在逻辑模式上的视图,一个数据库只有一个模式。
- 外模式/模式映像保证了数据与程序的逻辑独立性;模式/内模式保证了数据与程序的物理独立性。
- 数据库管理员有如下职责:
- 决定数据库中的信息内容和结构
- 决定数据库的存储结构和存储策略
- 定义数据的安全要求和完整性约束条件
- 监控数据库的使用和运行
- 数据库的改进和重组、重构
第二章关系数据库
- 传统的集合运算是二目运算,包括并、差、交、笛卡尔积4种运算P49
- 专门的关系运算包括选择(行)、投影(列)、连接(表)、除运算等。
- 自然连接是一种特殊的等值连接(自然连接就是去除等值相同的列)p54
- 关系代数运算p56-57
第三章关系数据库标准语言sql
当表的数据量比较大时,查询操作会比较耗时。建立索引是加快查询速度的有效手段。
所谓空值就是“不知道“或“不存在“或“无意义“的值
判断一个属性是否为空值,用IS NULL或 IS NOT NULL来表示。
第四章数据库安全性
- 数据库有关的安全性,主要包括用户身份鉴别、多层存储控制、审计、视图和数据加密等安全技术
- 每个用户在系统中都有一个用户标识。每个用户标识由用户名和用户标识号(uid)两部分组成。
- 常用的用户身份鉴别方法有以下几种:
- 静态口令鉴别
- 动态口令鉴别
- 生物特征鉴别
- 智能卡鉴别
- 多层存储控制策略有自主存取控制和强制存取控制
- 授权语句p141
- 敏感度标记被分成若干级别,例如绝密(TS)、机密(S)、可信©、公开§等。密级的次序是TS>=S>=C>=P
- 系统要求他对任何客体存取时必须满足
- 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
- 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
- 可以为不同用户定义不同的视图,把数据对象限制在一定的范围内。也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而对数据提供一定程度的安全保护。
第五章数据库完整性
- SQL标准使用了一系列概念来描述完整性,包括关系模式的实体完整性(primary key主键非空)、参照完整性(外键作为码时非空)和用户定义完整性(check判别 或者设置not null)。
第六章关系数据理论
- 一个好的模式应当不会发生插入异常、删除异常、和更新异常、数据冗余应应尽可能少。
- 规范化的基本思想是逐步消除数据依赖中不合适的部分
第七章数据库设计
数据库设计流程
- 需求分析阶段
- 概念结构设计阶段
- 逻辑结构设计阶段
- 物理结构设计阶段
- 数据库实施阶段
- 数据库运行和维护阶段
第十章数据库恢复技术
- 事务具有4个特性:原子性(A)、一致性©、隔离性(I)和持续性(D)
- 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
- 持续性也称为永久性
- 建立冗余数据最常用的技术是数据转储和登记日志文件。
- 所谓转储即数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。
- 转储可以分为
- 静态转储是在系统中无运行事务时进行的转储操作(同步)
- 动态转储是指转储期间允许对数据库进行存取和修改。(异步)
- 海量转储时指每次转储全部数据库。
- 增量转储则指每次只转储上一次转储后更新过的数据。
第十一章并发控制
- 并发操作带来的数据不一致性包括丢失修改、不可重复度和读“脏“数据。(保证数据一致性)
- 封锁时实现并发控制的一个非常重要的技术。
- 排他锁又称写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁为止。这就保证了其他事务在T释放A上的锁之前不能在读取和修改A。
- 共享锁又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁为止。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
- T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。
- 选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有的使其他事务得以继续运行下去。