三范式

[color=darkblue][align=center][size=medium]数据库三范式简述[/size][/align][/color]
1NF:字段原子性,数据库表中的字段都是[color=red]单一属性,不可再分[/color].
例如: 表中含有"地址"字段,但是"地址"还可以拆分成为:国家、省份、城市等.这就说明这类字段还可以拆分,所以不满足第一范式.但是如果涉及到的是姓名时,可能根据实际的需要,将姓和名单独的分开,也可以不分开;

2NF:满足第一范式的基础上,除主键以外每一列都[color=red]依赖[/color]于主键.
例如: 一张描述学生的表,有学生学号、学生姓名、性别、辅导员等字段.显然辅导员与学员学号没有依赖关系,应该把辅导员称放在老师表中。简而言之是,与主键没有依赖关系的字段放在一个表中;

3NF:满足第一、二范式的技术上,除主键以外的列都[color=red]直接依赖[/color]于主键(不存在传递依赖).
例如: 一张描述学生的表,有学生学号,学生姓名,所在学校,学校电话.关键字为"学生学号",因为存在如下关系: (学生姓名,所在学校,学校电话) ¬—依赖—(学生学号) 此时这个数据库是满足1NF、2NF,但是不满足3NF,因为存在如下传递依赖:( 学生学号)→(所在学校)→(学校电话)
存在非关键字段"学校电话"对关键字段"学生学号"的传递函数依赖
如果拆成如下则满足上面的三个范式:
学生:学生姓名、学生学号、所在学校;
学校:学校名、学校电话;

满足范式要求设计的数据库结构清晰,同时可避免数据冗余和操作异常.但是,在适当的情况下进行适当的数据冗余反而使操作简单化而不会产生操作异常.
商品表的表结构:
  商品名称 商品型号 单价 数量 金额
   电视机 29吋 2,500 40 100,000
“金额”这个字段的存在,表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的作法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值