青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

細說數(shù)據(jù)庫范式

轉(zhuǎn)載自:http://www.cnblogs.com/KissKnife/archive/2009/10/26/1590029.html

理論性的東西,往往容易把人人都看得懂的東西寫成連鬼都看不懂,近似于主任醫(yī)生開的藥方。從前學(xué)范式的時候,把書中得概念翻來覆去看,看得痛心疾首深惡痛絕,再加上老師深切誤導(dǎo),最后一塌糊涂。借助網(wǎng)絡(luò)資源,自己寫了一篇,自己是看懂了,希望對大家也有所幫助,有錯誤幫忙指正。

 

數(shù)據(jù)庫范式(Normal forms):是用于規(guī)范關(guān)系型數(shù)據(jù)庫設(shè)計,以減少謬誤發(fā)生的一種準則。

 

1NF(first normal form)

Table faithfully represents a relation and has no repeating groups.

數(shù)據(jù)庫表必須如實地展現(xiàn)“關(guān)系”,并且不允許有“重復(fù)組”出現(xiàn)。

 

這樣的概念真是令人痛心疾首,我們只好再搬出1NF的的作者之一Chris Date的解釋:

1. There's no top-to-bottom ordering to the rows.

(任意兩行沒有特定的順序關(guān)系。不存在一個特定的理由要某一行必須在另一行之前。)

2. There's no left-to-right ordering to the columns.

(任意兩列沒有特定的順序關(guān)系。)

3. There are no duplicate rows.

(不允許存在重復(fù)的行。如果一張表沒有Unique Key,事實上它是違反1NF。)

4. Every row-and-column intersection contains exactly one value from the applicable domain (and nothing else).

(不允許出現(xiàn)空值Null,這一點不同作者是有爭議的。事實上我們常常違背這點。)

5. All columns are regular [i.e. rows have no hidden components such as row IDs, object IDs, or hidden timestamps].

(不允許存在隱藏字段。不知道OracleRowid屬不屬于這個?)

 

有人從第四點的“one value”大肆挖掘,于是我們就見到了書上這樣的定義:“如果一個關(guān)系模式R的所有屬性都是原子的,即不可再分的基本數(shù)據(jù)項,則RÎ1NF”。

 

這一點被認為是1NF的核心,“關(guān)系模式R“表”,“屬性”  “列”,下面是一種與1NF不一致的情況,通常這是一類很明顯的設(shè)計缺陷:

ID

Artist

FavoriteColor

……

1

Babyface

Blue,Yellow

……

2

Sting

Green

……

 

對上例我們不能把它拆分成FavoriteColor1FavoriteColor2……因為首先我們不能確定該拆分成幾列;其次FavoriteColor1FavoriteColor2在結(jié)構(gòu)、含意方面都是相同的,這實際上也是一類“repeating group”;同時這種設(shè)計會導(dǎo)致某些查詢困難,比如“有哪些藝人喜歡黃色?”

 

解決方案是將表拆分成兩個:

ID

Artist

……

1

Babyface

……

2

Sting

……

 

ID

FavoriteColor

1

Blue

1

Yellow

2

Green

 

總結(jié):

1NF最核心的 “原子性”,違反此規(guī)范的可能性:接近于0%。不過,網(wǎng)上很多帖子說在關(guān)系型數(shù)據(jù)庫中根本不可能違背1NF,我認為這是不對的。

 

 

2NF(second normal form):

No non-prime attribute in the table is functionally dependent on a part (proper subset) of a candidate key.

不存在非主屬性對任一候選鍵的部分函數(shù)依賴。

 

如果解釋完下面幾個概念,這個定義就可以讀懂了:

Superkey:超級鍵(L,如果屬性或?qū)傩越M合能唯一標識一條記錄,則它是一個Superkey

Candidate key:候選鍵,當Superkey只包含一個屬性時,則它是一個候選鍵;當Superkey包含一組屬性時,僅當這一組屬性不包含另一Superkey時,它是一個候選鍵。換句話說,候選鍵是“純凈的”、最小化的Superkey

Non-prime attribute:非主屬性,未在任何候選鍵中出現(xiàn)的屬性,即為非主屬性。

 

舉例來說,對表{First_name,Last_name,Address},假定全名不重復(fù),則:

Superkey

{First_name,Last_name}

{First_name,Last_name,Address}

