久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

數(shù)據(jù)庫范式【轉(zhuǎn)】

 jojo1981 2015-12-02

注:

表在定義中被稱為關(guān)系,記作R

字段在定義中被稱作屬性

模式:數(shù)據(jù)庫中有三種模式,外模式,內(nèi)模式,模式

粗體是關(guān)鍵字的意思

斜體為外鍵

 

第一范式

定義:如果關(guān)系R 中所有屬性的值域都是單純域,,那么關(guān)系模式R是第一范式的

那么符合第一模式的特點就有

1)有主關(guān)鍵字

2)主鍵不能為空,

3)主鍵不能重復(fù),

4)字段不可以再分

例如:

 StudyNo     |   Name   |   Sex     |   Contact

20040901      john         Male         Email:[email protected],phone:222456

20040901      mary         famale    email:[email protected] phone:123455

以上的表就不符合,,第一范式:主鍵重復(fù)(實際中數(shù)據(jù)庫不允許重復(fù)的),,而且Contact字段可以再分

所以變更為正確的是

 StudyNo   |   Name   |   Sex   |      Email         |      Phone

20040901      john         Male       [email protected]  222456

20040902     mary         famale    [email protected]    123455

 

第二范式:

定義:如果關(guān)系模式R是第一范式的,而且關(guān)系中每一個非主屬性不部分依賴于主鍵,,稱R是第二范式的,。

所以第二范式的主要任務(wù)就是

滿足第一范式的前提下,消除部分函數(shù)依賴,。

StudyNo   |   Name   |   Sex   |         Email         |      Phone    |   ClassNo  | ClassAddress

01                  john        Male       [email protected]     222456      200401            A樓2

01                   mary       famale    [email protected]       123455      200402            A樓3

這個表完全滿足于第一范式,

主鍵由StudyNo和ClassNo組成,,這樣才能定位到指定行

但是,ClassAddress部分依賴于關(guān)鍵字(ClassNo-〉ClassAddress),

所以要變?yōu)閮蓚€表

表一

StudyNo   |   Name   |   Sex   |      Email         |      Phone |   ClassNo 

      01            john         Male       [email protected]  222456   200401      

      01           mary         famale    [email protected]    123455      200402     

表二

 ClassNo  | ClassAddress

 200401      A樓2

 200402      A樓3

 

 

第三范式:

滿足第二范式的前提下,消除傳遞依賴,。

例:

StudyNo   |   Name   |   Sex   |      Email         |      bounsLevel   |   bouns

20040901      john         Male       [email protected]   優(yōu)秀                    $1000

20040902     mary         famale    [email protected]       良                         $600

這個完全滿足了第二范式,但是bounsLevel和bouns存在傳遞依賴

更改為:

StudyNo   |   Name   |   Sex   |      Email         |      bouunsNo

20040901      john         Male       [email protected]   1

20040902     mary         famale    [email protected]       2

bounsNo   |   bounsLevel   |   bouns

1                   優(yōu)秀                $1000

 2                 良                   $600

這里我比較喜歡用bounsNo作為主鍵,,

基于兩個原因

1)不要用字符作為主鍵??赡苡腥苏f:如果我的等級一開始就用數(shù)值就代替呢,?

2)但是如果等級名稱更改了,不叫 1,,2 ,,3或優(yōu),、良,這樣就可以方便更改,,所以我一般優(yōu)先使用與業(yè)務(wù)無關(guān)的字段作為關(guān)鍵字,。

 

一般滿足前三個范式就可以避免數(shù)據(jù)冗余。

 

第四范式:

主要任務(wù):滿足第三范式的前提下,,消除多值依賴

product   | agentfactory

Car            A1        F1

Bus           A1         F2

Car            A2         F2

在這里,,Car的定位,必須由 agent 和 Factory才能得到(所以主鍵由agent和factory組成),可以通過 product依賴了agent和factory兩個屬性

所以正確的是

表1                              表2:

product   |   agent            factory  |   product

Car            A1                  F1            Car

Bus            A1                  F2            Car

Car            A2                  F2             Bus

 

第五范式:

定義: 如果關(guān)系模式R中的每一個連接依賴, 都是由R的候選鍵所蘊含, 稱R是第五范式的

看到定義,,就知道是要消除連接依賴,并且必須保證數(shù)據(jù)完整

例子

A   |   B  |   C

a1      b1   c1

a2      b1   c2

a1      b2  c1

a2      b2   c2

如果要定位到特定行,,必須三個屬性都為關(guān)鍵字。

所以關(guān)系要變?yōu)?三個關(guān)系,,分別是A 和B,B和C ,,C和A

如下:

表1                      表2                  表3

A   |   B               B   |   C         C    |    A

a1      b1            b1      c1         c1      a1            

a1      b2            b1      c2         c1      a2

       范式可以避免數(shù)據(jù)冗余,減少數(shù)據(jù)庫的空間,,減輕維護數(shù)據(jù)完整性的麻煩,,但是操作難,因為需要聯(lián)系多個表才能得到所需要數(shù)據(jù),,而且越高范式性能就會越差,。要權(quán)衡是否使用更高范式是比較麻煩。

      一般我在做項目中都,,用得最多的也就是第三范式,,我認為使用到第三范式也就足夠了,性能好而且方便管理數(shù)據(jù),。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約