真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

數(shù)據(jù)庫(kù)原理及MySQL應(yīng)用|關(guān)系規(guī)范化-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比安源網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式安源網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋安源地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

各位看官,各位朋友,久等了,終于有時(shí)間更新了 !

關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)模式設(shè)計(jì)不當(dāng),就會(huì)出現(xiàn)數(shù)據(jù)冗余,從而導(dǎo)致操作異常。對(duì)關(guān)系模式進(jìn)行范式優(yōu)化,使得數(shù)據(jù)的冗余度最小化以及運(yùn)行效率大化。

01、第一范式

第一范式(First Normal Form)簡(jiǎn)稱1NF,是對(duì)關(guān)系模式的最基本要求。也就是說(shuō),一個(gè)二維表格,只有滿足1NF的要求,才能被稱為關(guān)系。

如果關(guān)系模式R的每個(gè)屬性都是原子的,即每個(gè)屬性對(duì)應(yīng)的域中的每個(gè)元素都是不可再分的最小單元,則稱R屬于第一范式,記作R∈1NF。

如表1所示的二維表格中,由于每位顧客作為一行,每位顧客可以生成多張訂單,而每張訂單中也可以包含多本圖書(shū),所以在orderid、orderdate、bookid、title、quantity、ctgcode、ctgname列中,針對(duì)每個(gè)行都可能出現(xiàn)多個(gè)值,也就是說(shuō)這些列中存放的值不具有原子性,存在“表中表”的結(jié)構(gòu),所以這個(gè)二維表格不滿足第一范式的要求,不能存放在關(guān)系數(shù)據(jù)庫(kù)中。

■?表1 圖書(shū)銷售表booksale

對(duì)該二維表格進(jìn)行規(guī)范化處理,可以得到表2所示的滿足第一范式的關(guān)系。

■?表2滿足第一范式的圖書(shū)銷售關(guān)系booksale

通過(guò)對(duì)表2所示的關(guān)系分析可知,數(shù)據(jù)之間存在如下聯(lián)系:

(1) 每位顧客可以擁有多張訂單,每張訂單只屬于一位顧客。

(2) 每張訂單里可以包含多冊(cè)圖書(shū),每?jī)?cè)圖書(shū)也可以被包含在多張訂單里。

(3) 每?jī)?cè)圖書(shū)屬于一個(gè)類別,每個(gè)類別下可以有多冊(cè)圖書(shū)。

在這個(gè)關(guān)系中,任意一個(gè)orderid和bookid屬性的值的組合都可以唯一地確定一條圖書(shū)銷售記錄,所以(orderid, bookid)是這個(gè)關(guān)系的候選鍵。(orderid, bookid)是這個(gè)關(guān)系唯一的候選鍵,可以將其視為該關(guān)系的主鍵,這個(gè)關(guān)系的關(guān)系模式可以描述為:

Booksale (cstid, cstname, orderid, orderdate, bookid, title, quantity, ctgcode, ctgname)
02、操作異常問(wèn)題

雖然關(guān)系模式Booksale滿足第一范式,但是該關(guān)系模式下的具體關(guān)系中可能存在著大量的數(shù)據(jù)冗余。數(shù)據(jù)冗余不僅會(huì)占用更多的存儲(chǔ)空間,而且在對(duì)關(guān)系進(jìn)行插入、更新、刪除操作的過(guò)程中還可能發(fā)生操作異常,引發(fā)數(shù)據(jù)不一致的問(wèn)題。

1. 插入異常

如果有一位顧客想要注冊(cè)為會(huì)員,但是他還從未購(gòu)書(shū),因?yàn)樵撚涗浫鄙僦麈I,所以這位顧客的信息無(wú)法插入到該關(guān)系中。也就是說(shuō),需要插入到關(guān)系中的記錄無(wú)法插入到關(guān)系中。

如果將booksale關(guān)系中的數(shù)據(jù)分別存儲(chǔ)在如表2-22~表2-27所示的5個(gè)關(guān)系中,那么就可以將這位會(huì)員的信息直接插入到關(guān)系customers中,解決想要插入記錄而無(wú)法插入的問(wèn)題。

對(duì)應(yīng)的關(guān)系模式為:

Customers (cstid, cstname)
Orders (orderid, orderdate, cstid[FK])
Books (bookid, title, ctgcode[FK])
Categories (ctgcode, ctgname)
Orderitems (orderid[FK], bookid[FK], quantity)
2. 刪除異常

