最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文弄懂?dāng)?shù)據(jù)庫設(shè)計(jì)的三范式

 更新時(shí)間:2023年07月03日 15:18:26   作者:禿了也弱了。  
面試中經(jīng)常會(huì)問到的數(shù)據(jù)庫三范式指的是什么,本文主要介紹了數(shù)據(jù)庫設(shè)計(jì)的三范式,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

寫在前面

很多數(shù)據(jù)庫設(shè)計(jì)者,都是按照自己的性子和習(xí)慣來設(shè)計(jì)數(shù)據(jù)庫數(shù)據(jù)表,其實(shí)不然。

其實(shí),數(shù)據(jù)庫的設(shè)計(jì)也有要遵循的原則。

范式,就是規(guī)范,就是指設(shè)計(jì)數(shù)據(jù)庫需要(應(yīng)該)遵循的原則。

每個(gè)范式,都是用來規(guī)定某種結(jié)構(gòu)或數(shù)據(jù)要求——后一范式都是在前一范式已經(jīng)滿足的情況用來“加強(qiáng)要求”(這句話很重要)。

這也是面試中經(jīng)常會(huì)問到的“數(shù)據(jù)庫三范式指的是什么?”,很多小伙伴只知道原子性、唯一性、獨(dú)立性,但是知其然而不知其所以然。

在這里,讓你徹底弄明白,什么叫數(shù)據(jù)庫的三范式!

第一范式(1NF):原子性(存儲(chǔ)的數(shù)據(jù)應(yīng)該具有“不可再分性”)

不良做法如下,“學(xué)生”一列有多項(xiàng)信息都合在一起了,不再具有原子性,所以應(yīng)該分開:

實(shí)際中,原子性還是比較容易理解的。

修改后:

第二范式(2NF):唯一性 (消除非主鍵部分依賴聯(lián)合主鍵中的部分字段)(一定要在第一范式已經(jīng)滿足的情況下)

需要實(shí)現(xiàn)每一行數(shù)據(jù)具有唯一可區(qū)分的特性,并不能有部分依賴關(guān)系。

通常,給一個(gè)表加主鍵(也是推薦做法),就可以做到“唯一可區(qū)分”。

但主鍵有這樣情況:

設(shè)定一個(gè)字段為主鍵:此時(shí),表示該一個(gè)字段的值就可以明確確定一行數(shù)據(jù)。

設(shè)定多個(gè)字段為主鍵:表示只有這多個(gè)字段的值都確定后才能確定一行數(shù)據(jù)。此時(shí)也稱為“聯(lián)合主鍵”。

什么叫依賴:

如果確定一個(gè)表中的某個(gè)數(shù)據(jù)(A),則就可以確定該表中的其他另一個(gè)數(shù)據(jù)(B),則我們說:B依賴于A。

實(shí)際上,一個(gè)表只要有主鍵,則其他非主鍵一定是依賴于主鍵的。

什么叫“部分依賴”:

如果確定一個(gè)表中的某個(gè)數(shù)據(jù)組合(A,B),則就可以確定該表中的其他另一個(gè)數(shù)據(jù)(C),則我們說:C依賴于(A,B)(此時(shí)A,B通常就是做出主鍵)。

但:如果某個(gè)數(shù)據(jù)D,它只依賴于數(shù)據(jù)A,或者說,A一確定,則D也可以確定,此時(shí)我們就稱為“數(shù)據(jù)D部分依賴于數(shù)據(jù)A——可見部分依賴是指某個(gè)非主鍵字段,依賴于聯(lián)合主鍵字段的其中部分字段。

好了,說了這么多,估計(jì)大家也都糊涂了,接下來上例子吧!

不良做法:

這個(gè)表雖然滿足了第一范式,但是也很明顯的感受到它的冗余性,其中學(xué)生信息和課程信息是冗余的。

以上表如果是需要確定主鍵,就得是學(xué)生+課程作為聯(lián)合主鍵。

第二范式要求非主鍵字段的值必須完全依賴主鍵(不能部分依賴),所以以上表中,學(xué)分是依賴課程的,成績(jī)是依賴學(xué)生的。

修改后,分為學(xué)生信息表、課程信息表、學(xué)生學(xué)分表:

學(xué)生信息表:只代表學(xué)生的個(gè)人信息,主鍵使用id以防止重名。

課程信息表:這里的主鍵可以不用id,使用課程名稱也可以,不會(huì)有重名。

學(xué)生學(xué)分表:學(xué)生和課程,確定一個(gè)學(xué)分,這里學(xué)生id和課程id作為聯(lián)合主鍵來對(duì)應(yīng)一條成績(jī)。

第三范式(3NF):獨(dú)立性,消除傳遞依賴(非主鍵值不依賴于另一個(gè)非主鍵值)

在一個(gè)具有主鍵的表中,假設(shè)主鍵為A,其必然其他非主鍵都依賴于該主鍵,比如:B依賴于A,C依賴于A,D依賴于A。。。。。。

但同時(shí):如果該表中的某個(gè)字段B的值一確定,就能夠確定另一個(gè)字段的值C,則我們稱為C依賴于B。

那么,就出現(xiàn)了:

C依賴B,B依賴A——這就是傳遞依賴。

則消除該傳遞依賴的的通常做法,就是將C依賴于B的數(shù)據(jù),分離到另一個(gè)表中。

好了,還是蒙蒙的吧,上例子:

不良例子:

以上表既滿足第一范式也滿足第二范式,非主鍵字段也完全依賴于主鍵字段。

但是,院系電話字段,其實(shí)是依賴院系字段的。也就是說,院系電話字段是非主鍵值,而依賴了另一個(gè)非主鍵值-院系。所以就不符合第三范式。

