首页 > 代码库 > 数据库三范式
数据库三范式
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 感谢作者
数据库三范式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。