仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1795|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL教程之数据库计划范式(实例)

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:42:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这能找出所有错误的99.99%。它不能找出的是仅仅涉及数据文件的损坏(这很不常见)。如果你想要检查一张表,你通常应该没有选项地运行myisamchk或用-s或--silent选项的任何一个。计划|数据|数据库|数据库计划干系数据库计划之时是要恪守必定的划定规矩的。特别是数据库计划范式现复杂先容1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,尚有第四范式和第五范式留到今后再先容。在你计划数据库之时,若能切合这几个范式,你就是数据库计划的妙手。
第一范式(1NF):在干系形式R中的每个详细干系r中,假如每一个属性值都是不成再分的最小数据单元,则称R是第一范式的干系。例:如职工号,姓名,德律风号码构成一个表(一团体大概有一个办公室德律风和一个家里德律风号码)标准成为1NF有三种办法:一是反复存储职工号和姓名。如许,关头字只能是德律风号码。二是职工号为关头字,德律风号码分为单元德律风和室庐德律风两个属性三是职工号为关头字,但强迫每笔记录只能有一个德律风号码。以上三个办法,第一种办法最不成取,按实践情形拔取后两种情形。

第二范式(2NF):假如干系形式R(U,F)中的一切非主属性都完整依附于恣意一个候选关头字,则称干系R是属于第二范式的。例:选课干系SCI(SNO,CNO,GRADE,CREDIT)个中SNO为学号,CNO为课程号,GRADEGE为成就,CREDIT为学分。由以上前提,关头字为组合关头字(SNO,CNO)在使用中利用以上干系形式有以下成绩:a.数据冗余,假定统一门课由40个先生选修,学分就反复40次。b.更新非常,若调剂了某课程的学分,响应的元组CREDIT值都要更新,有大概会呈现统一门课学分分歧。c.拔出非常,如企图开新课,因为没人选修,没有学号关头字,只能等有人选修才干把课程和学分存进。d.删除非常,若先生已毕业,从以后数据库删除选修纪录。某些门课程重生还没有选修,则此门课程及学分纪录没法保留。缘故原由:非关头字属性CREDIT仅函数依附于CNO,也就是CREDIT部分依附组合关头字(SNO,CNO)而不是完整依附。办理办法:分红两个干系形式SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新干系包含两个干系形式,它们之间经由过程SC1中的外关头字CNO相接洽,必要时再举行天然连接,恢复了本来的干系

第三范式(3NF):假如干系形式R(U,F)中的一切非主属性对任何候选关头字都不存在传送信任,则称干系R是属于第三范式的。例:如S1(SNO,SNAME,DNO,DNAME,LOCATION)各属性分离代表学号,姓名,地点系,系称号,系地点。关头字SNO决意各个属性。因为是单个关头字,没有部分依附的成绩,一定是2NF。但这干系一定有大批的冗余,有关先生地点的几个属性DNO,DNAME,LOCATION将反复存储,拔出,删除和修正时也将发生相似以上例的情形。缘故原由:干系中存在传送依附酿成的。即SNO->DNO。而DNO->SNO却不存在,DNO->LOCATION,因而关头辽SNO对LOCATION函数决意是经由过程传送依附SNO->LOCATION完成的。也就是说,SNO不间接决意非主属性LOCATION。办理目地:每一个干系形式中不克不及留有传送依附。办理办法:分为两个干系S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION)注重:干系S中不克不及没有外关头字DNO。不然两个干系之间得到接洽。

BCNF:假如干系形式R(U,F)的一切属性(包含主属性和非主属性)都不传送依附于R的任何候选关头字,那末称干系R是属于BCNF的。或是干系形式R,假如每一个决意要素都包括关头字(而不是被关头字所包括),则RCNF的干系形式。例:配件办理干系形式WPE(WNO,PNO,ENO,QNT)分离表堆栈号,配件号,职工号,数目。有以下前提a.一个堆栈有多个职工。b.一个职工仅在一个堆栈事情。c.每一个堆栈里一种型号的配件由专人卖力,但一团体能够办理几种配件。d.统一种型号的配件能够分放在几个堆栈中。剖析:由以上得PNO不克不及断定QNT,由组合属性(WNO,PNO)来决意,存在函数依附(WNO,PNO)->ENO。因为每一个堆栈里的一种配件由专人卖力,而一团体能够办理几种配件,以是有组合属性(WNO,PNO)才干断定卖力人,有(WNO,PNO)->ENO。由于一个职工仅在一个堆栈事情,有ENO->WNO。因为每一个堆栈里的一种配件由专人卖力,而一个职工仅在一个堆栈事情,有(ENO,PNO)->QNT。找一下候选关头字,由于(WNO,PNO)->QNT,(WNO,PNO)->ENO,因而(WNO,PNO)能够决意全部元组,是一个候选关头字。依据ENO->WNO,(ENO,PNO)->QNT,故(ENO,PNO)也能决意全部元组,为另外一个候选关头字。属性ENO,WNO,PNO均为主属性,只要一个非主属性QNT。它对任何一个候选关头字都是完整函数依附的,而且是间接依附,以是该干系形式是3NF。剖析一下主属性。由于ENO->WNO,主属性ENO是WNO的决意要素,可是它自己不是关头字,只是组合关头字的一部分。这就形成主属性WNO对别的一个候选关头字(ENO,PNO)的部分依附,由于(ENO,PNO)->ENO但反过去不建立,而P->WNO,故(ENO,PNO)->WNO也是传送依附。固然没有非主属性对候选关头辽的传送依附,但存在主属性对候选关头字的传送依附,一样也会带来贫苦。如一个新职工分派到堆栈事情,但临时处于练习阶段,没有自力卖力对某些配件的办理义务。因为短少关头字的一部分PNO而没法拔出到该干系中往。又如某团体改成不论配件了往卖力平安,则在删除配件的同时该职工也会被删除。办理举措:分红办理EP(ENO,PNO,QNT),关头字是(ENO,PNO)事情EW(ENO,WNO)其关头字是ENO弱点:分化后函数依附的坚持性较差。云云例中,因为分化,函数依附(WNO,PNO)->ENO丧失了,因此对本来的语义有所损坏。没有表现出每一个堆栈里一种部件由专人卖力。有大概呈现一部件由两团体或两个以上的人来同时办理。因而,分化以后的干系形式下降了部分完全性束缚。

