数据库的设计要遵守三范式来设计,这样的设计的好处是可以消除数据冗余,缺点是增加了sql语句的难度。因此,我们在设计表结构的时候不一定要完全遵守三范式,如果遇到复杂问题,可以尝试着打破三范式找到解决问题或优化性能的方法。
一、三范式
第一范式
表中的字段要保持原子性,即字段不可再分
eg
学生信息表中的联系方式有两种——邮箱和电话,如果作为一个字段(联系方式)就违反了第一范式的要求。我们应该设置为两个字段(邮箱)(电话)
第二范式
基于第一范式,表中非主键要完全依赖于主键,不能出现部份依赖
eg
学生信息表如果出现(课程编号)字段这个不依赖于主键的字段,则违反第二范式。
第三范式
基于第二范式,非主键之间不能存在依赖关系
eg
学生信息表如果出现(课程编号)字段和(课程名称)字段,由