摘要:具體做法是在概念數(shù)據(jù)模型設(shè)計(jì)時遵守第三范式,降低范式標(biāo)準(zhǔn)的工作放到物理數(shù)據(jù)模型設(shè)計(jì)時考慮。金額這個字段的存在,表明該表的設(shè)計(jì)不滿足第三范式,因?yàn)榻痤~可以由單價乘以數(shù)量得到,說明金額是冗余字段。
一、第一范式
1NF是對屬性的原子性,要求屬性具有原子性,不可再分解;
表:字段1、 字段2(字段2.1、字段2.2)、字段3 ......
如學(xué)生(學(xué)號,姓名,性別,出生年月日),如果認(rèn)為最后一列還可以再分成(出生年,出生月,出生日),它就不是一范式了,否則就是;
二、第二范式2NF是對記錄的惟一性,要求記錄有惟一標(biāo)識,即實(shí)體的惟一性,即不存在部分依賴;
表:學(xué)號、課程號、姓名、學(xué)分;
這個表明顯說明了兩個事務(wù):學(xué)生信息, 課程信息;由于非主鍵字段必須依賴主鍵,這里學(xué)分依賴課程號,姓名依賴與學(xué)號,所以不符合二范式。
可能會存在問題:
數(shù)據(jù)冗余:,每條記錄都含有相同信息;
刪除異常:刪除所有學(xué)生成績,就把課程信息全刪除了;
插入異常:學(xué)生未選課,無法記錄進(jìn)數(shù)據(jù)庫;
更新異常:調(diào)整課程學(xué)分,所有行都調(diào)整。
正確做法:
學(xué)生:Student(學(xué)號, 姓名);
課程:Course(課程號, 學(xué)分);
選課關(guān)系:StudentCourse(學(xué)號, 課程號, 成績)。
3NF是對字段的冗余性,要求任何字段不能由其他字段派生出來,它要求字段沒有冗余,即不存在傳遞依賴;
表: 學(xué)號, 姓名, 年齡, 學(xué)院名稱, 學(xué)院電話
因?yàn)榇嬖?strong>依賴傳遞: (學(xué)號) → (學(xué)生)→(所在學(xué)院) → (學(xué)院電話) 。
可能會存在問題:
數(shù)據(jù)冗余:有重復(fù)值;
更新異常:有重復(fù)的冗余信息,修改時需要同時修改多條記錄,否則會出現(xiàn)數(shù)據(jù)不一致的情況 。
正確做法:
學(xué)生:(學(xué)號, 姓名, 年齡, 所在學(xué)院);
學(xué)院:(學(xué)院, 電話)。
四、反范式化一般說來,數(shù)據(jù)庫只需滿足第三范式(3NF)就行了。
沒有冗余的數(shù)據(jù)庫設(shè)計(jì)可以做到。但是,沒有冗余的數(shù)據(jù)庫未必是最好的數(shù)據(jù)庫,有時為了提高運(yùn)行效率,就必須降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù)。具體做法是:在概念數(shù)據(jù)模型設(shè)計(jì)時遵守第三范式,降低范式標(biāo)準(zhǔn)的工作放到物理數(shù)據(jù)模型設(shè)計(jì)時考慮。降低范式就是增加字段,允許冗余,達(dá)到以空間換時間的目的。
〖例〗:有一張存放商品的基本表,如表1所示?!敖痤~”這個字段的存在,表明該表的設(shè)計(jì)不滿足第三范式,因?yàn)椤敖痤~”可以由“單價”乘以“數(shù)量”得到,說明“金額”是冗余字段。但是,增加“金額”這個冗余字段,可以提高查詢統(tǒng)計(jì)的速度,這就是以空間換時間的作法。
在Rose 2002中,規(guī)定列有兩種類型:數(shù)據(jù)列和計(jì)算列?!敖痤~”這樣的列被稱為“計(jì)算列”,而“單價”和“數(shù)量”這樣的列被稱為“數(shù)據(jù)列”。
五、范式化設(shè)計(jì)和反范式化設(shè)計(jì)的優(yōu)缺點(diǎn) 5.1 范式化優(yōu)點(diǎn):
缺點(diǎn):
5.2 反范式化優(yōu)點(diǎn):
缺點(diǎn):
參考資料如下:
1、通俗地理解數(shù)據(jù)庫三個范式
2、數(shù)據(jù)庫模型設(shè)計(jì),第一范式、第二范式、第三范式簡單例子理解
3、數(shù)據(jù)庫三大范式最簡單的解釋
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/17702.html
摘要:注意本文目的不在開發(fā)一個什么什么插件,只告訴你如何進(jìn)行開發(fā)注下文并無太多代碼,代碼建議到你新建一個模版插件然后你就擁有了所有的代碼,然后根據(jù)下文加深自己的理解,相信你會看懂它。開始開發(fā)入口文件有個方法釋放資源的方法不要做其他事情。 atom高級用法???除了自定義功能基本沒啥好玩,抱著裝逼的想法,搜了一波atom插件入門,發(fā)現(xiàn)說得太迷糊(可能是我太菜),然后打開了官網(wǎng)的插件文檔,細(xì)細(xì)的...
摘要:暴露年齡了廣告詞飯后嚼兩粒大概,故事性很強(qiáng),比較有意思同時直入主題,飯后吃益達(dá)口香糖有益健康。書里破繭成蝶說道,揣摩用戶的心思遠(yuǎn)遠(yuǎn)不夠,你不可能完整的想到別人在想什么,所以還需要去體驗(yàn)用戶的生活。 用戶體驗(yàn)(User Experience,簡稱UX 或是UE),它指用戶在使用一個產(chǎn)品、系統(tǒng)或者服務(wù)時建立起來的純主觀感受。 showImg(https://segmentfault.com...
摘要:暴露年齡了廣告詞飯后嚼兩粒大概,故事性很強(qiáng),比較有意思同時直入主題,飯后吃益達(dá)口香糖有益健康。書里破繭成蝶說道,揣摩用戶的心思遠(yuǎn)遠(yuǎn)不夠,你不可能完整的想到別人在想什么,所以還需要去體驗(yàn)用戶的生活。 用戶體驗(yàn)(User Experience,簡稱UX 或是UE),它指用戶在使用一個產(chǎn)品、系統(tǒng)或者服務(wù)時建立起來的純主觀感受。 showImg(https://segmentfault.com...
閱讀 1599·2021-11-16 11:44
閱讀 7491·2021-09-22 15:00
閱讀 4524·2021-09-02 10:20
閱讀 1955·2021-08-27 16:20
閱讀 2402·2019-08-26 14:00
閱讀 2916·2019-08-26 11:44
閱讀 1647·2019-08-23 18:33
閱讀 1877·2019-08-22 17:28