在圖書(shū)銷售booksale關(guān)系中,如果將訂單號(hào)orderid為4的訂單信息刪除,那么顧客“李明宇”的信息也會(huì)被同時(shí)刪除,或者說(shuō)“李明宇”的信息就無(wú)法保存在這個(gè)關(guān)系中了。也就是說(shuō),不希望刪除的數(shù)據(jù)被刪除了。

如果將關(guān)系分解為5個(gè)“小”關(guān)系,則刪除orderid為4的訂單記錄只需要在orders關(guān)系中刪除對(duì)應(yīng)的元組即可,不會(huì)影響到顧客信息的存儲(chǔ),也就避免了刪除異常的問(wèn)題。

3. 更新復(fù)雜

當(dāng)需要更新關(guān)系中的數(shù)據(jù)時(shí),例如更新書(shū)號(hào)bookid為10號(hào)的圖書(shū)的書(shū)名title的時(shí)候,因?yàn)樵搱D書(shū)的信息重復(fù)存儲(chǔ),所以需要將所有圖書(shū)的書(shū)名title同時(shí)正確更新,否則就會(huì)出現(xiàn)數(shù)據(jù)不一致的問(wèn)題。

如果將關(guān)系分解為5個(gè)“小”關(guān)系,則更新10號(hào)圖書(shū)的書(shū)名的操作僅需在books關(guān)系中更新一個(gè)元組,不會(huì)造成更新后數(shù)據(jù)不一致的情況發(fā)生。

關(guān)系模式booksale以及由該關(guān)系模式分解得到的5個(gè)關(guān)系模式,都是滿足1NF的關(guān)系,都可以用來(lái)在數(shù)據(jù)庫(kù)中存放相關(guān)數(shù)據(jù),但是它們有各自的優(yōu)缺點(diǎn)。

將關(guān)系booksale分解為5個(gè)關(guān)系后,可以避免數(shù)據(jù)冗余以及操作異常問(wèn)題,但是會(huì)增加數(shù)據(jù)查詢的復(fù)雜程度。例如:想要查看顧客“張志遠(yuǎn)”訂購(gòu)的圖書(shū)的書(shū)號(hào)、書(shū)名、類別名稱,如果通過(guò)booksale關(guān)系查詢,則關(guān)系代數(shù)表達(dá)式非常簡(jiǎn)單:?

同樣的查詢操作,如果通過(guò)分解后的5個(gè)關(guān)系進(jìn)行查詢,則需要先將關(guān)系連接起來(lái)再進(jìn)行查詢。

由于連接運(yùn)算在數(shù)據(jù)庫(kù)操作中既消耗系統(tǒng)資源又效率非常低,所以如果將關(guān)系模式分解得過(guò)于“小”,會(huì)影響數(shù)據(jù)庫(kù)的查詢操作性能。

03、函數(shù)依賴

函數(shù)依賴是最重要的一種數(shù)據(jù)依賴,在對(duì)關(guān)系模式進(jìn)行規(guī)范化處理的過(guò)程中,主要使用函數(shù)依賴來(lái)分析關(guān)系中存在的數(shù)據(jù)依賴特點(diǎn)。

1. 函數(shù)依賴的概念

假設(shè)X和Y是關(guān)系模式R中的兩個(gè)不同的屬性或?qū)傩越M,如果對(duì)于X中的每一個(gè)具體值,Y中都有唯一的具體值與之對(duì)應(yīng),則稱Y函數(shù)依賴于X,或X函數(shù)決定Y,記作X→Y,其中X被稱為決定因素。

當(dāng)X→Y,并且Y包含于X時(shí),稱X→Y是平凡函數(shù)依賴;當(dāng)X→Y,并且Y不包含于X時(shí),稱X→Y是非平凡函數(shù)依賴。這里討論的是非平凡函數(shù)依賴。

以Booksale關(guān)系模式為例,因?yàn)閷?duì)于屬性cstid中的每一個(gè)具體值,在屬性cstname中都只有唯一一個(gè)值與之對(duì)應(yīng),所以cstid函數(shù)決定cstname,即cstid→cstname。但反過(guò)來(lái),因?yàn)榭赡艽嬖陬櫩椭孛那闆r,對(duì)于屬性cstname中的一個(gè)值,可能對(duì)應(yīng)屬性cstid中的多個(gè)值,所以cstname不能函數(shù)決定cstid,記作