Candidate key:

{First_name,Last_name}

Non-prime attribute

Address

 

淺白版:“2NF針對的是復(fù)合候選鍵(即鍵包含的字段個數(shù)>1)的情況,非主屬性不能只依賴于復(fù)合候選鍵中的一部分字段。”顯然,如果是非復(fù)合候選鍵,如果它符合1NF,那么它一定符合2NF

 

假設(shè)有這樣一張涉及藝人與唱片公司的關(guān)系表:

Artist

藝人

Company

唱片公司

DurationYears

簽約總年數(shù)

CompAddr

公司住址

Babyface

Solar

4

Indiana

Babyface

Laface

2

Indiana

 

 

 

 

顯然,{Artist,Company}為可以作為一個候選鍵,DurationYears在這沒有問題,但CompAddr是違反2NF的,它只依賴于候選鍵的一部分(依賴于Company),這是違反2NF的,為了消除這種情況,我們可以:

Artist

藝人

CompID

唱片公司

DurationYears

簽約總年數(shù)

Babyface

1

4

Babyface

2

2

 

ID

Company

唱片公司

CompAddr

公司住址

1

Solar

Indiana

2

Laface

Indiana

 

總結(jié):

對于2NF,如果關(guān)系中的候選鍵只包含一個屬性,可以直接略過。

 

在考慮2NF的過程中,不要把幾個無關(guān)的實體的屬性雜揉放在一個關(guān)系中,比如Artist是一個實體、Company是一個實體,它們可以有一系列的關(guān)聯(lián)表(也是實體),但在關(guān)聯(lián)表中盡量不要引入前兩個實體的無關(guān)屬性。

 

 

3NF(Third normal form)

Every non-prime attribute is non-transitively dependent on every key of the table.

不存在非主屬性對任一鍵(候選鍵)的傳遞依賴。

 

傳遞依賴,你可以顧名思義,這里就不再引入定義了,舉個例子,有下面一張表:

Tournament

賽事

Year

年份

Winner

冠軍

Winner Date of Birth

冠軍生日

Indiana Invitational

1998

Al Fredrickson

21 July 1975

Cleveland Open

1999

Bob Albertson

28 September 1968

Des Moines Masters

1999

Al Fredrickson

21 July 1975

Indiana Invitational

1999

Chip Masterson

14 March 1977

 

這里的候選鍵為{Tournament,Year},顯然有這樣的決定關(guān)系:

{Tournament,Year}→Winner

{Tournament,Year}→Winner→Winner Date of Birth

其中第二條就屬于違反3NF的情況,因為Winner Date of Birth依賴于Winner而不是直接依賴于候選鍵。這種情況下,可以將Winner,Winner Date of Birth單獨作為一張表,這里不贅述。

 

總結(jié):

我覺得大多數(shù)人憑借直觀感覺,就可使設(shè)計的關(guān)系符合3NF,所以這些理論,你只需要姑且讀之。

 

 

BCNF(Boyce-Codd normal form)BoyceCodd是該范式的兩名作者。)

Every non-trivial functional dependency in the table is a dependency on a superkey.

表中的任何非平凡函數(shù)依賴,都必須是對superkey的依賴。

 

non-trivial functional dependency:非平凡函數(shù)依賴,如果存在一個決定關(guān)系xy,且y并非x的子集,則叫著y非平凡函數(shù)依賴于x

 

BCNF3NF的最大區(qū)別是它并不僅針對非主屬性(non-prime attribute)來說,它發(fā)生的時候常常是表中根本不存在非主屬性,以至于它不可能違反2NF3NF。而BCNF的出現(xiàn)就是為了擴大“打擊面”。

 

于是BCNF的主旨是:補充對發(fā)生在主屬性(prime attribute)身上的函數(shù)依賴的約束,因為對于非主屬性的約束已經(jīng)在3NF中完成了。

 

例子,使用關(guān)系表描述學(xué)生、課程、教師的關(guān)系(假定一名教師只負責(zé)一門課程,一門課程則可以由多位教師負責(zé)):

Student

學(xué)生

Course

課程

Teacher

教師

S1

C1

T1

S1

C2

T2

S2

C1

T1

S2

C2

T3

S2

C3

T2

候選鍵:

{Student,Course}

{Student,Teacher}