一个干系分化成多个干系,要使得分化成心义,最少的请求是分化后不丧失本来的信息。这些信息不但包含数据自己,并且包含由函数依附所暗示的数据之间的互相制约。举行分化的方针是到达更高一级的标准化水平,可是分化的同时必需思索两个成绩:无损连接性和坚持函数依附。偶然常常不成能做到既有没有损连接性,又完整坚持函数依附。必要依据必要举行衡量。

1NF直到BCNF的四种范式之间有以下干系:BCNF包括了3NF包括2NF包括1NF

小结:目地:标准化目标是使布局更公道,打消存储非常,使数据冗余只管小,便于拔出、删除和更新准绳:服从观点单一化"一事一地"准绳,即一个干系形式形貌一个实体或实体间的一种接洽。标准的本色就是观点的单一化。办法:将干系形式投影分化成两个或两个以上的干系形式。请求:分化后的干系形式汇合应该与原干系形式"等价",即经由天然连接能够恢回复干系而不丧失信息,并坚持属性间公道的接洽。

注重:一个干系形式结这分化能够失掉分歧干系形式汇合,也就是说分化办法不是独一的。最小冗余的请求必需以分化后的数据库可以表达本来数据库一切信息为条件来完成。其基本方针是节俭存储空间,制止数据纷歧致性,进步对干系的操纵效力,同时满意使用需求。实践上,其实不必定请求全体形式都到达BCNF不成。偶然存心保存部分冗余大概更便利数据查询。特别关于那些更新频度不高,查询频度极高的数据库体系更是云云。

在干系数据库中,除函数依附以外另有多值依附,连接依附的成绩,从而提出了第四范式,第五范式等更高一级的标准化请求。在此,今后再谈。

列位伴侣,你看事后有何感受,实在,任何一本数据库基本实际的书城市讲这些器材,思索到良多网友是中途落发,来做数据库。特找一本书年夜抄特抄一把,列位有甚么成绩,也别问我了,自已往找一本干系数据库实际的书往看吧,说不定,对列位年夜有匡助。说是说以上是基本实际的器材,请人人想一想,你在做数据库计划的时分有无思索过遵过以上几个范式呢,有无在数据库计划做得欠好之时,想想,对照以上所讲,究竟是违背了第几个范式呢?我见过的数据库计划,很少有人做到很切合以上几个范式的,一样平常说来,第一范式人人都能够恪守,完整恪守第二第三范式的人很少了,恪守的人必定就是计划数据库的妙手了,BCNF的范式呈现时机较少,并且会损坏完全性,你能够在做计划之时不思索它,固然在ORACLE中可经由过程触发器办理其弱点。今后我们配合做计划之时,也但愿人人恪守以上几个范式。
在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-19 21:32:49 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
柔情似水 该用户已被删除
板凳
发表于 2015-1-28 09:19:44 | 只看该作者
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
蒙在股里 该用户已被删除
地板
发表于 2015-2-5 14:34:22 | 只看该作者
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
若相依 该用户已被删除
5#
发表于 2015-2-12 06:41:40 | 只看该作者
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
若天明 该用户已被删除
6#
发表于 2015-3-2 23:39:35 | 只看该作者
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
乐观 该用户已被删除
7#
发表于 2015-3-11 07:28:09 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
山那边是海 该用户已被删除
8#
发表于 2015-3-17 23:10:09 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
变相怪杰 该用户已被删除
9#
发表于 2015-3-25 06:41:54 | 只看该作者
学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-17 21:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表