。

由于一張訂單里的一冊(cè)圖書(shū)的銷售數(shù)量是一定的,所以orderid和bookid組合起來(lái)可以決定quantity,即(orderid,bookid)→quantity。

2. 部分函數(shù)依賴與完全函數(shù)依賴

假設(shè)X→Y是關(guān)系模式R中的一個(gè)函數(shù)依賴,如果存在X的真子集X′,使得X′→Y成立,則稱Y部分依賴于X,記作

;如果在X中找不到一個(gè)真子集X′,使得X′→Y成立,則稱Y完全依賴于X。

在關(guān)系模式Booksale中

就是一個(gè)部分函數(shù)依賴。因?yàn)闆Q定因素(orderid, bookid)的一個(gè)真子集bookid就可以函數(shù)決定price,即bookid→price。

(orderid,bookid)→quantity是一個(gè)完全函數(shù)依賴,因?yàn)闆Q定因素的任何一個(gè)真子集都不能函數(shù)決定quantity。

3. 傳遞函數(shù)依賴

在關(guān)系模式R中,如果存在函數(shù)依賴X→Y,Y→Z,而

,則稱Z傳遞依賴于X,記作。

在關(guān)系模式Booksale中,bookid→ctgcode,ctgcode→ctgname,而

,所以是一個(gè)傳遞函數(shù)依賴。

提示/

因?yàn)椴糠趾瘮?shù)依賴一定是傳遞函數(shù)依賴,所以如果關(guān)系模式中不存在傳遞函數(shù)依賴,則一定不存在部分函數(shù)依賴。

04、第二范式

包含在主鍵中的屬性稱為主屬性;不包含在主鍵中的屬性稱為非主屬性。

如果關(guān)系模式R屬于1NF,并且每個(gè)非主屬性都完全函數(shù)依賴于R的主鍵,那么稱R屬于第二范式,記作R∈2NF。

在關(guān)系模式Booksale中,除了屬性quantity對(duì)主鍵(orderid, bookid)的函數(shù)依賴是完全函數(shù)依賴以外,其他非主屬性對(duì)主鍵的函數(shù)依賴都是部分函數(shù)依賴,因?yàn)橹麈I的真子集orderid可以函數(shù)決定屬性orderdate、cstid和cstname;主鍵的另外一個(gè)真子集bookid可以函數(shù)決定屬性title、ctgcode和ctgname。即:

由于該關(guān)系模式中存在著非主屬性對(duì)主鍵的部分函數(shù)依賴,所以這個(gè)關(guān)系模式不屬于第二范式。

為了將關(guān)系模式規(guī)范到2NF,可以對(duì)關(guān)系模式做如下處理:

(1) 將那些部分依賴于主鍵的屬性從關(guān)系模式中取出,再?gòu)?fù)制它們所依賴的主屬性作為新關(guān)系模式的主鍵來(lái)構(gòu)成一個(gè)新的關(guān)系模式。

(2) 剩下的屬性構(gòu)成另一個(gè)關(guān)系模式。

例如,將屬性orderdate、cstid和cstname從原關(guān)系模式中取出,再?gòu)?fù)制它們所依賴的主屬性orderid作為新關(guān)系模式的主鍵,構(gòu)成新關(guān)系模式Orders(orderid, orderdate, cstid, cstname);將屬性title、ctgcode和ctgname從原關(guān)系模式中取出,再?gòu)?fù)制它們所依賴的主屬性bookid作為新關(guān)系模式的主鍵,構(gòu)成新關(guān)系模式Books(bookid, title, ctgcode, ctgname);原關(guān)系模式中剩余的屬性構(gòu)成一個(gè)新的關(guān)系模式OrderItems(orderid[FK],?bookid[FK], quantity)。

所以關(guān)系模式Booksale可以規(guī)范為以下三個(gè)關(guān)系模式。這三個(gè)關(guān)系模式不存在非主屬性對(duì)主鍵的部分函數(shù)依賴,所以它們都是2NF的關(guān)系模式。分解得到的這三個(gè)新的關(guān)系模式可以通過(guò)外鍵連接起來(lái)。

分解后的關(guān)系模式仍然存在數(shù)據(jù)冗余,例如在關(guān)系模式Orders中,一位顧客可以有多張訂單,所以顧客的信息會(huì)重復(fù)存儲(chǔ);在關(guān)系模式Books中,一個(gè)類別下可以有多冊(cè)圖書(shū),那么圖書(shū)類別信息會(huì)重復(fù)存儲(chǔ)。

