<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # mysql三范式 范式|詳情 ---|--- [第一范式](#第一范式)|要求數據庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值。 [第二范式](#第二范式)|實體中沒一行的所有非主屬性都必須完全依賴于主鍵;即:非主屬性必須完全依賴于主鍵。 [第三范式](#第三范式)|實體中的屬性不能是其他實體中的非主屬性。因為這樣會出現冗余。即:屬性不依賴于其他非主屬性。 ## 第一范式 ```text 數據庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值。 ``` - 不符合第一范式的實例: ![](https://raw.githubusercontent.com/shiwenyuan/pic/master/20200413125928.png) - 存在問題: - 最后一條記錄和第一條重復(不唯一,沒有主鍵) - 聯系方式字段可以再分,不是原子性的 ![](https://raw.githubusercontent.com/shiwenyuan/pic/master/20200413130053.png) ```text 關于第一范式,每一行必須唯一,也就是每個表必須有主鍵,這是數據庫設計的最基本要求,主要采用數值型或定長字符串表示,關于列不可再分,應該根據具體的情況來決定。如聯系方式,為了開發上的便利可能就采用一個字段。 ``` ## 第二范式 ```text 第二范式是建立在第一范式基礎上的,另外要求所有非主鍵字段完全依賴主鍵,不能產生部分依賴 ``` 實例: ![](https://raw.githubusercontent.com/shiwenyuan/pic/master/20200413130147.png) 確定主鍵: ![](https://raw.githubusercontent.com/shiwenyuan/pic/master/20200413130213.png) ```text 以上雖然確定了主鍵,但此表會出現大量的冗余,主要涉及到的冗余字段為“學生姓名”和“教師姓名”,出現冗余的原因在于,學生姓名部分依賴了主鍵的一個字段學生編號,而沒有依賴教師編號,而教師姓名部分依賴了主鍵的一個字段教師編號,這就是第二范式部分依賴。 ``` 解決: ![](https://raw.githubusercontent.com/shiwenyuan/pic/master/20200413130829.png) ## 第三范式 建立在第二范式基礎上的,非主鍵字段不能傳遞依賴于主鍵字段(不要產生傳遞依賴) ![](https://raw.githubusercontent.com/shiwenyuan/pic/master/20200413130659.png) 上表中,班級名稱字段存在冗余,因為班級名稱字段沒有直接依賴于主鍵,班級名稱字段依賴于班級編號,班級編號依賴于學生編號,這就是傳遞依賴,解決的辦法就是將冗余字段單獨拿出來建立表: ![](https://raw.githubusercontent.com/shiwenyuan/pic/master/20200413130740.png) ### 總結 實際開發中,數據庫設計盡量遵循三范式,但是還是根據實際情況進行取舍,有時可能會拿冗余換速度,最終目的是要滿足客戶需求
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看