- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0 |
第三范式( 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 ( DNO , DNAME , LOCATION )
注意:关系 S 中不能没有外关键字 DNO 。否则两个关系之间失去联系。
在数据库的设计过程中常常按照第三范式来设计数据库,当然在有些场合为优化数据库的性能而增加了相关冗余字段以使表的结构不符合 3NF ,在多数场合中,没有一张表能完整的发挥客户所需要的结果集。这样就需要通过联接多张在逻辑上存在依赖关系的表,选择你所需要的数据。
在使用 JOIN 前,必须明白是通过联接,根据各个表之间的逻辑关系从相关表中检索数据。通过 SQL Server 自带帮助文件,可以清楚的知道:可在 FROM 或 WHERE 子句中指定联接。
1.1. 在 WHERE 子句中指定联接
下例使用 WHERE 子句进行表之间的
SELECT A.SYMBOL,A.SNAME,B.TDATE,B.CLOSE
FROM SECURITYCODE A,DAYQUOTE B
WHERE A.SYMBOL =B.SYMBOL
AND B.TDATE >= A.LISTDATE
AND A.SYMBOL LIKE ‘600%’
在上例中联接的表 A 与表 B 通过 A.SYMBOL =B.SYMBOL 这个条件联接,筛选条件为 B.TDATE 不小于 A. LISTDATE 。
在 WHERE 子句中指定联接,对于较简单的联接,使用这种方式可能较方便,但综合来说,不推荐使用该语法联接表。
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |