数据库笔记--(第八章)关系数据库设计

0. 超码/候选码/主码/主属性/非主属性

超码=码=键: 能够唯一标识一条记录的属性或属性集

候选码: 能够唯一标识一条记录的最小属性集。他们的任意真子集都不能成为超码。

主码:从候选码里人为选取的最小属性集。

主属性: 候选码的并集。

非主属性:不包含在候选码里的属性。除了主属性的其他属性。

1. 第一范式(1NF)

如果一个关系模式R中的每个属性A的域值都是原子的,即属性值是不可再分的,则关系模式R属于第一范式

2. 函数依赖 ( Functional dependency)

给定r(R)的一个实例 ,α 与β包含于R中 ,满足函数依赖 α ->β 的条件是:对实例中的所有元组对t1和t2,若t1[α ] = t2[β] , 则有t2[α ] = t2[β] 。 ( β 依赖于 α ) 

例题1:答案(C)

数据库笔记--(第八章)关系数据库设计


例题2 :

数据库笔记--(第八章)关系数据库设计

答案: F= { employee_ID , date -> turnover_per_day  , 

employee_ID ->depaertment_name ,     

department_name -> manager        }


 

部份依赖:若 AB->C , 则A->C , B->C 。

完全依赖:若 AB->C ,但AB单独得不出C。

传递依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

平凡依赖:若Y 包含于 X 中,X -> Y 为平凡依赖。

例题3:

设A,B,C,都是R(U)的属性 , 则 A->A , ABC->A , ABC->BC都是平凡依赖。

A->B,AB->C 是非平凡依赖


 

3. BCNF范式与第三范式

数据库笔记--(第八章)关系数据库设计

BCNF性质:不存在属性(主属性和非主属性)候选码的传递和部份依赖。 BCNF必满足3NF。

具有函数依赖集F的关系模式R若满足BCNF范式,对F,中所有形如x->y 的 函数依赖,以下至少有一项成立:

  • x->y是平凡的函数依赖(y包含于x中)
  • x是模式R的一个超码

3NF性质:不存在非主属性候选码的部分传递依赖。3NF必满足2NF。

具有函数依赖集F的关系模式R若满足3NF范式,对F,中所有形如x->y 的 函数依赖,以下至少有一项成立:

  • x->y是平凡的函数依赖(y包含于x中)
  • x是模式R的一个超码
  • y-x 的每个属性都包含于R的一个候选码中

4. 函数依赖理论(属性集的闭包/无损分解/保持依赖)

属性集闭包的求解算法如下:令 α 是一个属性集,函数依赖F下的 α 是属性集闭包 通过以下求得

数据库笔记--(第八章)关系数据库设计

 

 

 

候选码的求解:所谓候选码即能决定整个关系的,我们通过找未出现在依赖右边的 两侧均未出现的元素即可求得。候选码的属性集闭包等于所有的属性。

无损分解:将一个关系模式分解成若干个关系模式后,通过自然连接或投影等运算仍能还原到原来的关系模式。如果R1 ∩ R2是R1或R2的超码,则R上的分解(R1,R2)是无损分解(充分条件)。

保持依赖:如果 F 上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(充分条件)。

还有一种验证保持依赖的方法是:对 F 中的每一个 α ->β 做下面的算法

数据库笔记--(第八章)关系数据库设计

 

 

 如果result 包含 β  的所有属性,则函数依赖 α ->β 保持。分解之后的保持依赖的当且仅当上述过程中 F 的所有依赖都保持。 

5. BCNF范式的分解

6. 第三范式的分解

数据库笔记--(第八章)关系数据库设计

上一篇:解决 SQL 注入和 XSS 攻击(Node.js 项目中)


下一篇:mysql目录结构及配置文件