数据库系统概念_回顾

来源:互联网 发布:java redis list 操作 编辑:程序博客网 时间:2024/05/16 08:41

数据库关键点概括

数据抽象一般分三层:

最底层-----物理层physical level (描述数据实际上是怎样存储的);

中间层-----逻辑层logic level (描述数据库中存储什么数据及这些数据间存在什么关系);

最顶层-----视图层view level (只描述整个数据库的某个部分).

 

关系模型relational model  (logic level)

关系模型用表的集合来表示数据与数据之间的关系。(每个有多个列,每列有唯一的列名)。这里还会涉及到范式(BCNF,第三范式等),满足数据库范式的设计多是结构清晰地,可避免数据冗余与操作异常,但不代表不满足范式的就是错误的,不合理的。

 

实体-联系模型 entity-relationship model  (view level)

实体-联系数据模型被广泛应用于数据库的设计(这是一个图,矩形表示实体类,菱形表示关系,椭圆形表示实体的属性)。

一个好的数据库设计,不会包括信息冗余重复,不会缺乏表达某些信息的能力。

 

应用设计

触发器

断言(当创建断言时,系统要检测其有效性。如果断言有效,则以后只有不破坏断言的数据库修改操作才能被允许。如果断言较复杂,则检测会带来相当大的开销。)

授权

视图

函数(通过知识数据库定义的方法,它接收参数并返回某种类型的值,并且不涉及特定用户表。

存储过程(proc是用户定义的一系列的SQL语句的集合,涉及到特定表或其他对象的任务,用户可以调用存储过程。

 

数据存储和查询

按文件组织形式分:定长记录和变长记录;

按文件中记录的组织分:顺序文件组织和多表聚类文件组织。

 

索引和散列

稠密索引与稀疏索引;

聚集索引与非聚集索引;

多级索引;

索引的更新;

辅助索引。

 

静态散列与动态散列;

散列函数,桶溢出处理,散列索引;

 

查询的处理与优化

 

事务的管理

事务的四个特性;

并发执行;

可串行化(冲突可串行化);

可串行化的判定。

 

并发控制

基于锁的协议;(两阶段锁协议,严格两阶段锁协议,强两阶段锁协议)

基于时间戳的协议

死锁的预防

死锁的处理

 

恢复系统

基于日志的恢复(延迟的数据库修改,立即的数据库修改、检查点的引入)

并发事务的恢复(事务回滚、检查点、重启动恢复、redoundo列表)


 

关系数据库

关系模型用表的集合来表示数据与数据之间的联系。

数据库模式(database schema),它是数据库的逻辑设计;

数据库实例(database instance),它是给定时刻数据库中数据的一个快照。

如关系模式Account_schema = (account_number, branch_name, balance).我们可以说Account_schema表示account tablerelational model

 

1.       Key

一个关系中没有两个元组的所有属性的值都是相同的。

Candidate key 是指最小superkey.

Superkey 是一个或多个属性的组合,这些属性的组合可以使我们在一个关系中唯一的标识一个元组。

Primary Key,我们用此代表被数据库设计者选中的用来在同一关系中区分不同元组的candidate key.

Foreign Key,一个关系模式R1可能在它的属性中包括另个关系模式R2primary key.这个属性就叫做R1参照R2Foreign Key.

 

2.       关系代数基本的运算

选择、投影、更名、笛卡尔乘积

R = borrow * loan

Borrow = (customer_name, loan_number)

Loan = (loan_number, branch_name, amount)

R = (borrow.customer_name, borrow.loan_number, loan.loan_number, loan.branch_name, loan.amount)

borrow中有n1个元组,loan中有n2个元组。

R中会有n1*n2个元组。

 

3.       第一范式First Normal Form, 1NF

如果一个关系模式R的所有属性域都是原子的,我们称关系模式R属于第一范式。

(如果某个域的元素被认为是不可分的单元,那么这个域就是原子的。)

 

4 第二范式Second Normal Form, 2NF

数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖。(部分函数依赖---存在组合关键字中的某些字段决定非关键字段的情况)

         Student (学号、姓名、课程名字、学分,成绩)

学号、课程名字->(姓名、成绩、学分)

         这个模式即不符合第二范式,姓名可以由学号决定,学分可以由课程名字决定。

         改进为:

         学生(学号、姓名)

         课程(课程名字、学分)

         选课(学号、课程名字、成绩)

         这便是符合2NF

 

5 第三范式Third Normal Form, 3NF

2NF的基础上,数据表如果不存在非关键字段对任一候选关键字段的传递函数依赖,则符合3NF

         Student(学号、姓名、所在学院、学院地点)

(学号)->(所在学院),(所在学院)->(学院地点),满足2NF,不满足3NF

         改进为:

         Student(学号、姓名、学院)

         学院(学院名称、地点)

         即符合3NF

 

6 BCNF范式

3NF的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖,则符合BCNF范式。

Store(仓库ID、物品ID管理员ID、数量),而且仅有一个管理员管理一个仓库。

(仓库ID、物品ID->(管理员ID、数量)

(管理员ID、物品ID->(仓库ID、数量)

由于(仓库ID ) -> (管理员ID);  (管理员ID) ->(仓库ID)

故不满足BCNF

 

BCNF,它能消除所有基于函数依赖能够发现的冗余。

 

7 函数依赖集的闭包

         Closure of a set of Functional Dependencies

 

8.      无关属性extraneous attribute

         F上有函数依赖AB->CA->C,  BAB->C中是无关的。

         假设F上有函数依赖AB->CDA->C, CAB->CD中是无关的。

 

9 正则覆盖 Canonical Cover

F是一个依赖集,同时F中必须满足:

1)       F中的任何函数依赖都不包含无关属性;

2)       F中函数依赖的左半部都是唯一的。即F中不存在两个依赖如下A1->B1, A2->B2,其中A1=A2.

 

正则覆盖canonical cover 未必是唯一的。

 

 

 (未完,待续)

原创粉丝点击