关系数据库设计理论

  一、关系数据库模型

关系模型是一种基于表的数据模型,以下为关系学生信息,该表有很多不足之处,本文研究内容就是如何改进它:


下面是一些重要术语:

1.属性(attribute):列的名字,上图有学号姓名班级兴趣爱好班主任课程授课主任分数。

2.依赖(relation):列属性间存在的某种联系。

3.元组(tuple):每一个行,如第二行 (1301,小明,13班,篮球,王老师,英语,赵英,70) 就是一个元组

4.表(table):由多个属性,以及众多元组所表示的各个实例组成。

5.模式(schema):这里我们指逻辑结构,如 学生信息(学号姓名班级兴趣爱好班主任课程授课主任分数) 的笼统表述。

6.域(domain):数据类型,如string、integer等,上图中每一个属性都有它的数据类型(即域)。

7.键(key):由关系的一个或多个属性组成,任意两个键相同的元组,所有属性都相同。需要保证表示键的属性最少。一个关系可以存在好几种键,工程中一般从这些候选键中选出一个作为主键(primary key)

8.候选键(prime attribute):由关系的一个或多个属性组成,候选键都具备键的特征,都有资格成为主键。

9.超键(super key):包含键的属性集合,无需保证属性集的最小化。每个键也是超键。可以认为是键的超集。

10.外键(foreign key):如果某一个关系A中的一个(组)属性是另一个关系B的键,则该(组)属性在A中称为外键。

11.主属性(prime attribute):所有候选键所包含的属性都是主属性。

12.投影(projection):选取特定的列,如将关系学生信息投影为学号姓名即得到上表中仅包含学号姓名的列

13.选择(selection):按照一定条件选取特定元组,如选择上表中分数>80的元组。

14.笛卡儿积(交叉连接Cross join):如下图,第一个关系每一行分别与第二个关系的每一行组合。

X=

15.自然连接(natural join):如下图,第一个关系中每一行与第二个关系的每一行进行匹配,如果得到有交叉部分则合并,若无交叉部分则舍弃。

=

16.θ连接(theta join):即加上约束条件的笛卡儿积,先得到笛卡儿积,然后根据约束条件删除不满足的元组。

17.外连接(outer join):执行自然连接后,将舍弃的部分也加入,并且匹配失败处的属性用NULL代替。

外连接=

18.除法运算(division):关系R除以关系S的结果为T,则T包含所有在R但不在S中的属性,且T的元组与S的元组的所有组合在R中。下例足以说明,为了得到所有选了数学、英语并且是二年级的学生,我们用到除法运算。

除以=



二、函数依赖

1.函数依赖(functional dependency,FD)定义:

在一个关系中,任意元组,若属性A1,A2....An一样,则属性B1,B2...Bm必一样,那么称A1,A2...An函数决定B1,B2...Bm。

记号为    A1,A2...An B1,B2...Bm     (Ai与Bi有函数依赖)


上图中,若 学号 相同,则 姓名、班级、班主任 也必然相同,用这个道理我们可以粗略得出如下函数依赖:

学号 → 姓名,班级    (每一个学号对应一个姓名和班级,但由于可能重名,一个姓名不一定只对应一个学号)

班级  班主任    (一个班级对应一个班主任,但我们不排除一个老师任两个班的班主任,即一个班主任可能对应多个班级)

学号,课程  分数    (一个学号一个课程对应一个唯一的分数)

课程  授课主任    (一个课程对应一个授课主任)

授课主任  课程    (一个授课主任只能负责一门课程)


2.Armstrong aximos规则:

传递律(Transitivity):R(A,B,C) 其中R为关系,ABC均为属性。若A  B 和 B  C 则 A  C 。

增长律(Augmentation):如果 A  B,则AC  BC,延长函数依赖不变。

自反律(Reflexivity):如果 属性集合B 属于 属性集合A,那么 A  B,这个又称为平凡函数依赖(见3)


3.平凡函数依赖:

这里的平凡(trivial)又有无价值、琐碎的意思,理解上就是说了等于白说。

学号,姓名  学号 就是一个平凡函数依赖,因为右边的属于左边的,属于无价值信息。


4.分解/结合规则:  

A1,A2...An  B1,B2...Bm 等效于 A1,A2...An  B1 ; A1,A2...An  B2 ; ..... A1,A2...An  Bm 。右边是可以拆开、合并的。


5.属性的闭包(closure):

用一个例子来说明

已知关系的所有属性集合{A,B,C,D,E,F}。

已知函数依赖  AB  C , BC  AD , D  E , CF  B 。

求{A,B}的闭包  (我们用  {A,B}+  来表示)。

解:

<1>——分解函数依赖,使右边只有一个属性。 AB  C   ;   BC  A   ;   BC  D   ;   D  E   ;   CF  B 。

<2>——用{A,B}集合与这些函数依赖推导出新的属性加入集合,直到这个集合不再增长,此时该集合就是{A,B}+(闭包)。

容易发现 {A,B}+ = {A,B,C,D,E}

实际上,求集合C的闭包C+,就是由全部函数依赖以及C,推导出所有能够推导的属性集合 与 C的 并集。

闭包算法能找到所有正确的函数依赖————反过来,已知 {A,B},{A,B}+,我们就能列出所有能用{A,B}推导出的函数依赖


6.判定、计算键:

(1)运用闭包算法判断是否够是键:

要验证{A1,A2...An}是否是关系的键,可以先检查“{A1,A2...An}+是否包含了关系的全部属性”,再检查“不存在从{A1,A2...An}中移出一个属性后的集合C,使得C+包含关系的全部属性”。

(2)图解计算键:

用一个例子来说明

已知   {A,B,C,D,E}    :    AB  C , B  D , C  E , CE  B

<1>——根据依赖关系画出关系图,入度为0的必在键中,出度为0的必不在键中,如下图


现在可知,键中必有A,必无D。

<2>——将入度或出度为0结点删去,化简依赖图,如下图


<3>——选择所有不能相互推导的属性集合,逐一检查能否遍历上面的图(注意,依赖图中只有入度全满足才算可推导)

上图中不能相互推导的集合有:{B}能遍历全图,{C}能遍历全图,{E}不能遍历全图(单个E不能满足B的全部入度)

(这里,考虑一下{B,E},因为从B出发能遍历到E,连通,所以不检查)

<4>——把上一步算出的集合分别与第1步中入度为0的点组合,最终得到候选键。

本例中候选键为 {A,B}、{A,C} 。


7.函数依赖的基本集:

(1)相关定义:

基本集:对于一个给定的函数依赖集合S,存在多个等效的函数依赖集合,任何与S等效的函数依赖集合都被称为S的基本集。

最小化基本集(minimal basis):需要满足以下条件

(1)所有函数依赖的右边均为单一属性。(右边最简)

(2)删除其中任何之一就不再是基本集。(数量最少)

(3)对于任意一个函数依赖,若其左边删除一个或多个属性,则不再是基本集。(左边最简)

(2)计算最小化基本集:

用一个例子来说明

已知   {A,B,C,D,E}    :    AB  CD , B  D , C  E , CE

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值