數(shù)據(jù)庫設(shè)計(jì)三大范式

數(shù)據(jù)庫設(shè)計(jì)三大范式
為了建立冗余較小上忍、結(jié)構(gòu)合理的數(shù)據(jù)庫,設(shè)計(jì)數(shù)據(jù)庫時(shí)必須遵循一定的規(guī)則纳本。在關(guān)系型數(shù)據(jù)庫中這種規(guī)則就稱為范式窍蓝。范式是符合某一種設(shè)計(jì)要求的總結(jié)。要想設(shè)計(jì)一個(gè)結(jié)構(gòu)合理的關(guān)系型數(shù)據(jù)庫繁成,必須滿足一定的范式吓笙。

在實(shí)際開發(fā)中最為常見的設(shè)計(jì)范式有三個(gè):
1****.第一范式(確保每列保持原子性)
第一范式是最基本的范式。如果數(shù)據(jù)庫表中的所有字段值都是不可分解的原子值巾腕,就說明該數(shù)據(jù)庫表滿足了第一范式面睛。
第一范式的合理遵循需要根據(jù)系統(tǒng)的實(shí)際需求來定絮蒿。比如某些數(shù)據(jù)庫系統(tǒng)中需要用到“地址”這個(gè)屬性,本來直接將“地址”屬性設(shè)計(jì)成一個(gè)數(shù)據(jù)庫表的字段就行叁鉴。但是如果系統(tǒng)經(jīng)常會(huì)訪問“地址”屬性中的“城市”部分土涝,那么就非要將“地址”這個(gè)屬性重新拆分為省份、城市幌墓、詳細(xì)地址等多個(gè)部分進(jìn)行存儲(chǔ)但壮,這樣在對(duì)地址中某一部分操作的時(shí)候?qū)⒎浅7奖恪_@樣設(shè)計(jì)才算滿足了數(shù)據(jù)庫的第一范式常侣,如下表所示蜡饵。


上表所示的用戶信息遵循了第一范式的要求,這樣在對(duì)用戶使用城市進(jìn)行分類的時(shí)候就非常方便胳施,也提高了數(shù)據(jù)庫的性能溯祸。

2****.第二范式(確保表中的每列都和主鍵相關(guān))
第二范式在第一范式的基礎(chǔ)之上更進(jìn)一層。第二范式需要確保數(shù)據(jù)庫表中的每一列都和主鍵相關(guān)巾乳,而不能只與主鍵的某一部分相關(guān)(主要針對(duì)聯(lián)合主鍵而言)您没。也就是說在一個(gè)數(shù)據(jù)庫表中,一個(gè)表中只能保存一種數(shù)據(jù)胆绊,不可以把多種數(shù)據(jù)保存在同一張數(shù)據(jù)庫表中氨鹏。
比如要設(shè)計(jì)一個(gè)訂單信息表,因?yàn)橛唵沃锌赡軙?huì)有多種商品压状,所以要將訂單編號(hào)和商品編號(hào)作為數(shù)據(jù)庫表的聯(lián)合主鍵仆抵,如下表所示。
** ****訂單信息表**
[圖片上傳中种冬。镣丑。。(2)]
這樣就產(chǎn)生一個(gè)問題:這個(gè)表中是以訂單編號(hào)和商品編號(hào)作為聯(lián)合主鍵娱两。這樣在該表中商品名稱莺匠、單位、商品價(jià)格等信息不與該表的主鍵相關(guān)十兢,而僅僅是與商品編號(hào)相關(guān)趣竣。所以在這里違反了第二范式的設(shè)計(jì)原則。
而如果把這個(gè)訂單信息表進(jìn)行拆分旱物,把商品信息分離到另一個(gè)表中遥缕,把訂單項(xiàng)目表也分離到另一個(gè)表中,就非常完美了宵呛。如下所示单匣。
[圖片上傳中。。户秤。(3)]
這樣設(shè)計(jì)码秉,在很大程度上減小了數(shù)據(jù)庫的冗余。如果要獲取訂單的商品信息虎忌,使用商品編號(hào)到商品信息表中查詢即可泡徙。

