标签:
1范式:表中的每个字段都是原子的,表中的字段不能再拆分。
如:讲师代课表:讲师姓名(P)、性别、班级(P)、教室、代课时间(天)、代课时间段(开始--结束) 不满足1NF,代课时间段需要拆分解决方案:将代课时间段拆分成开始和结束
讲师代课表:讲师姓名(P)、性别、班级(P)、教室、代课时间(天)、开始时间、结束时间
2范式:表中的非主键字段,都要全部依赖主键字段。
在数据表设计的过程中,如果有复合主键(多字段主键),且表中有字段并不是由整个主键来确定, 而是依赖主键中的某个字段(主键的部分);存在字段依赖主键的部分的问题,称之为部分依赖; 第二范式就是要解决部分依赖。 讲师代课表:讲师姓名(P)、性别、班级(P)、教室、代课时间(天)、开始时间、结束时间 以上表中:因为讲师没有办法作为独立主键,需要结合班级才能作为主键(复合主键) 代课时间,开始和结束字段都与当前的代课主键(讲班和班级)决定,但性别并不依赖班级, 同时教室不依赖讲师,性别只依赖讲师,教室只依赖班级,出现了性别和教室依赖主键中的一 部分,部分依赖,不符合2NF。 解决方案1:可以将性别与讲师单独成表,班级与教室也单独成表 解决方案2:取消复合主键,使用逻辑主键
3范式:直接依赖。表中的字段全部依赖主字段,不能通过依赖其他字段来间接依赖主字段。即消除依赖传递。
讲师代课表:ID(P)、讲师姓名、性别、班级、教室、代课时间(天)、开始时间、结束时间 以上设计方式中:性别依赖讲师存在,讲师依赖主键;教室依赖班级,班级依赖主键 解决方案:将存在传递依赖的字段,以及依赖的字段本身单独取出,形成一个单独的表,然后 在需要对应的信息的时候,使用对应的实体表的主键加进来。 讲师代课表:ID(P)、讲师ID、班级ID、代课时间(天)、开始时间、结束时间 讲师表: ID(P)、讲师姓名、性别 (ID等价于讲师) 班级表: ID(P)、班级、教室 (ID等价于班级)
本文部分转自http://www.myexception.cn/mysql/2072142.html 感谢作者
标签:
原文地址:http://www.cnblogs.com/panxuejun/p/5975772.html