• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >数据库其它 > 数据库 三范式最简单最易记的解释

数据库 三范式最简单最易记的解释

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了数据库范式,数据库三大范式,数据库三范式,数据库范式详解,数据库三范式是什么等相关知识,希望本文的分享对您有所帮助

书上讲了好多, 归结起来3句话:

1NF:字段不可分;
2NF:有主键,非主键字段依赖主键;
3NF:非主键字段不能相互依赖;

解释:
1NF:原子性 字段不可再分,否则就不是关系数据库;
2NF:唯一性 一个表只说明一个事物;
3NF:每列都与主键有直接关系,不存在传递依赖;

不符合第一范式的例子(关系数据库中create不出这样的表):

表:字段1, 字段2(字段2.1, 字段2.2), 字段3 ......

存在的问题: 因为设计不出这样的表, 所以没有问题;

不符合第二范式的例子:

表:学号, 姓名, 年龄, 课程名称, 成绩, 学分;

这个表明显说明了两个事务:学生信息, 课程信息;

存在问题:

数据冗余,每条记录都含有相同信息;
删除异常:删除所有学生成绩,就把课程信息全删除了;
插入异常:学生未选课,无法记录进数据库;
更新异常:调整课程学分,所有行都调整。

修正:

学生:Student(学号, 姓名, 年龄);

课程:Course(课程名称, 学分);

选课关系:SelectCourse(学号, 课程名称, 成绩)。

满足第2范式只消除了插入异常。


不符合第三范式的例子:

学号, 姓名, 年龄, 所在学院, 学院联系电话,关键字为单一关键字"学号";

存在依赖传递: (学号) → (所在学院) → (学院地点, 学院电话)

存在问题:

数据冗余:有重复值;

更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况

删除异常

修正:
学生:(学号, 姓名, 年龄, 所在学院);
学院:(学院, 地点, 电话)。
作者:sunxing007

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 数据库 三范式最简单最易记的解释

相关文章

  • 2017-05-11如何解决VisualSVN Server 安装提示错误 Repositories is not a valid short file name
  • 2017-05-11数据库 SQL千万级数据规模处理概要
  • 2017-05-11数据库查询优化(主从表的设计)
  • 2017-05-11update 子查询使用介绍
  • 2017-05-11错误代码:1100 Table 't_depart_info' was not locked with LOCK TABLES的解决方法
  • 2017-05-11ACCESS转化成SQL2000需要注意的几个问题小结
  • 2017-05-11ORACLE 系统函数大全SQLSERVER系统函数的异同
  • 2017-05-11sql Union和Union All的使用方法
  • 2017-05-11access mysql mssql 随机 10条数据的sql语句 原创
  • 2017-05-11SQL 优化经验总结34条

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 数据库删除完全重复和部分关键字段重复的记录
    • 数据库插入数据之select into from与insert into select区别详解
    • sql server中datetime字段去除时间代码收藏
    • 数据库查询中遭遇特殊字符导致问题的解决方法
    • SQL Server不存在或访问被拒绝问题的解决第1/3页
    • Sybase数据库sa密码丢失后解决方法
    • SQLite不支持Right Join的解决办法GROUP BY
    • 新推出的金融版eXtremeDB 6.0功能改进预览
    • ORACLE 系统函数大全SQLSERVER系统函数的异同
    • MySQL与Oracle 差异比较之七用户权限

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有