1NF直到BCNF的四種范式之間有如下關(guān)系:
BCNF包含了3NF包含2NF包含1NF
小結(jié):
目地:規(guī)范化目的是使結(jié)構(gòu)更合理,消除存儲(chǔ)異常,使數(shù)據(jù)冗余盡量小,便于插入、刪除和更新
原則:遵從概念單一化 "一事一地"原則,即一個(gè)關(guān)系模式描述一個(gè)實(shí)體或?qū)嶓w間的一種聯(lián)系。規(guī)范的實(shí)質(zhì)就是概念的單一化。
方法:將關(guān)系模式投影分解成兩個(gè)或兩個(gè)以上的關(guān)系模式。
要求:分解后的關(guān)系模式集合應(yīng)當(dāng)與原關(guān)系模式"等價(jià)",即經(jīng)過自然聯(lián)接可以恢復(fù)原關(guān)系而不丟失信息,并保持屬性間合理的聯(lián)系。
注意:一個(gè)關(guān)系模式結(jié)這分解可以得到不同關(guān)系模式集合,也就是說分解方法不是唯一的。最小冗余的要求必須以分解后的數(shù)據(jù)庫能夠表達(dá)原來數(shù)據(jù)庫所有信息為前提來實(shí)現(xiàn)。其根本目標(biāo)是節(jié)省存儲(chǔ)空間,避免數(shù)據(jù)不一致性,提高對(duì)關(guān)系的操作效率,同時(shí)滿足應(yīng)用需求。實(shí)際上,并不一定要求全部模式都達(dá)到BCNF不可。有時(shí)故意保留部分冗余可能更方便數(shù)據(jù)查詢。尤其對(duì)于那些更新頻度不高,查詢頻度極高的數(shù)據(jù)庫系統(tǒng)更是如此。
在關(guān)系數(shù)據(jù)庫中,除了函數(shù)依賴之外還有多值依賴,聯(lián)接依賴的問題,從而提出了第四范式,第五范式等更高一級(jí)的規(guī)范化要求。在此,以后再談。
各位朋友,你看過后有何感想,其實(shí),任何一本數(shù)據(jù)庫基礎(chǔ)理論的書都會(huì)講這些東西,考慮到很多網(wǎng)友是半途出家,來做數(shù)據(jù)庫。特找一本書大抄特抄一把,各位有什么問題,也別問我了,自已去找一本關(guān)系數(shù)據(jù)庫理論的書去看吧,說不定,對(duì)各位大有幫助。說是說以上是基礎(chǔ)理論的東西,請(qǐng)大家想想,你在做數(shù)據(jù)庫設(shè)計(jì)的時(shí)候有沒有考慮過遵過以上幾個(gè)范式呢,有沒有在數(shù)據(jù)庫設(shè)計(jì)做得不好之時(shí),想一想,對(duì)比以上所講,到底是違反了第幾個(gè)范式呢?
我見過的數(shù)據(jù)庫設(shè)計(jì),很少有人做到很符合以上幾個(gè)范式的,一般說來,第一范式大家都可以遵守,完全遵守第二第三范式的人很少了,遵守的人一定就是設(shè)計(jì)數(shù)據(jù)庫的高手了, BCNF的范式出現(xiàn)機(jī)會(huì)較少,而且會(huì)破壞完整性,你可以在做設(shè)計(jì)之時(shí)不考慮它,當(dāng)然在ORACLE中可通過觸發(fā)器解決其缺點(diǎn)。以后我們共同做設(shè)計(jì)之時(shí),也希望大家遵守以上幾個(gè)范式。
相關(guān)推薦:計(jì)算機(jī)三級(jí)數(shù)據(jù)庫:SQL查詢語句精華使用簡要北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |