- 第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分。
例如【联系方式】=zs@gmail.com,1359999999,这就不符合原子性 - 第二范式:建立在第一范式的基础之上,要求所有非主键字段完全依赖主键,
不要产生部分依赖。
例如:用学生id和教师id作联合主键,学生依赖于学生id,教师依赖于教师id,则产生了部分依赖 - 第三范式:建立在第二范式的基础之上,要求所有非主键字段直接依赖主键,
不要产生传递依赖。
例如 学生表中存在班级id和班级名,班级名称依赖于班级id而班级id依赖于学生id
总结:
数据库设计三范式是理论上的。
实践和理论有的时候有偏差。
最终的目的都是为了满足客户的需求,有的时候会拿冗余换执行速度。
因为在sql当中,表和表之间连接次数越多,效率越低。(笛卡尔积)
有的时候可能会存在冗余,但是为了减少表的连接次数,这样做也是合理的,
并且对于开发人员来说,sql语句的编写难度也会降低。


被折叠的 条评论
为什么被折叠?



