数据库三范式
2016-03-23 17:35
295 查看
前言
因为合作要进行对数据库三范式的规范,所以重新拿起了课本对三范式进行了再一次的学习,这次本博文主要从举例子的角度来理解数据库的三范式。内容
下面要说的三范式,都是在特定的场景中进行规范的。1、第一范式:确保每列保持原子性(属性不可再分)
解析:当我们在录入一些个人信息的时候,我们会涉及到联系方式这一项。有时候联系方式这个可以作为独立的字段,但是对于某些特定情境中,联系方式又会分为邮件、QQ号、手机号、座机号等等。我们所说的属性不可再分强调的是某种特定情况下的规范。例如:
上面的表中的字段都满足了属性不可再分。
2、第二范式:确保每列都和主键相关(完全依赖)
第二范式是建立在第一范式的基础之上的,强调的是数据库中的每一列都要和主键相关,而不是单单依赖主键的其他字段。下面是我在网上看到的例子:
其中,当有两个字段联合作为主键,那么该表中的任何字段都应该同时依赖这两个主键字段。这个表中是以订单编号和商品编号作为联合主键。这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品编号相关。所以在这里违反了第二范式的设计原则。
3、第三范式:确保每列都和主键直接相关,并不是间接相关(不存在传递依赖)
例如字段1、2、3,字段1为主键,2完全依赖字段1,那么3完全依赖字段2,从而依赖字段1,这样的关系在数据库中,是不符合三范式的。如下表中:
其中卡号为主键,姓名完全依赖卡号,性别完全依赖姓名间接依赖卡号。
综上所述,菜鸟眼中的数据库三范式大概就是这个样子,还请大神多多指教。
小结
1、学习是个反复的过程。2、欠下的总是要还的。
相关文章推荐
- JMeter学习(八)JDBC测试计划-连接Oracle
- sql执行顺序
- 12C-OCP升级1z-060-019
- redis安装及redis数据类型
- 数据库系统概念中table/view/schema/index的关系
- oracle NOT exists函数用列
- PL/SQL Developer ORA-03114:not connected to ORACLE 错误解决
- Oracle建立表空间和用户
- Oracle创建directory
- oracle常用命令
- ORACLE ADF11g:VO代码改变ViewCriteria
- oracle去掉重复记录语句
- Oracle 拼接列数据的方法
- oracle创建表空间,临时表空间,用户
- Oracle Golden Gate体系架构详解
- 12C-OCP升级1z-060-018
- mysql查询当天所有数据sql语句、查询数据表中的记录
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
- 轻松解决oracle11g 空表不能 exp 导出 的问题。
- SQL实现查看表结构以及表注释(comments)