国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

數(shù)據(jù)庫(kù)三大范式淺談

2024-07-21 02:51:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

作者也是菜鳥(niǎo)一個(gè),最近在學(xué)習(xí)數(shù)據(jù)庫(kù),在網(wǎng)上看了一些數(shù)據(jù)庫(kù)三大范式詳解,費(fèi)了好大盡才算勉強(qiáng)搞明白,下面有說(shuō)的不對(duì)的期望指出,一來(lái)我好改正,關(guān)鍵不要在誤導(dǎo)其他新手.廢話就說(shuō)到這里了,直接主題了.

第一范式(1NF)無(wú)重復(fù)的列

    所謂第一范式(1NF)是指數(shù)據(jù)庫(kù)表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性。如果出現(xiàn)重復(fù)的屬性,就可能需要定義一個(gè)新的實(shí)體,新的實(shí)體由重復(fù)的屬性構(gòu)成,新實(shí)體與原實(shí)體之間為一對(duì)多關(guān)系。

上面是官方解釋, 我的理解是這樣的.比如這樣一個(gè)表  學(xué)生成績(jī)表

學(xué)生成績(jī)表
id學(xué)生名班級(jí)考試類型科目分?jǐn)?shù)
1張三3_2其中考試數(shù)學(xué)89
這么垃圾的表我以前就寫(xiě)過(guò),首先這種表是不符合第一范式的,

同一列中不能有多個(gè)值  班級(jí) 字段 3_2 數(shù)據(jù)原意是 3年級(jí)2班 (這個(gè)是我個(gè)人加的應(yīng)為現(xiàn)在的關(guān)系型數(shù)據(jù)庫(kù)是設(shè)計(jì)不出來(lái)不符合第一范式的表出來(lái),原因就是數(shù)據(jù)庫(kù)不支持這樣的設(shè)置)

正確的方式應(yīng)該把 班級(jí)分成兩個(gè)列  字段應(yīng)該為 年級(jí) 和班編號(hào) 

第二范式

是在滿足第一范式的基礎(chǔ)上建立起來(lái)的

要求實(shí)體的屬性完全依賴于主關(guān)鍵字。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性,如果存在,那么這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來(lái)形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)體之間是一對(duì)多的關(guān)系。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的唯一標(biāo)識(shí)。簡(jiǎn)而言之,第二范式就是非主屬性非部分依賴于主關(guān)鍵字上面大概的意思好像是,在一個(gè)表中不可以在一個(gè)表中表達(dá)兩種或以上的事務(wù),舉個(gè)列子 

成績(jī)表
id姓名科目
1張三數(shù)學(xué)

這種是不符合的.因?yàn)樾彰涂颇渴莾煞N不同的類或者說(shuō)事務(wù),就是說(shuō)這兩個(gè)不可以整到一個(gè)表中.但是下面這張表和上面的表是兩碼事

成績(jī)表
id姓名_ID科目_ID分?jǐn)?shù)
134289
上面這個(gè)表是符合第2范式的, 可以根這個(gè)列子 結(jié)合  

要求實(shí)體的屬性完全依賴于主關(guān)鍵字。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性,如果存在,那么這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來(lái)形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)體之間是一對(duì)多的關(guān)系    琢磨一下應(yīng)該知道說(shuō)的是什么了.
第三范式(3NF)        滿足第三范式必須先滿足第二范式。簡(jiǎn)而言之,第三范式要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主關(guān)鍵字信息。先來(lái)個(gè)不符合的列子
學(xué)生_ID姓名年齡學(xué)校學(xué)校電話
1張三14藍(lán)天小學(xué)XXX
這個(gè)和第2范式有的相似,我的理解是在第2范式的基礎(chǔ)上,在進(jìn)行過(guò)濾或者審核, 上面學(xué)校的信息和學(xué)生信息搞在一張表上,感覺(jué)好像有點(diǎn)勉強(qiáng),還有一個(gè)要命的隱患就是,學(xué)校的名字改了或者學(xué)校的電話改了,會(huì)怎么樣, 那樣的話要修改的數(shù)據(jù)數(shù)目就多了.
符合3范式的修改應(yīng)該 把上面一張表,改成兩個(gè)表,就是單獨(dú)把學(xué)校信息 搞個(gè)表,下面結(jié)合上面的3范式,做個(gè)我還感覺(jué)合格的數(shù)據(jù)表來(lái),共新手參考下.當(dāng)然只是考慮如何符合3范式要求,并沒(méi)有考慮實(shí)際應(yīng)用.
學(xué)生信息表
學(xué)生_ID姓名年齡 
1小明14 
學(xué)校信息表
學(xué)校_ID學(xué)校_名學(xué)校_電話
1藍(lán)天小學(xué)XXX
科目表
科目_ID科目
1語(yǔ)文
2數(shù)學(xué)
考試類型表
考試類型-ID類型
1其中考試
2期末考試
考試成績(jī)表
ID學(xué)校_ID學(xué)生_ID考試類型_ID科目_ID考試時(shí)間考試分?jǐn)?shù)
12212xxx90
建立這么多表的好處就是,修改,擴(kuò)充性強(qiáng),比如如果要增加考試類型 只需要改寫(xiě) 考試類型表 就可以了,(但建立的表并不是越多越好,比如說(shuō)把 學(xué)生信息表 姓名 和 年齡 建兩張表,這樣查詢其來(lái)會(huì)帶來(lái)沒(méi)必要的麻煩),3范式本身并不是一種定義,她應(yīng)該是開(kāi)發(fā)者們?cè)趯?shí)際的工作中凝聚出來(lái)的經(jīng)驗(yàn),她的合理性是經(jīng)得起考驗(yàn)的.最后希望這篇半抄的文稿能給人帶來(lái)幫助.


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 从化市| 邢台市| 云安县| 望都县| 威海市| 双峰县| 西吉县| 江山市| 五指山市| SHOW| 南岸区| 荥经县| 新民市| 遂平县| 上思县| 安乡县| 乐平市| 漳浦县| 肃宁县| 雷州市| 常宁市| 航空| 休宁县| 正宁县| 长葛市| 聂荣县| 河北区| 渝北区| 安溪县| 新蔡县| 蓝山县| 古蔺县| 宝鸡市| 定州市| 华亭县| 顺昌县| 浠水县| 鹤庆县| 扎赉特旗| 布拖县| 乐陵市|