文章目录
一、 关系型数据库设计规范
概念
范式:Normal Format,符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度
- 范式是离散数学里的概念
- 范式目标是在满足组织和存储的前提下使数据结构冗余最小化
- 范式级别越高,表的级别就越标准
- 目前数据库应用到的范式有以下几层
- 第一范式: 1NF
- 第二范式: 2NF
- 第三范式:3NF
- 逆范式化
1、第一范式1NF
原子性,字段使用时不需要再拆分
概念
第一范式:1NF,数据字段设计时必须满足原子性
- 1NF要求字段数据是不需要拆分就可以直接应用
- 如果数据使用的时候需要进行拆分那么就违背了1NF
步骤
1、设计的字段是否在使用的时候还需要再拆分?
2、将数据拆分到最小单位(使用),然后设计成字段
3、满足1NF
示例
1、设计一张学生选修课成绩表
学生 | 性别 | 课程 | 教室 | 成绩 | 学习时间 |
---|---|---|---|---|---|
张三 | 男 | PHP | 101 | 100 | 2月1日,2月28日 |
李四 | 女 | Java | 102 | 102 | 3月1日,3月31日 |
张三 | 男 | Java | 103 | 103 | 3月1日,3月31日 |
当前表的学习时间再使用的时候肯定是基于开始时间和结束时间的,而这种设计就会存在使用时的数据拆分,不满足原子性也就是1NF
2、满足1NF的设计:字段颗粒度应用层最小(不需要拆分)
学生 | 性别 | 课程 | 教室 | 成绩 | 开始时间 | 结束时间 |
---|---|---|---|---|---|---|
张三 | 男 | PHP | 101 | 100 | 2月1日 | 2月28日 |
李四 | 女 | Java | 102 | 102 | 3月1日 | 3月31日 |
张三 | 男 | Java | 103 | 103 | 3月1日 | 3月31日 |