SQL教程:联接JOIN使用大全
第三范式( 3NF ):如果关系模式 R ( U , F )中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系 R 是属于第三范式的。
例:如 S1 ( SNO , SNAME , DNO , DNAME , LOCATION ) 各属性分别代表学号,姓名,所在系,系名称,系地址。
关键字 SNO 决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是 2NF 。但这关系肯定有大量的冗余,有关学生所在的几个属性 DNO , DNAME , LOCATION 将重复存储,插入,删除和修改时也将产生类似以上例的情况。
原因:关系中存在传递依赖造成的。由于 SNAME 和 DNO 是依赖 SNO ,而 DNAME 和 LOCATION 是依赖 DNO 的,即通过一个学号可以知道该学生的姓名以及他所在系代码,但无法由学号知道系地址,学号和系地址间是通过学号所对应的学生的所在系关联的, 因此关键字 SNO 对 LOCATION 函数决定是通过传递依赖 DNO -> LOCATION 实现的。也就是说, SNO 不直接决定非主属性 LOCATION 。
解决目地:每个关系模式中不能留有传递依赖。
解决方法:分为两个关系 S ( SNO , SNAME , DNO ), D
注意:关系 S 中不能没有外关键字 DNO 。否则两个关系之间失去联系。
在数据库的设计过程中常常按照第三范式来设计数据库,当然在有些场合为优化数据库的性能而增加了相关冗余字段以使表的结构不符合 3NF ,在多数场合中,没有一张表能完整的发挥客户所需要的结果集。这样就需要通过联接多张在逻辑上存在依赖关系的表,选择你所需要的数据。
相关新闻>>
- 发表评论
-
- 最新评论 进入详细评论页>>