<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## **避免數據庫操作異常** **插入異常**: >[danger]如果某實體隨著另一個實體的存在而存在,即缺少某個實體時無法表示另一個實體,這個表就存在插入異常: ??? 如:當倉庫中的商品和管理員存在一張表的時候;當不存在商品的時候無法表示管理員 **更新異常**: >[danger]如果更改表所對應的某個實體實例的單獨屬性時需要將多行更新那么就說這個表存在更新異常 如:當換了管理員時則表中所有行的管理員都要修改 **刪除異常**: >[danger]如果刪除表的某一行來反映某實體實例失效導致另一個不同實例信息丟失,那么這個表中就存在刪除異常 只要存在插入異常。就會存在更新和刪除異常 ## **范式:** * **范式種類:** 第一、第二、第三、BC、第四、第五這些范式?? * **目的:** 就是為了避免數據的冗余和插入/刪除/更新的異常 **函數依賴**: >[danger]若在一張表中,在屬性(或屬性組)X的值確定的情況下,必定能確定屬性Y的值,那么就可以說Y屬性依賴于X,寫作 X → Y 如:學生姓名函數依賴于學號,寫作 學號 → 姓名?? 但是存在相同姓名,所以學號函數不依賴姓名 **碼**:一個表中,可以唯一決定一個元組的屬性“集合”。而主鍵則是可以唯一決定元組的‘某個屬性’ 例如:在成績表中(學號,課程號)合起來叫一個碼,而分開看學號是主鍵,課程號也是主鍵 **非主屬性**:不屬于碼的屬性 **主屬性**:屬于碼的屬性 **候選鍵**:指每個都不一樣的、非空的那幾個屬性,有著潛在的主鍵意義。 比如一個表中的課程號學號,系別號等等。 &nbsp;&nbsp; #### **范式詳解** >[danger]**1NF**(第一范式)是所有關系型數據庫的最基本要求 >第一,二,三范式解決的是非主屬性的關系。 **1NF**:列不可分就滿足1NF了 就是原子性,字段不可再分割。 下面這個就不符合1NF ![](https://img.kancloud.cn/59/33/59338a43687092142c0b68342ffda4a5_297x63.png) &nbsp;&nbsp; **2NF**:不存在部分依賴,(如果依賴于主鍵,則需要依賴于所有主鍵比如 (A,B)→C,不能存在依賴部分主鍵的情況) 另一種解釋:每個表中的非主屬性完全依賴于碼 |sid|buyer-id|buyer-name|seller-id|seller-name|goods-id|goods-name|amount| | --- | --- | --- | --- | --- | --- | --- | --- | |1|89|lisi|13|wangwu|45|華為|mate-82| 可以看到里面有四個主鍵:sid, buyer-id, seller-id, goods-id。對于seller-name屬性,它僅依賴于seller-id,跟buyer-id之類的沒有任何關系,所以它對于主鍵的依賴是“部分依賴”,并不符合2NF。簡單點說,就是**不要把不相關的東西放到一個表里**面 ??? 意義:不相關的東西不要放在一起,用多個小表連接來代替大表,減少修改時候的負擔 &nbsp;&nbsp; **3NF**:不存在傳遞依賴,比如A→B→C。(在2NF基礎上消除了傳遞依賴)一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息 消除非主屬性之間的依賴關系,只保留非主屬性與碼的依賴關系 比如對于一張數據庫,里面的元素有son, person, father, grand-father, 依賴關系是son -> person, person -> father, father -> grand-father,明顯有一個鏈表式的傳遞,3NF中禁止此類依賴的出現 ??? 意義:避免查詢路徑過長而導致詢問時間過長或者更新異常。以上面的家族關系為例,如果我想查詢某位同學曾曾曾曾曾……曾祖父是誰,按照非3NF的依賴,則需要進行多次查詢,而對于滿足3NF的依賴,只需要進行一次查詢。效率大大提高 &nbsp;&nbsp; **BC范式**: 解決部分主鍵依賴于非主鍵部分。每個表中只有一個候選鍵 BC 范式解決的是主屬性的關系; ``` 第二范式:就是完全依賴,沒有部分依賴;【非主屬性不能依賴于主鍵的一部分,要完全依賴于主鍵】 第三范式:沒有傳遞依賴。【非主屬性之間的依賴】 BC范式: 解決部分主鍵依賴于非主鍵部分。每個表中只有一個候選鍵 ``` 范式這兩章沒聽太懂,可以看一下這個https://zhidao.baidu.com/question/98317025.html?fr=ala0
                  <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>

                              哎呀哎呀视频在线观看