数据库设计范式是数据库设计所需要满足法律规范,满足这些法律规范数据库是简洁、构造明晰,同步,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不但给数据库编程人员制造麻烦,并且面目可憎,也许存储了大量不需要冗余信息。 范式阐明 1.1 第一范式(1NF)无重复列 所谓第一范式(1NF)是指数据库表每一列都是不可分割基本数据项,同一列中不能有各种值,即实体中某个属性不能有各种值或者不能有重复属性。假如出现重复属性,就也许需要定义一种新实体,新实体由重复属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表每一行只包括一种实例信息。简而言之,第一范式就是无重复列。 阐明:在任何一种关系数据库中,第一范式(1NF)是对关系模式基本规定,不满足第一范式(1NF)数据库就不是关系数据库。 例如,如下数据库表是符合第一范式: 字段 1字段 2字段 3字段 4 而这样数据库表是不符合第一范式: 字段 1字段 2 字段 3字段 4 字段 3.1字段 3.2 数据库表中字段都是单一属性,不可再分。这个单一属性由基本类型构成,涉及整型、实数、字符型、逻辑型、日期型等。很显然,在当前任何关系数据库管理系统(DBMS)中,傻瓜也不也许做出不符合第一范式数据库,由于这些DBMS 不容许你把数据库表一列再提成二列或多列。因而,你想在既有 DBMS 中设计出不符合第一范式数据库都是不也许。 1.2 第二范式(2NF)属性完全依赖于主键 [ 消除某些子函数依赖 ] 假如关系模式 R 为第一范式,并且 R 中每一种非主属性完全函数依赖于 R某个候选键, 则称为第二范式模式。第二范式(2NF)是在第一范式(1NF)基本上建立起来,即满足第二范式(2NF)必要先满足第一范式(1NF)。第二范式(2NF)规定数据库表中每个实例或行必要可以被惟一地区别。为实现区别普通需要为表加上一种列,以存储各个实例惟一标记。这个惟一属性列被称为主核心字或主键、主码。 例如员工信息表中加上了员工编号(emp_id)列,由于每个员工员工编号是惟一,因而每个员工可以被惟一区别。简而言之,第二范式(2NF)就是非主属性完全依赖于主核心字。 所谓完全依赖是指不能存在仅依赖主核心字一某些属性(设有函数依赖W→A,若存在 XW,有 X→A 成立,那么称 W→A 是局部依赖,否则就称 W→A是完全函数依赖)。假如存在,那么这个属性和主核心字这一某些应当分离出来形成一种新实体,新...