E-R(entity-relationship)模型有三个基本概念:实体集,联系集和属性。
实体集的思想可以类比面向对象的思想,每一个实体就是一个对象,而有相同属性的一些实体在一起就构成了实体集(类比对象到类的抽象过程)。而对于一些属于同一个实体集的实体的集合,使用术语实体集的外延来表示。
实体集不必互不相交。
联系指多个实体间的相互关联,联系集即相同联系的集合,正规地说,联系集是多个实体集之间的关系。使用术语:实体集E1, E2···参与联系集R。参与联系集的实体集的数目称为度。
一个非二元联系集总可以转化为一组二元联系集,以三元联系集R为例,他将实体集A、B、C联系起来。
用实体集E替代联系集R,并创建三个联系集:RA,关联E和A;RB,关联E和B;RC,关联E和C。
如果R有属性,则将这些属性赋给E。针对联系集中的每个联系(ai, bi. ci),都在实体集E中创建一个新的实体ei。最后在三个新的联系集中,分别插入如下新联系:在RA中插入(ei, ai),在RB中插入(ei, bi),在RC中插入(ei, ci)。
属性的取值范围称为域,属性可以有以下分法:
复合属性如name可以包括first_name和last_name。
多值属性如一个人可以有不同多个的手机号,用花括号将属性括起来以表示其是一个多值属性,如{phone_number}。一般对多值属性的数目会设置上下界。
派生属性的值可以从其他属性或实体中派生而来。例如属性date_of_birth就可以是age的派生属性,通过当前时间和age可以计算出date_of_birth。
派生属性的值并不储存,而是在需要时计算出来。
映射基数表示一个实体通过一个联系集可以关联的实体的个数。在二元联系集上,有一对一、一对多、多对一和多对多四种情况。
实体集和二元联系集之间的一条边可以有一个关联的最大和最小的映射基数,用l. .h的形式表示,其中l表示最小的映射基数,h表示最大的映射基数。*则表示没有限制。
如:考虑实体集student和teacher,联系集advisor(导师)的情况。
在advisor和student间的边上有1. .1的基数约束表示一个学生必须有且仅有一个导师;
从advisor到teacher边上的约束0. .*表示教师可以有0或多个学生
如果实体集E中的每个实体都参与到联系集R中的至少一个联系中,则称E在R中的参与是全部(total) 的,反之,不是每个实体都参与则称为部分的。
有主码的实体集称为强实体集,而所有属性一起都不能形成主码的实体集称为弱实体集。
弱实体集必须与另一个称作标识(identifying) 或 属主实体集(owner entity set) 的实体集关联才有意义。他们之间的联系称为标识性联系。标识性联系从弱实体集到标识实体集是多对一的,且弱实体集是全部参与的。
弱实体集的主码由标识实体集的主码加上弱实体集的分辨符构成(即弱实体集的分辨符的定义就是其主码减去标识的主码)。
下面的概念中用希腊字母(如α)表示属性集,用αβ表示α ∪ \cup ∪β。当属性集是一个超码时用K表示,用单个小写字母(如r)表示关系,用r( R )表示一个关系模式,该模式是关系r的,R是其属性集。
考虑一个关系模式r( R ),令α ⊆ \subseteq ⊆R且β ⊆ \subseteq ⊆R。
特殊的,当函数依赖K→R在r( R )上成立时,K是r( R )的一个超码。
对于属性组A→属性β,若β依赖于A的所有属性,则称为完全函数依赖;若只依赖于其中一部分,则称为部分函数依赖。
在所有关系中都成立的函数依赖称为平凡的(trivial),一般地,若β ⊆ \subseteq ⊆α,则函数依赖α→β是平凡的。
若r( R )的每个满足函数依赖集F的实例也满足函数依赖f,则称R上的f被r上的F逻辑蕴涵。例如:给定关系模式r(A,B,C)及函数依赖集:A→B,B→C。那么函数依赖A→C被逻辑蕴涵。
对于函数依赖集F,用F+表示F的闭包(closure),即:能够从F推导出的所有函数依赖(即被F逻辑蕴涵)的集合。
函数依赖理论遵循以下几个规则:
如果属性的域中的元素是不可再分的单元,则称该域是原子的。如果一个关系模式R中的所有属性的域都是原子的,则称该关系模式属于第一范式(1NF)。关系数据库一定是满足第一范式的。
在第一范式的基础上消除了非主属性对主码的部分函数依赖。
主属性
Boyce-Codd范式可以消除所有基于函数依赖能够发现的冗余。具有函数依赖集F的关系模式满足BCNF的条件是:对F+中所有形如α→β的函数依赖,下面至少成立一项:
对于一个不满足BCNF的关系模式R,至少存在一个非平凡的α→β。用以下两个关系模式取代R:
有时一次分解不能得到最终结果,需要多次迭代。
3NF是一个比BCNF放宽了约束的范式,它允许左侧不是超码的非平凡函数依赖。因此满足BCNF一定满足3NF,反之不一定。
具有函数依赖集F的关系模式满足BCNF的条件是:对F+中所有形如α→β的函数依赖,下面至少成立一项:
满足3NF的关系模式的所有非主属性都不传递依赖于主码。