• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

浅谈软件测试开发技术数据库设计中的反规范

发布: 2009-9-10 11:03 | 作者: 不详 | 来源: 领测软件测试网 | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网

 规范化理论是研究如何将一个不好的关系模式转化为好的关系模式的理论,规范化理论是围绕范式而建立的。规范化理论认为,一个关系数据库中所有的关系,都应满足一定的规范(约束条件)。规范化理论把关系应满足的规范要求分为几级,满足最低要求的一级叫做第一范式(1NF),在第一范式的基础上提出了第二范式(2NF),在第二范式的基础上又提出了第三范式(3NF),以后又提出了BCNF范式,4NF,5NF。范式的等级越高,应满足的约束集条件也越严格。规范的每一级别都依赖于它的前一级别,例如若一个关系模式满足2NF,则一定满足1NF。下面我们只介绍1NF,2NF,3NF范式。

  2.2. 1NF

  1NF是关系模型的最低要求,它的规则是:

  每一列必须是原子的,不能分成多个子列。

  每一行和列的位置只能有一个值。

  不能具有多值列。

  例:如果要求一个学生一行,一个学生可选多门课,则下面的“学生”表就不满足1NF:

  student(s-no,s-name,class-no)

  其中:s-no为学号,s-name为学生姓名,class-no为课程号。因为一个学生可选多门课,所以列class-no有多个值,所以空不符合1NF。

  规范化就是把它分成如下两个表:“学生”表和“选课”表,则这两个表就都满足1NF了。

  student(s-no,s-name)

  stu-class(s-no,class-no)

  2.3. 2NF

  对于满足2NF的表,除满足1NF外,非主码的列必须依赖于所有的主码,而不是组合主码的一部分。如果满足1NF的表的主码只有一列,则它自动满足2NF。

  例:下面的“选课”表,不符合2NF。

  stu-class(s-no,class-no,class-name)

  其中:class-name为课程名称。因为词表的主码是:(s-no,class-no),非主码列class-name依赖于组合主码的一部分class-no,所以它不符合2NF。

  对该表规范化也是把它分解成两个表:“选课”表和“课程”表,则它们就都满足2NF了。

  stu-class(s-no,class-no)

  class(class-no,class-name)

  2.4. 3NF

  3NF的规则是除满足2NF外,任一非主码列不能依赖于其它非主码列。

  例:下面的“课程”表,不符合3NF。

  class(class-no,class-name,teacher-no,teacher-name)

  其中:teacher-no为任课教师号,teacher-name为任课教师姓名。因为非主码列teacher-name依赖于另一非主码列teacher-no,所以它不符合3NF。  其解决办法也是把它分解成两个表:“课程”表和“教师”表,则它们就都满足3NF了。

  class(class-no,class-name,teacher-no)

  teacher(teacher-no,teacher-name)

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

42/4<1234>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网