05、第三范式

如果關(guān)系模式R屬于1NF,并且每個(gè)非主屬性都不傳遞函數(shù)依賴于R的主鍵,那么稱R屬于第三范式,記作R∈3NF。

在關(guān)系模式Orders中,主鍵orderid函數(shù)決定cstid,cstid函數(shù)決定cstname,而cstid不能函數(shù)決定orderid,所以cstname對(duì)主鍵orderid的函數(shù)依賴是傳遞函數(shù)依賴,即:

由于關(guān)系模式Orders中存在著非主屬性對(duì)主鍵的傳遞函數(shù)依賴,所以這個(gè)關(guān)系模式不滿足3NF。

為了將關(guān)系模式規(guī)范到3NF,可以對(duì)關(guān)系模式做如下處理:

(1) 將那些傳遞函數(shù)依賴于主鍵的屬性從關(guān)系模式中取出,再?gòu)?fù)制它們所直接函數(shù)依賴的屬性作為新關(guān)系模式的主鍵來(lái)構(gòu)成一個(gè)新的關(guān)系模式。

(2) 剩下的屬性構(gòu)成另一個(gè)新關(guān)系模式。

例如,將屬性cstname從原關(guān)系模式中取出,再?gòu)?fù)制它所直接函數(shù)依賴的屬性cstid作為新關(guān)系模式的主鍵,構(gòu)成新關(guān)系模式Customers(cstid, cstname);原關(guān)系模式中剩余的屬性構(gòu)成一個(gè)新的關(guān)系模式Orders(orderid, orderdate, cstid[FK])。

分析關(guān)系模式Books,包含如下函數(shù)依賴:

關(guān)系模式Books同樣存在非主屬性對(duì)主鍵的傳遞函數(shù)依賴,所以該關(guān)系模式不滿足3NF。通過(guò)同樣的方法分解關(guān)系模式Books得到兩個(gè)新關(guān)系模式。最終,總共得到5個(gè)新關(guān)系模式,如下所示。具體關(guān)系以及關(guān)系中的數(shù)據(jù)如表2-22~表2-26所示。

這5個(gè)分解得到的關(guān)系模式都不存在非主屬性對(duì)主鍵的傳遞函數(shù)依賴,所以它們都是3NF的關(guān)系模式。分解得到的這5個(gè)新的關(guān)系模式可以通過(guò)外鍵連接起來(lái)。

最早被提出的關(guān)系范式是第一范式(1NF)、第二范式(2NF)和第三范式(3NF),接著由R. Boyce和E. F. Codd于1974年共同提出了Boyce-Codd范式(BCNF),這個(gè)關(guān)系范式是對(duì)3NF的增強(qiáng)定義。以上4個(gè)關(guān)系范式中除了1NF以外的3個(gè)關(guān)系范式都是基于屬性之間的函數(shù)依賴提出的。比BCNF級(jí)別更高的關(guān)系范式還包括1977年提出的第四范式(4NF)和1979年提出的第五范式(5NF),其中4NF建立在多值依賴的基礎(chǔ)上,5NF建立在連接依賴的基礎(chǔ)上。圖2-6是各個(gè)關(guān)系范式之間的關(guān)系。

■?圖2-6關(guān)系范式之間的關(guān)系

在對(duì)關(guān)系模式進(jìn)行設(shè)計(jì)的時(shí)候,并不是規(guī)范化程度越高的關(guān)系模式就越好。如果對(duì)數(shù)據(jù)庫(kù)的操作主要是查詢,而更新較少時(shí),為了提高效率,寧可保留適當(dāng)?shù)臄?shù)據(jù)冗余而不要將關(guān)系模式分解得太小,否則為了查詢數(shù)據(jù),常常要做大量的連接運(yùn)算,反而會(huì)花費(fèi)大量的時(shí)間,降低查詢的效率;當(dāng)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)操作主要是插入、更新和刪除操作時(shí),為了避免數(shù)據(jù)操作異常的發(fā)生,應(yīng)該盡量將關(guān)系模式規(guī)范到3NF。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享文章:數(shù)據(jù)庫(kù)原理及MySQL應(yīng)用|關(guān)系規(guī)范化-創(chuàng)新互聯(lián)
本文鏈接:http://weahome.cn/article/psjjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部