<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2322字,需瀏覽 5分鐘

           ·

          2024-07-23 16:41

          目錄

          • 1 數(shù)據(jù)庫范式

            • 1.1 為什么要范式

            • 1.2 如何是合理數(shù)據(jù)庫

            • 1.3 如何才能保證數(shù)據(jù)庫設(shè)計(jì)水平

            • 1.4 什么是范式(NF= NormalForm)

            • 1.5 范式的分類

          • 2 各個(gè)范式詳解

            • 2.3.1 第三范式定義

            • 2.2.1 第二范式定義

            • 2.2.2 第二范式示例

            • 2.1.1 第一范式定義

            • 2.1.2 第一范式示例

            • 2.1 第一范式

            • 2.2 第二范式

            • 2.3 第三范式

            • 2.4 范式優(yōu)缺點(diǎn)

            • 2.5 數(shù)據(jù)庫表之間關(guān)系

            • 2.6 三大范式總結(jié)


          1 數(shù)據(jù)庫范式

          1.1 為什么要范式

          為什么需要數(shù)據(jù)庫范式呢,因?yàn)楸仨毐WC數(shù)據(jù)庫設(shè)計(jì)的合理性

          • 數(shù)據(jù)庫設(shè)計(jì)關(guān)系整個(gè)系統(tǒng)的架構(gòu),關(guān)系到后續(xù)的開發(fā)效率和運(yùn)行效率

          • 數(shù)據(jù)庫的設(shè)計(jì)主要包含了設(shè)計(jì)表結(jié)構(gòu)和表之間的聯(lián)系

          1.2 如何是合理數(shù)據(jù)庫

          如何是合理數(shù)據(jù)庫

          • 結(jié)構(gòu)合理

          • 冗余較小

          • 盡量避免插入刪除修改異常

          1.3 如何才能保證數(shù)據(jù)庫設(shè)計(jì)水平

          如何才能保證數(shù)據(jù)庫設(shè)計(jì)水平

          • 遵循一定的規(guī)則

          • 在關(guān)系型數(shù)據(jù)庫中這種規(guī)則就稱為范式

          1.4 什么是范式(NF= NormalForm)

          什么是范式(NF= NormalForm

          • 范式是符合某一種設(shè)計(jì)要求的總結(jié)

          • 要想設(shè)計(jì)一個(gè)結(jié)構(gòu)合理的關(guān)系型數(shù)據(jù)庫,必須滿足一定的范式

          1.5 范式的分類

          第一范式
          第二范式
          第三范式
          Boyce Codd范式=NCNF,由BoyceCodd提出的,比3NF又進(jìn)了一步,通常認(rèn)為是修正的第三范式.
          第四范式
          第五范式

          各個(gè)范式是依次嵌套包含的,范式越高,設(shè)計(jì)質(zhì)量越高,在現(xiàn)實(shí)設(shè)計(jì)中也越難實(shí)現(xiàn)
          一般數(shù)據(jù)庫設(shè)計(jì),只要達(dá)到第三范式,即可避免異常的出現(xiàn)

          2 各個(gè)范式詳解

          2.1 第一范式

          2.1.1 第一范式定義

          要求:最基本的范式
          數(shù)據(jù)庫表每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值
          簡單說就是要確保每列保持原子性
          第一范式的合理遵循需要根據(jù)系統(tǒng)的實(shí)際需求來定

          2.1.2 第一范式示例

          示例:用戶表(用戶名,家庭地址)就不合理
          用戶表(用戶名,省,城市,詳細(xì)地址)很合理

          系(系名稱,系主任,系高級職稱人數(shù))不合理
          系(系名稱,系主任,系教授人數(shù),系副教授人數(shù))合理

          2.2 第二范式

          2.2.1 第二范式定義

          要求:第二范式需要確保數(shù)據(jù)庫表中的每一列都和主鍵相關(guān),而不能只與主鍵的某一部分相關(guān)(主要針對聯(lián)合主鍵而言)
          即在一個(gè)數(shù)據(jù)庫表中只能保存一種數(shù)據(jù),不可以把多種數(shù)據(jù)保存在同一張數(shù)據(jù)庫表中

          2.2.2 第二范式示例

          示例:
          學(xué)號和課程編號作為聯(lián)合主鍵
          課程名稱只依賴于課程編號,而和學(xué)號沒有關(guān)系

          分析以上的設(shè)計(jì)發(fā)現(xiàn)數(shù)據(jù)冗余
          如何解決呢?

          • 提取出學(xué)生表

          • 提取成課程表

          • 提取選課表,存放選課記錄

          1,學(xué)生表

          2,課程表

          3,選課表

          2.3 第三范式

          2.3.1 第三范式定義

          要求:

          • 確保數(shù)據(jù)表中的每一列數(shù)據(jù)都和主鍵直接相關(guān),而不能間接相關(guān)

          • 屬性不依賴于其他非主屬性

          示例1:學(xué)生班級表

          分析以上的表,發(fā)現(xiàn)有問題存在 班級名稱和班級信息出現(xiàn)了數(shù)據(jù)冗余
          如何解決?
          1,學(xué)生表

          2,班級表

          2.4 范式優(yōu)缺點(diǎn)

          范式優(yōu)點(diǎn):

          • 結(jié)構(gòu)合理

          • 冗余較小

          • 盡量避免插入刪除修改異常

          缺點(diǎn):

          • 性能降低

          • 多表查詢比單表查詢速度慢

          數(shù)據(jù)庫的設(shè)計(jì)應(yīng)該根據(jù)當(dāng)前情況和需求做出靈活的處理。
          在實(shí)際設(shè)計(jì)中,要整體遵循范式理論。
          如果在某些特定的情況下還死死遵循范式也是不可取的,因?yàn)榭赡芙档蛿?shù)據(jù)庫的效率,此時(shí)可以適當(dāng)增加冗余而提高性能。

          示例:

          比如經(jīng)常購物車條目的中除了條目編號,商品編號,商品數(shù)量外,可以增加經(jīng)常使用的商品名稱,商品價(jià)格等
          商品表

          訂單明細(xì)表

          2.5 數(shù)據(jù)庫表之間關(guān)系

          數(shù)據(jù)庫表之間的三種關(guān)系:

          1. 一對一
            關(guān)聯(lián)映射:一對一
            一對一關(guān)系就如球隊(duì)與球隊(duì)所在地址之間的關(guān)系,一支球隊(duì)僅有一個(gè)地址,而一個(gè)地址區(qū)也僅有一支球隊(duì)。
            數(shù)據(jù)表間一對一關(guān)系的表現(xiàn)有兩種,一種是外鍵關(guān)聯(lián),一種是主鍵關(guān)聯(lián)。圖示如下:
            一對一外鍵關(guān)聯(lián):

          2. 一對多
            關(guān)聯(lián)映射:一對多/多對一
            存在最普遍的映射關(guān)系,簡單來講就如球員與球隊(duì)的關(guān)系;
            一對多:從球隊(duì)角度來說一個(gè)球隊(duì)擁有多個(gè)球員 即為一對多
            多對一:從球員角度來說多個(gè)球員屬于一個(gè)球隊(duì) 即為多對一
            數(shù)據(jù)表間一對多關(guān)系如下圖:

          3. 多對多
            關(guān)聯(lián)映射:多對多
            多對多關(guān)系也很常見,例如學(xué)生與選修課之間的關(guān)系,一個(gè)學(xué)生可以選擇多門選修課,而每個(gè)選修課又可以被多名學(xué)生選擇。
            數(shù)據(jù)庫中的多對多關(guān)聯(lián)關(guān)系一般需采用中間表的方式處理,將多對多轉(zhuǎn)化為兩個(gè)一對多。
            數(shù)據(jù)表間多對多關(guān)系如下圖:

          2.6 三大范式總結(jié)

          范式是指導(dǎo)數(shù)據(jù)設(shè)計(jì)的規(guī)范化理論,可以保證數(shù)據(jù)庫設(shè)計(jì)質(zhì)量
          第一范式:字段不能再分
          第二范式:不存在局部依賴
          第三范式:不含傳遞依賴(間接依賴)

          使用范式可以減少冗余,但是會降低性能
          特定表的的設(shè)計(jì)可以違反第三范式,增加冗余提高性能


          鏈接:https://www.cnblogs.com/jingzh/p/15270698.html

          (版權(quán)歸原作者所有,侵刪)


          瀏覽 70
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文大香蕉视频在线 | 日韩免费看毛片 | 婷婷综合久久五月 | 成人色天堂 | 日韩无码xxxx |