因此這里不存在非主屬性,而在主屬性的函數(shù)依賴中,存在Teacher→Course,這屬于違反BCNF的情況。

 

可是,問題是這個表看起來還挺正常的啊?!它的毛病在于,我們無法阻止類似最后一行這樣的數(shù)據(jù)插入,而這會導(dǎo)致與前提“一名教師只負責(zé)一門課程”違背。所以我們還是需要將它拆分:

Student

學(xué)生

Teacher

教師

S1

T1

S1

T2

S2

T1

S2

T3

 

Teacher

教師

Course

課程

T1

C1

T2

C2

T3

C2

這樣,在“Teacher-Course”表中,借助主鍵的幫助,最后可以避免違背“一名教師只負責(zé)一門課程”這個前提。

 

那么,如果沒有這樣一個前提,是初的設(shè)計是否符合BCNF?目前看來是的。

 

真實的情況可能更為復(fù)雜,下面這個更接近于我的一些經(jīng)歷:

1)學(xué)生需要學(xué)習(xí)多門課程

2)一門課程可能有多位教師負責(zé)

3)一位教師可能負責(zé)多門課程

4)某一班級的某一課程對應(yīng)的教師是固定的(一位)

據(jù)此,為了描述學(xué)生、課程、教師三者的關(guān)系,從這一團亂麻中最早跳出來的大概是這樣的表:

Student

學(xué)生

Class

班級

Course

課程

Teacher

教師

 

 

 

 

 

 

 

 

 

候選鍵:

{Student,Course}

我們可以明顯地看到StudentClass違反了2NF,于是:

Student

學(xué)生

Class

班級

 

 

 

 

 

Class

班級

Course

課程

Teacher

教師

 

 

 

 

 

 

 

從這兩張表,仔細考慮,即便我們通過Class關(guān)聯(lián)兩張表,還是無法得出學(xué)生與課程的關(guān)系(只能得出可供該學(xué)生選擇的課程),所以我們需要再添加一張表:

Student

學(xué)生

Course

課程

 

 

 

 

 

最后大概是這么三張表,可能還有其它的方案,這里只是舉例說明,就不糾纏了。

 

BCNF之后,還有4NF5NFDKNF6NF,等什么時候有空了再看看是什么東東。


