数据库基本范式-学习整理
2016-01-20 14:24
381 查看
摘要: 数据库三大基本范式
范式:
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则,在关系型数据库中这种规则就称为范式。
范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。
简单来说:
第一范式:不可拆分
第二范式:完全依赖
第三范式:消除传递依赖
第一范式(1NF):
(必须有主键,列不可分),
数据库表中的任何字段都是单一属性的,1NF是对属性的原子性约束,要求属性具有原子性,不可再分解。
第二范式(2NF):
数据库表中非关键字段对任一候选关键字段的 都不存在部分函数依赖,当一个表是复合主键时,非主键的字段不依赖于部分主键。即必须依赖于全部的主键字段。2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性了,目标是确保表中的每列都和主键相关。其实就是取消掉复合主键。通过另一个单一字段的主键来代替。一句话,没有复合主键,就没有部分依赖。非主键必须完全依赖主键,而不是仅仅依赖主键的一部分。主键唯一。
第三范式(3NF):
关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递依赖。在第二范式的基础上更进一层,目标是确保每列都和主键列直接相关,而不是间接相关.一条记录里面任何两个数据之间都不能有依赖,除了和主键。主键和任何一个数据之间都存在依赖。
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。主外键。
范式:
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则,在关系型数据库中这种规则就称为范式。
范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。
简单来说:
第一范式:不可拆分
第二范式:完全依赖
第三范式:消除传递依赖
第一范式(1NF):
(必须有主键,列不可分),
数据库表中的任何字段都是单一属性的,1NF是对属性的原子性约束,要求属性具有原子性,不可再分解。
第二范式(2NF):
数据库表中非关键字段对任一候选关键字段的 都不存在部分函数依赖,当一个表是复合主键时,非主键的字段不依赖于部分主键。即必须依赖于全部的主键字段。2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性了,目标是确保表中的每列都和主键相关。其实就是取消掉复合主键。通过另一个单一字段的主键来代替。一句话,没有复合主键,就没有部分依赖。非主键必须完全依赖主键,而不是仅仅依赖主键的一部分。主键唯一。
第三范式(3NF):
关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递依赖。在第二范式的基础上更进一层,目标是确保每列都和主键列直接相关,而不是间接相关.一条记录里面任何两个数据之间都不能有依赖,除了和主键。主键和任何一个数据之间都存在依赖。
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。主外键。
相关文章推荐
- MySQL视图介绍
- Key/Value之王Memcached初探:一、掀起Memcached的盖头来
- Oracle GoldenGate视频教程下载
- mysql修改编码
- 将数据库连接池中的连接转化为原始JDBC连接,从而实现bean转化为oracle中type的问题
- 基于 redis实现含有冻结时间的mq队列
- Oracle安装配置流程
- 无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限。 已将数据库上下文更改为
- Memcached Java Client API详解
- mysql报错: 1548-Cannot load from mysql.proc. The table is probably corrupted 解决办法
- linux oracle自动备份脚本
- GoldentGate Oracle to Oracle 初始化具体解释
- 理解SQL SERVER的逻辑读,预读和物理读以及索引
- Ubuntu配置Mysql
- linux下redis安装
- 使用AOP 实现Redis缓存注解,支持SPEL(转)
- mongodb在java中的分页查询
- PLSQL插入数据中文乱码的问题
- Redis添加访问密码
- 无法连接到MYSQL, mysqld.sock问题