3****.第三范式(確保每列都和主鍵列直接相關(guān),而不是間接相關(guān))
第三范式需要確保數(shù)據(jù)表中的每一列數(shù)據(jù)都和主鍵直接相關(guān),而不能間接相關(guān)膜蠢。
比如在設(shè)計(jì)一個(gè)訂單數(shù)據(jù)表的時(shí)候堪藐,可以將客戶編號(hào)作為一個(gè)外鍵和訂單表建立相應(yīng)的關(guān)系。而不可以在訂單表中添加關(guān)于客戶其它信息(比如姓名挑围、所屬公司等)的字段礁竞。如下面這兩個(gè)表所示的設(shè)計(jì)就是一個(gè)滿足第三范式的數(shù)據(jù)庫表。
[圖片上傳中杉辙。模捂。。(4)]
這樣在查詢訂單信息的時(shí)候蜘矢,就可以使用客戶編號(hào)來引用客戶信息表中的記錄狂男,也不必在訂單信息表中多次輸入客戶信息的內(nèi)容,減小了數(shù)據(jù)冗余品腹。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末岖食,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舞吭,更是在濱河造成了極大的恐慌泡垃,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羡鸥,死亡現(xiàn)場離奇詭異蔑穴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)惧浴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門存和,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衷旅,你說我怎么就攤上這事哑姚。” “怎么了芜茵?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長倡蝙。 經(jīng)常有香客問我九串,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任猪钮,我火速辦了婚禮品山,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烤低。我一直安慰自己肘交,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布扑馁。 她就那樣靜靜地躺著涯呻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腻要。 梳的紋絲不亂的頭發(fā)上复罐,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音雄家,去河邊找鬼效诅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛趟济,可吹牛的內(nèi)容都是我干的乱投。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼顷编,長吁一口氣:“原來是場噩夢啊……” “哼戚炫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起勾效,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤嘹悼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后层宫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杨伙,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年萌腿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了限匣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡毁菱,死狀恐怖米死,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贮庞,我是刑警寧澤峦筒,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站窗慎,受9級(jí)特大地震影響物喷,放射性物質(zhì)發(fā)生泄漏卤材。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一峦失、第九天 我趴在偏房一處隱蔽的房頂上張望扇丛。 院中可真熱鬧,春花似錦尉辑、人聲如沸帆精。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卓练。三九已至,卻和暖如春堤器,著一層夾襖步出監(jiān)牢的瞬間昆庇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工闸溃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留整吆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓辉川,卻偏偏與公主長得像表蝙,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乓旗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1.第一范式(確保每列保持原子性) 2.第二范式(確保表中的每列都和主鍵相關(guān)) 3.第三范式(確保每列都和主鍵列直...
    高山之水閱讀 3,653評(píng)論 0 0
  • 為了建立冗余較小府蛇、結(jié)構(gòu)合理的數(shù)據(jù)庫,設(shè)計(jì)數(shù)據(jù)庫時(shí)必須遵循一定的規(guī)則屿愚。在關(guān)系型數(shù)據(jù)庫中這種規(guī)則就稱為范式汇跨。范式是符合...
    業(yè)余程序員閱讀 676評(píng)論 0 3
  • 數(shù)據(jù)庫設(shè)計(jì)有三大范式 第一范式1NF(確保每列保持原子性) 第一范式是最基本的范式。如果數(shù)據(jù)庫表中的所有字段值都是...
    yatttto閱讀 1,031評(píng)論 0 0
  • 要不要打個(gè)賭:每個(gè)想減肥的胖子都節(jié)過食。哪個(gè)胖子敢說他沒有娱据?如果真沒有蚪黑,第一他沒有想過減肥;第二想減肥但還沒有開始...
    丹子Dan閱讀 1,445評(píng)論 3 11
  • 一連幾天中剩,陳平都沒收到何笑笑的信息忌穿。按她之前所說,她現(xiàn)在應(yīng)該就在霧娘山了结啼。霧娘山是什么樣子掠剑,有沒有人家,有沒有野獸...
    莫說日子閱讀 472評(píng)論 1 2