posted on 2011-03-31 16:31 楊粼波 閱讀(886) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美日韩网| 亚洲国产一区二区在线| 欧美成人免费视频| 亚洲欧洲在线播放| 亚洲永久免费精品| 久久人体大胆视频| 欧美日韩亚洲一区二区| 国产日韩欧美自拍| 亚洲精品一区在线观看| 性做久久久久久免费观看欧美| 乱人伦精品视频在线观看| 亚洲精品一区在线观看香蕉| 亚洲在线观看视频| 欧美成人亚洲成人日韩成人| 国产精品每日更新在线播放网址| 黄色成人在线观看| 亚洲一区不卡| 欧美肥婆在线| 午夜激情久久久| 欧美美女bbbb| 亚洲大片精品永久免费| 亚洲一区久久久| 欧美激情a∨在线视频播放| 亚洲伊人久久综合| 欧美男人的天堂| 经典三级久久| 欧美一区二区三区的| 亚洲精美视频| 久久婷婷丁香| 国产酒店精品激情| 在线视频你懂得一区| 免费观看欧美在线视频的网站| 一区二区三区欧美成人| 欧美电影免费观看网站| 极品少妇一区二区| 欧美一区2区视频在线观看| 亚洲精品欧美极品| 久久中文字幕一区二区三区| 国产精品区一区| 一区二区电影免费在线观看| 榴莲视频成人在线观看| 午夜在线观看欧美| 国产精品免费小视频| 一本久道久久综合婷婷鲸鱼 | 亚洲视频电影图片偷拍一区| 欧美va天堂在线| 黄色一区三区| 久久久999精品| 亚洲主播在线| 国产精品成人v| 一本色道久久综合| 91久久精品美女高潮| 开元免费观看欧美电视剧网站| 国产视频欧美| 欧美一区二区三区婷婷月色 | 亚洲一区二区三区四区中文| 欧美精品电影在线| 亚洲人www| 欧美激情亚洲另类| 老巨人导航500精品| 精品999在线播放| 久久久精品动漫| 午夜精品理论片| 国产精品一区二区三区久久久| 亚洲伊人色欲综合网| 一区二区三区回区在观看免费视频| 欧美日韩国产一级| 亚洲先锋成人| 99精品免费网| 国产精品theporn| 亚洲影院色在线观看免费| 日韩一区二区精品| 欧美日韩在线精品| 亚洲女ⅴideoshd黑人| 在线午夜精品自拍| 国产麻豆成人精品| 久久精品免费| 久久久久国产成人精品亚洲午夜| 国产自产v一区二区三区c| 久久久噜噜噜久久中文字幕色伊伊 | 美女脱光内衣内裤视频久久影院 | 亚洲高清自拍| 欧美xxx成人| 欧美国产三级| 亚洲精品在线免费| 夜夜狂射影院欧美极品| 国产精品色一区二区三区| 午夜精品久久久久久久白皮肤| 亚洲欧美日韩中文在线制服| 国产手机视频一区二区| 久久综合伊人77777麻豆| 久久一区二区三区av| 亚洲美女毛片| 宅男精品视频| 国产婷婷色一区二区三区在线| 久久野战av| 免费日韩av电影| 亚洲网站视频福利| 亚洲欧美影音先锋| **欧美日韩vr在线| 亚洲美女区一区| 国产欧美视频在线观看| 看片网站欧美日韩| 欧美日韩成人在线| 欧美在线精品一区| 久久综合导航| 亚洲视频高清| 欧美一区二区三区日韩| 亚洲国产成人在线视频| 日韩午夜电影| 国产一区二区三区丝袜| 亚洲国产精品第一区二区| 欧美视频在线不卡| 久热精品视频在线观看| 欧美日本亚洲| 久久天天狠狠| 欧美日韩精品免费观看视一区二区| 性欧美暴力猛交69hd| 久久综合影视| 午夜一区二区三区不卡视频| 久久免费精品视频| 亚洲先锋成人| 老司机精品导航| 亚洲一区二区免费视频| 久久综合给合| 亚洲欧美日韩综合国产aⅴ| 久久频这里精品99香蕉| 亚洲主播在线播放| 老牛嫩草一区二区三区日本| 亚洲欧美日本精品| 欧美福利一区| 久久三级福利| 国产精品国产一区二区| 欧美粗暴jizz性欧美20| 国产精品视频九色porn| 亚洲精品1区| 在线精品一区二区| 亚洲欧美国产日韩天堂区| 亚洲免费观看高清在线观看| 欧美一站二站| 亚洲欧美日韩在线高清直播| 欧美福利视频一区| 麻豆久久婷婷| 国产午夜精品全部视频在线播放| 亚洲精品欧美在线| 在线欧美电影| 欧美在线啊v| 欧美一区二区高清在线观看| 欧美日韩国产一区二区| 欧美激情aⅴ一区二区三区| 国产一区香蕉久久| 亚洲影院免费| 亚洲欧美日韩电影| 欧美日韩中文字幕精品| 亚洲电影免费在线观看| 国产亚洲免费的视频看| 亚洲一区999| 中文日韩在线| 欧美激情欧美激情在线五月| 免费成人在线视频网站| 国内精品亚洲| 欧美专区日韩专区| 久久超碰97人人做人人爱| 国产精品久久久久77777| 亚洲精品黄网在线观看| 亚洲三级免费电影| 麻豆精品视频| 欧美福利精品| 亚洲国产精选| 每日更新成人在线视频| 噜噜噜91成人网| 韩日在线一区| 久久久91精品国产一区二区三区| 欧美在线在线| 国产午夜精品在线观看| 亚洲欧美日本另类| 欧美在现视频| 国产日韩视频一区二区三区| 亚洲欧美日韩成人| 久久精品欧洲| 国产主播在线一区| 久久久国产精品一区二区三区| 久久国产日韩欧美| 国产资源精品在线观看| 久久久福利视频| 蜜桃av噜噜一区| 亚洲经典一区| 欧美丰满高潮xxxx喷水动漫| 亚洲韩国青草视频| 一区二区三区福利| 国产精品国产成人国产三级| 亚洲一二三四久久| 久久精品一区二区国产| 韩国精品在线观看| 久久字幕精品一区| 最新中文字幕一区二区三区| 亚洲一区精品视频| 国产日韩欧美不卡在线| 久久久久久久综合狠狠综合| 欧美激情女人20p|