E-R 方法是“实体 -联系方法”的简称它是描述现实世界概念结构模型的有效方法是表示概念模型的一种方式,用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性, 并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系, 在菱形框内写明联系名, 并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或 m:n) 在 ER图中有如下四个成分:矩形框:表示实体,在框中记入实体名菱形框:表示联系,在框中记入联系名椭圆形框:表示实体或联系的属性,将属性名记入框中对于主属性名,则在其名称下划一下划线连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型对于一对一联系, 要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写 N;对于多对多关系,则要在两个实体连线方向各写N,M )[2]构成 E-R图的基本要素是实体型、属性和联系,其表示方法为:·实体型 (Entity):具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体; 在 E-R图中用 矩形 表示,矩形框内写明实体名;比如学生张三丰、学生李寻欢都是实体。
如果是弱实体的话,在矩形外面再套实线矩形·属性(Attribute):实体所具有的某一特性,一个实体可由若干个属性来刻画在 E-R图中用 椭圆形 表示,并用无向边将其与相应的实体连接起来;比如学生的姓名、学号、性别、都是属性如果是多值属性的话,在椭圆形外面再套实线椭圆如果是派生属性则用虚线椭圆表示·联系(Relationship):联系也称关系, 信息世界中反映实体内部或实体之间的联系实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系在 E-R图中用 菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型 (1 : 1,1 : n或 m : n ) 比如老师给学生授课存在授课关系,学生选课存在选课关系如果是弱实体的联系则在菱形外面再套菱形[3]联系可分为以下 3 种类型:(1) 一对一联系 (1 ∶1) 例如,一个部门有一个经理, 而每个经理只在一个部门任职,则部门与经理的联系是一对一的2) 一对多联系 (1 ∶N) 例如,某校教师与课程之间存在一对多的联系“教”,即每位教师可以教多门课程,但是每门课程只能由一位教师来教(3) 多对多联系 (M ∶N) 例如,图 1 表示学生与课程间的联系 (“学 ”)是多对多的,即一个学生可以学多门课程,而每门课程可以有多个学生来学。
联系也可能有属性例如,学生“ 学” 某门课程所取得的成绩, 既不是学生的属性也不是课程的属性由于“ 成绩” 既依赖于某名特定的学生又依赖于某门特定的课程,所以它是学生与课程之间的联系“ 学”的属性 范式目前关系数据库有六种范式:第一范式(1NF ) 、第二范式( 2NF ) 、第三范式(3NF ) 、巴斯 - 科德范式( BCNF ) 、第四范式 (4NF)和第五范式( 5NF ,又称完美范式) 满足最低要求的范式是第一范式(1NF ) 在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF ) ,其余范式以次类推一般说来,数据库只需满足第三范式 (3NF)就行了各类范式第一范式( 1NF )所谓第一范式( 1NF )是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的, 即数据库表的 每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项即实体中的某个属性有多个值时,必须拆分为不同的属性在符合第一范式(1NF )表中的每个域值只能是实体的一个属性或一个属性的一部分简而言之,第一范式就是无重复的域说明:在任何一个关系数据库中,第一范式(1NF )是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF ) 。
不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型第二范式( 2NF )在 1NF 的基础上,非码属性必须完全依赖于码[在 1NF 基础上消除非主属性对主码的部分函数依赖 ] 第二范式( 2NF )是在第一范式( 1NF )的基础上建立起来的,即满足第二范式(2NF )必须先满足第一范式( 1NF ) 第二范式( 2NF )要求数据库表中的每个实例或记录必须可以被唯一地区分选取一个能区分每个实体的属性或属性组,作为实体的唯一标识例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键, 任何一个候选键都可以被选作主键在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中, 没有对其身份证号进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时, 设计辟如 ID 等不重复的编号以实现区分,被添加的编号或ID 选作主键 (该主键的添加是在 ER设计时添加,不是建库时随意添加)第二范式( 2NF )要求实体的属性完全依赖于主关键字所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键第三范式( 3NF )在 1NF基础上, 任何非主属性不依赖于其它非主属性[ 在 2NF基础上消除传递依赖 ]第三范式( 3NF )是第二范式( 2NF )的一个子集,即满足第三范式(3NF )必须满足第二范式( 2NF ) 简而言之,第三范式(3NF )要求一个关系中不包含已在其它关系已包含的非主关键字信息例如,存在一个部门信息表, 其中每个部门有部门编号( dept_id ) 、部门名称、部门简介等信息那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中如果不存在部门信息表,则根据第三范式(3NF )也应该构建它,否则就会有大量的数据冗余 简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足 2NF的基础上,任何非主属性不得传递依赖于主属性巴斯-科德范式( BCNF)在 1NF基础上,任何非主属性不能对主键子集依赖[ 在 3NF基础上消除对主码子集的依赖 ] 巴德斯科范式( BCNF )是第三范式( 3NF )的一个子集,即满足巴斯 - 科德范式(BCNF )必须满足第三范式( 3NF ) 。
通常情况下,巴斯 - 科德范式被认为没有新的设计规范加入, 只是对第二范式与第三范式中设计规范要求更强,因而被认为是修正第三范式, 也就是说, 它事实上是对第三范式的修正,使数据库冗余度更小这也是 BCNF 不被称为第四范式的原因某些书上,根据范式要求的递增性将其称之为第四范式是不规范,也是更让人不容易理解的地方 而真正的第四范式,则是在设计规范中添加了对多值及依赖的要求对于 BCNF ,在主码的任何一个真子集都不能决定于非主属性关系中U 主码,若 U 中的任何一个真子集X 都不能决定于非主属性Y,则该设计规范属性BCNF 例如:在关系 R中,U为主码,A属性是主码中的一个属性, 若存在 A->Y,Y为非主属性,则该关系不属性BCNF 一般关系型数据库设计中,达到BCNF 就可以了!数据库范式 1NF 2NF 3NF BCNF( 实例)设计范式(范式 , 数据库设计范式 , 数据库的设计范式) 是符合某一种级别的关系模式的集合 构造数据库必须遵循一定的规则在关系数据库中, 这种规则就是范式 关系数据库中的关系必须满足一定的要求,即满足不同的范式 目前关系数据库有六种范式:第一范式(1NF ) 、第二范式( 2NF ) 、第三范式( 3NF ) 、第四范式( 4NF ) 、第五范式( 5NF )和第六范式( 6NF ) 。
满足最低要求的范式是第一范式( 1NF ) 在第一范式的基础上进一步满足更多要求的称为第二范式(2NF ) ,其余范式以次类推一般说来,数据库只需满足第三范式(3NF )就行了下面我们举例介绍第一范式(1NF ) 、第二范式( 2NF )和第三范式( 3NF ) 在创建一个数据库的过程中, 范化是将其转化为一些表的过程,这种方法可以使从数据库得到的结果更加明确这样可能使数据库产生重复数据,从而导致创建多余的表 范化是在识别数据库中的数据元素、关系,以及定义所需的表和各表中的项目这些初始工作之后的一个细化的过程下面是范化的一个例子 Customer Item purchased Purchase price Thomas Shirt $40 Maria Tennis shoes $35 Evelyn Shirt $40 Pajaro Trousers $25 如果上面这个表用于保存物品的价格,而你想要删除其中的一个顾客, 这时你就必须同时删除一个价格 范化就是要解决这个问题, 你可以将这个表化为两个表,一个用于存储每个顾客和他所买物品的信息,另一个用于存储每件产品和其价格的信息,这样对其中一个表做添加或删除操作就不会影响另一个表。
关系数据库的几种设计范式介绍1 第一范式( 1NF )在任何一个关系数据库中,第一范式(1NF )是对关系模式的基本要求,不满足第一范式( 1NF )的数据库就不是关系数据库所谓第一范式( 1NF )是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值, 即实体中的某个属性不能有多个值或者不能有重复的属性如果出现重复的属性, 就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系在第一范式(1NF )中表的每一行只包含一个实例的信息例如,对于图3-2 中的员工信息表,不能将员工信息都放在一列中显示, 也不能将其中的两列或多列在一列中显示;员工信息表的每一行只表示一个员工的信息, 一个员工的信息在表中只出现一次简而言之, 第一范式就是无重复的列2 第二范式( 2NF )第二范式( 2NF )是在第一范式( 1NF )的基础上建立起来的,即满足第二范式(2NF )必须先满足第一范式( 1NF ) 第二范式( 2NF )要求数据库表中的每个实例或行必须可以被惟一地区分为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识如图3-2 员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。
这个惟一属性列被称为主关键字或主键、主码第二范式( 2NF )要求实体的属性完全依赖于主关键字所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识简而言之, 第二范式就是非主属性非部分依赖于主关键字3 第三范式( 3NF )满足第三范式(3NF ) 必须先满足第二范式 (2NF ) 简而言之,第三范式(3NF )要求一个数据库表中不包含已在其它表中已包含的非主关键字信息例如,存在一个部门信息表,其中每个部门有部门编号(dept_id ) 、部门名称、部门简介等信息那么在图 3-2 的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中如果不存在部门信息表, 则根据第三范式( 3NF )也应该构建它,否则就会有大量的数据冗余简而言之,第三范式就是属性不依赖于其它非主属性数据库设计三大范式应用实例剖析数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert ) 、删除( delete )和更新(upda。