国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Mysql數(shù)據(jù)庫設(shè)計(jì)三范式實(shí)例解析

瀏覽:38日期:2023-10-15 15:59:33

三范式

1NF:字段不可分;

2NF:有主鍵,非主鍵字段依賴主鍵;

3NF:非主鍵字段不能相互依賴;

解釋:

1NF:原子性 字段不可再分,否則就不是關(guān)系數(shù)據(jù)庫;

2NF:唯一性 一個(gè)表只說明一個(gè)事物;

3NF:每列都與主鍵有直接關(guān)系,不存在傳遞依賴;

第一范式(1NF)

即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只要數(shù)據(jù)庫是關(guān)系型數(shù)據(jù)庫(mysql/oracle/db2/informix/sysbase/sql server),就自動的滿足1NF。數(shù)據(jù)庫表的每一列都是不可分割的原子數(shù)據(jù)項(xiàng),而不能是集合,數(shù)組,記錄等非原子數(shù)據(jù)項(xiàng)。如果實(shí)體中的某個(gè)屬性有多個(gè)值時(shí),必須拆分為不同的屬性 。通俗理解即一個(gè)字段只存儲一項(xiàng)信息。

Mysql數(shù)據(jù)庫設(shè)計(jì)三范式實(shí)例解析

關(guān)系型數(shù)據(jù)庫: mysql/oracle/db2/informix/sysbase/sql server 非關(guān)系型數(shù)據(jù)庫: (特點(diǎn): 面向?qū)ο蠡蛘呒? NoSql數(shù)據(jù)庫: MongoDB/redis(特點(diǎn)是面向文檔)

第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數(shù)據(jù)庫表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分。為實(shí)現(xiàn)區(qū)分通常需要我們設(shè)計(jì)一個(gè)主鍵來實(shí)現(xiàn)(這里的主鍵不包含業(yè)務(wù)邏輯)。

即滿足第一范式前提,當(dāng)存在多個(gè)主鍵的時(shí)候,才會發(fā)生不符合第二范式的情況。比如有兩個(gè)主鍵,不能存在這樣的屬性,它只依賴于其中一個(gè)主鍵,這就是不符合第二范式。通俗理解是任意一個(gè)字段都只依賴表中的同一個(gè)字段。(涉及到表的拆分)

看下面的學(xué)生選課表:

學(xué)號 課程 成績 課程學(xué)分 10001 數(shù)學(xué) 100 6 10001 語文 90 2 10001 英語 85 3 10002 數(shù)學(xué) 90 6 10003 數(shù)學(xué) 99 6 10004 語文 89 2

表中主鍵為 (學(xué)號,課程),我們可以表示為 (學(xué)號,課程) -> (成績,課程學(xué)分), 表示所有非主鍵列 (成績,課程學(xué)分)都依賴于主鍵 (學(xué)號,課程)。 但是,表中還存在另外一個(gè)依賴:(課程)->(課程學(xué)分)。這樣非主鍵列 ‘課程學(xué)分‘ 依賴于部分主鍵列 ’課程‘, 所以上表是不滿足第二范式的。

我們把它拆成如下2張表:

學(xué)生選課表:

學(xué)號 課程 成績 10001 數(shù)學(xué) 100 10001 語文 90 10001 英語 85 10002 數(shù)學(xué) 90 10003 數(shù)學(xué) 99 10004 語文 89

課程信息表:

課程 課程學(xué)分 數(shù)學(xué) 6 語文 3 英語 2

那么上面2個(gè)表,學(xué)生選課表主鍵為(學(xué)號,課程),課程信息表主鍵為(課程),表中所有非主鍵列都完全依賴主鍵。不僅符合第二范式,還符合第三范式。

再看這樣一個(gè)學(xué)生信息表:

學(xué)號 姓名 性別 班級 班主任 10001 張三 男 一班 小王 10002 李四 男 一班 小王 10003 王五 男 二班 小李 10004 張小三 男 二班 小李

上表中,主鍵為:(學(xué)號),所有字段 (姓名,性別,班級,班主任)都依賴與主鍵(學(xué)號),不存在對主鍵的部分依賴。所以是滿足第二范式。

第三范式(3NF)

滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡而言之,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫表中不包含已在其它表中已包含的非主鍵字段。就是說,表的信息,如果能夠被推導(dǎo)出來,就不應(yīng)該單獨(dú)的設(shè)計(jì)一個(gè)字段來存放(能盡量外鍵join就用外鍵join)。很多時(shí)候,我們?yōu)榱藵M足第三范式往往會把一張表分成多張表。

即滿足第二范式前提,如果某一屬性依賴于其他非主鍵屬性,而其他非主鍵屬性又依賴于主鍵,那么這個(gè)屬性就是間接依賴于主鍵,這被稱作傳遞依賴于主屬性。 通俗解釋就是一張表最多只存兩層同類型信息。

Mysql數(shù)據(jù)庫設(shè)計(jì)三范式實(shí)例解析

反三范式

沒有冗余的數(shù)據(jù)庫未必是最好的數(shù)據(jù)庫,有時(shí)為了提高運(yùn)行效率,提高讀性能,就必須降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù)。具體做法是: 在概念數(shù)據(jù)模型設(shè)計(jì)時(shí)遵守第三范式,降低范式標(biāo)準(zhǔn)的工作放到物理數(shù)據(jù)模型設(shè)計(jì)時(shí)考慮。降低范式就是增加字段,減少了查詢時(shí)的關(guān)聯(lián),提高查詢效率,因?yàn)樵跀?shù)據(jù)庫的操作中查詢的比例要遠(yuǎn)遠(yuǎn)大于DML的比例。但是反范式化一定要適度,并且在原本已滿足三范式的基礎(chǔ)上再做調(diào)整的。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 日本人成在线视频免费播放 | 99青青| 午夜黄色福利视频 | 亚洲欧美日韩精品永久在线 | 欧美aaaaa一级毛片在线 | 日韩中文字幕精品一区在线 | 看欧美毛片一级毛片 | 91精品国产综合久久欧美 | 亚洲国产精品激情在线观看 | 大桥未久在线精品视频在线 | 国产精品亚洲第一区二区三区 | 丝袜美腿在线不卡视频播放 | 欧美做爰免费大片在线观看 | 国产欧美精品一区二区三区四区 | 久久99国产乱子伦精品免 | 黄色成人免费观看 | 一级毛片真人免费播放视频 | 欧美成人在线网站 | 久久青草免费线观最新 | 日本免费一区二区三区a区 日本免费一区二区三区看片 | 国产精品久久久久999 | 国产手机国产手机在线 | 久久日本三级韩国三级 | 美女脱了内裤张开腿让男人桶网站 | 久久国产精品久久 | 乱淫网站| 4tube高清性欧美 | 精品国产一区二区三区久久 | 国产一区二区三区不卡在线观看 | 欧美顶级毛片在线播放小说 | 亚洲一区免费在线 | 国产欧美亚洲三区久在线观看 | 国产99视频精品免费视频7 | 久草视频免费播放 | 欧美韩国日本 | 亚洲在线观看免费 | 四色6677最新永久网站 | 欧美自拍另类 | 免费国产a理论片 | 国产精品伦理久久久久 | 男女乱淫真视频免费一级毛片 |