改良:

一個(gè)學(xué)生表,一個(gè)院系表,一目了然。

如果修改了院系信息,對(duì)應(yīng)著也不需要修改學(xué)生信息表。但是如果還是使用以上不良例子的話,修改其中一個(gè)院系信息,得對(duì)應(yīng)修改所有所屬該院系的學(xué)生,

總結(jié)

通常,在實(shí)踐中,滿足3范式只要做到“一個(gè)表只存一種數(shù)據(jù)”基本就可以實(shí)現(xiàn)。

另外,范式不是絕對(duì)要求,有時(shí)候我們?yōu)榱藬?shù)據(jù)的使用方便,還會(huì)(需要)故意違反范式。

具體設(shè)計(jì)需求,還需要在工作中多多練習(xí),尋找到最適合,最方便的數(shù)據(jù)庫設(shè)計(jì)方案出來~

到此這篇關(guān)于一文弄懂?dāng)?shù)據(jù)庫設(shè)計(jì)的三范式的文章就介紹到這了,更多相關(guān)數(shù)據(jù)庫三范式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 寫出高性能SQL語句的35條方法分析

    寫出高性能SQL語句的35條方法分析

    高性能的SQL語句能提高頁面的執(zhí)行效率,讓你的服務(wù)器運(yùn)行的更為流暢,所以大家在以后的使用過程中,盡量的考慮到效率。
    2009-10-10
  • Navicat?for?MySQL導(dǎo)入csv文件時(shí)出現(xiàn)中文亂碼的問題解決

    Navicat?for?MySQL導(dǎo)入csv文件時(shí)出現(xiàn)中文亂碼的問題解決

    在做數(shù)據(jù)對(duì)接導(dǎo)入的時(shí)候使用的數(shù)據(jù)是CSV格式的文件,導(dǎo)入發(fā)現(xiàn)了亂碼,下面這篇文章主要給大家介紹了關(guān)于Navicat?for?MySQL導(dǎo)入csv文件時(shí)出現(xiàn)中文亂碼的問題解決辦法,需要的朋友可以參考下
    2023-12-12
  • Navicat導(dǎo)入海量Excel數(shù)據(jù)到數(shù)據(jù)庫的流程步驟

    Navicat導(dǎo)入海量Excel數(shù)據(jù)到數(shù)據(jù)庫的流程步驟

    Navicat 是一款功能強(qiáng)大的數(shù)據(jù)庫管理工具,支持多種數(shù)據(jù)庫系統(tǒng),它提供便捷的數(shù)據(jù)導(dǎo)入功能,可以將 Excel 數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中,本文給大家介紹了Navicat導(dǎo)入海量Excel數(shù)據(jù)到數(shù)據(jù)庫的流程步驟,文章通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • SQL SERVER 與ACCESS、EXCEL的數(shù)據(jù)轉(zhuǎn)換

    SQL SERVER 與ACCESS、EXCEL的數(shù)據(jù)轉(zhuǎn)換

    SQL SERVER 與ACCESS、EXCEL的數(shù)據(jù)轉(zhuǎn)換...
    2007-02-02
  • 在數(shù)據(jù)庫中如何高效的實(shí)現(xiàn)訂座功能

    在數(shù)據(jù)庫中如何高效的實(shí)現(xiàn)訂座功能

    這篇文章主要給大家介紹了關(guān)于在數(shù)據(jù)庫中如何高效的實(shí)現(xiàn)訂座功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Navicat11全系列激活教程圖文詳解(Navicat注冊(cè)機(jī))

    Navicat11全系列激活教程圖文詳解(Navicat注冊(cè)機(jī))

    這篇文章主要介紹了Navicat11全系列激活教程圖文詳解(注冊(cè)機(jī)),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • clickhouse系統(tǒng)表日志清理方式詳解

    clickhouse系統(tǒng)表日志清理方式詳解

    這篇文章主要為大家介紹了clickhouse系統(tǒng)表日志清理方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • SQL注入教程之報(bào)錯(cuò)注入

    SQL注入教程之報(bào)錯(cuò)注入

    頁面沒有顯示位,但有數(shù)據(jù)庫的報(bào)錯(cuò)信息時(shí),可使用報(bào)錯(cuò)注入,下面這篇文章主要給大家介紹了關(guān)于SQL報(bào)錯(cuò)注入的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • 如何自己動(dòng)手寫SQL執(zhí)行引擎

    如何自己動(dòng)手寫SQL執(zhí)行引擎

    本文主要介紹了如何自己動(dòng)手寫SQL執(zhí)行引擎,感興趣的同學(xué),可以參考下。
    2021-06-06
  • 解決Navicat數(shù)據(jù)庫連接成功但密碼忘記的問題

    解決Navicat數(shù)據(jù)庫連接成功但密碼忘記的問題

    這篇文章給大家介紹了Navicat數(shù)據(jù)庫連接成功,密碼忘記如何解決,文中給大家介紹了兩種解決方法,有詳細(xì)的圖文講解,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

西城区| 五常市| 黔江区| 谢通门县| 清河县| 栾城县| 南开区| 石屏县| 镇平县| 搜索| 屏边| 永仁县| 溧水县| 华容县| 丹凤县| 青岛市| 梁河县| 丰原市| 呼玛县| 宁乡县| 越西县| 白水县| 林口县| 甘肃省| 横峰县| 色达县| 荥经县| 白玉县| 古蔺县| 宜章县| 广州市| 辉县市| 滨州市| 桐庐县| 武义县| 青冈县| 五峰| 大兴区| 日喀则市| 定边县| 临高县|