数据库设计三大范式
来源:互联网 发布:淘宝店铺商品分类 编辑:程序博客网 时间:2024/05/18 03:52
关系数据库中的关系必须满足一定的要求,即满足不同的范式。
关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。
设计关系型数据库时,遵从不同的规范要求,设计出合理的关系型数据库。这些规范被称作范式。越高的范式数据库的冗余度就越低。
1NF 属性的原子性
对属性的原子性约束,要求属性具有原子性,不可再分解,即数据表的每一列都是不可分割的原子值。
比如“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对“地址”中某一部分操作的时候将非常方便。
2NF 记录的唯一性
要求属性完全依赖于主键,即数据表中的每一列都和主键相关,而不能只与主键的某一部分相关(针对联合主键而言),也就是说一个数据表中只能保存“一类数据”。
3NF 每列都和主键直接相关,而不是间接相关
数据不能存在传递关系,即每个属性都和主键有直接关系而不是间接关系。
对字段冗余性的约束,即任何字段不能由其他字段派生而来。
数据库设计的实用原则:在数据冗余和处理速度之间找到合适的平衡点。
满足第三范式的数据库设计,往往不是最好的设计。为了提高数据库的运行效率,往往需要降低范式标准:适当增加冗余,达到以空间换时间的目的。
通常情况下,一个实体不能既无主键,又无外键。主键与外键的配对,表示实体之间的连接。
派生性冗余是为了提高数据处理速度,而重复性冗余会增加数据的不一致性。
- 数据库设计--三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 数据库设计三大范式
- 5213566.html
- 【POI】Apache POI环境设置(三)
- 前端框架是什么
- ConfigReader(五十五)—— ReadSkillMoveConfig
- PHP 如何在Redis中实现事物(事物提交和事物回滚)
- 数据库设计三大范式
- 剑指offer--变态跳台阶
- shadowsocksr 快速搭建
- python读写配置文件
- C语言基础练习4
- 并发编程(二)-访问共享资源
- 运维常用网址大全
- Intellij IDEA database配置 [全局配置][mysql]
- libc.so.6: cannot open shared object file报错处理