数据库设计三大范式应用实例 引言 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(u pdate)操作异常
反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息
设计范式是不是很难懂呢
非也,大学教材上给我们一堆数学公式我们当然看不懂,也记不住
所以我们很多人就根本不按照范式来设计数据库
实质上,设计范式用很形象、很简洁的话语就能说清楚,道明白
本文将对范式进行通俗地说明,并以笔者曾经设计的一个简单论坛的数据库为例来讲解怎样将这些范式应用于实际工程
范式说明 第一范式(1NF):数据库表中的字段都是单一属性的,不可再分
这个单一属性由 基 本类 型 构成 ,包 括 整 型 、实数、字符 型 、逻 辑 型 、日 期 型 等
例如 ,如 下 的数据库表是符 合 第一范式的: 字段1 字段2 字段3 字段4 而这样的数据库表是不符 合 第一范式的: 字段1 字段2 字段3 字段4 字段3
2 很显 然,在 当前 的任 何 关 系 数据库管 理 系 统 (DBMS)中,傻 瓜 也不可能做出 不符 合 第一范式的数据库,因 为这些DBMS 不允 许 你 把 数据库表的一列 再分成 二 列 或 多列
因 此 ,你 想 在 现 有 的DBMS 中设计出 不符 合 第一范式的数据库都是不可能的
第二 范式(2NF):数据库表中不存在 非关 键 字段对任 一候 选 关 键 字段的部分函 数依 赖(部 分函 数依 赖 指 的是存在 组 合 关 键 字中的某 些字段决 定 非关 键 字段的情 况 ),也即 所有 非关 键 字段都完 全 依 赖 于任 意 一组 候 选 关 键 字
假定选课关系表为SelectCou rse(学