由于数据库设计中所遵循的范式规则比较复杂 对于初学者来讲很难完全记住 本文针对数据库设计范式的基本概念进行了扼要的总结
第一范式:
对于表中的每一行 必须且仅仅有唯一的行值 在一行中的每一列仅有唯一的值并且具有原子性
第二范式:
第二范式要求非主键列是主键的子集 非主键列活动必须完全依赖整个主键 主键必须有唯一性的元素 一个主键可以由一个或更多的组成唯一值的列组成 一旦创建 主键无法改变 外键关联一个表的主键 主外键关联意味着一对多的关系
第三范式:
第三范式要求非主键列互不依赖
第四范式:
第四范式禁止主键列和非主键列一对多关系不受约束
第五范式:
lishixinzhi/Article/program/SQL/201311/16202
比如你是班主任,要统计成绩了。有以下几项,考号,姓名,科目号,科目,成绩。如果没有理解第一范式,你就只能这么记录了:考号2010005001是张三,语文考了80分。但是理解了就不一样了,你就学会把这条信息抽象为5个属性了,可以用excel表格统计了!
你在录入成绩的过程中会发现,语文,数学之类的字粘贴了好多遍啊,能不能单独拿出来啊。当然可以。因为科目名只依赖于科目号,于是你可以把上述信息分成三个表:
考生表:考号(PK) + 姓名
科目表:科目号(PK) + 科目名
成绩表:考号(PK) + 科目号(PK) + 成绩
简单的说,第二范式消除了非主属性对主键的部分依赖。
第三范式的话,其实上面这么做就已经是第三范式了。为了便于理解,我们加一列 等级吧。比如60分以下C,60到80是B,80以上是A。
那么成绩表现在是这样:
成绩表:考号(PK) + 科目号(PK) + 成绩 + 等级
其实等级成绩有关,跟主键只有间接的决定关系,主键决定成绩,成绩决定等级,我们需要把它独立出来。
考生表:考号(PK) + 姓名
科目表:科目号(PK) + 科目名
成绩表:考号(PK) + 科目号(PK) + 成绩
等级表:等级(PK) + 成绩
简单的说,第三范式消除了非主属性对主键的传递依赖。
说了这么多,总结起来一句话:没啥鸟用。没上过学的,出来设计的表估计也是满足第三范式的。
#
数据库标准化与范式- 开发者在线- >
以上就是关于数据库基础:快速掌握数据库设计范式的基本概念全部的内容,包括:数据库基础:快速掌握数据库设计范式的基本概念、理解数据库中的第一第二第三范式有什么用谁能告诉我、数据库的规范化,1\2\3范式怎么理解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)