數據庫范式

          1. 第一范式 - 列的原子性,數據庫表中的每一列都是不可再分的基本數據項
            1. 單一字段有多個有意義的值:比如 (people,address)其中address包括street,city,country,以逗號分割。想要查詢住在某一city的people很不容易
            2. 用很多字段來表示同一事實:比如(people,address1,address2,address3),就算我們假設每個people最多有三個地址,當想要查詢住在同一地址的people時也很不容易,因為有可能people1的address1與people2的address2相同,每一次都要比較3*3次組合
          2. 第二范式 - 符合第一范式;且表中的屬性必須完全依賴于全部主鍵,消除非主屬性對主鍵的部分依賴
            1. 比如(組件ID,供應商ID,供應商姓名,價格),組件ID+供應商ID為主鍵,價格完全依賴于全部主鍵,因為不同組件不同供應商具有不同價格,但是對于供應商姓名,則只依賴于供應商ID,會造成對同一供應商ID,名字數據重復,而且如果供應商改名,需要修改全部數據。因此需要單獨一個表(供應商ID,供應商姓名),(組件ID,供應商ID,價格)
          3. 第三范式 - 非主屬性之間不能有依賴關系,必須都直接依賴于主屬性,消除傳遞依賴
            1. 比如(組件ID,制造商姓名,制造商地址),其中組件ID為主鍵,而制造商地址依賴于制造商姓名,需要(組件ID,制造商姓名)和新表(制造商姓名,制造商地址)其中姓名是主鍵
            2. 比如(訂單ID,組件ID,單價,數量,總價),其中總價=單價*數量,總價依賴于單價和數量,需要去掉總價欄
          4. BC范式 - 任何屬性(包括非主屬性和主屬性)不能被非主屬性所決定。第三范式強調非主屬性不能依賴于其他非主屬性,BC范式是第三范式的加強,強調“任何屬性”。因此如果滿足第三范式,并且只有一個主鍵,則一定滿足BC范式

          一般,范式越高,表越多,數據庫操作時需要表關聯,增加了查詢的復雜性,降低了查詢性能。因此并不是范式越高越好,要根據需要進行權衡,第三范式已經消除了大部分的數據冗余,插入異常,更新異常和刪除異常。

          posted on 2011-10-30 22:27 *** 閱讀(251) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 哈尔滨市| 花莲县| SHOW| 沅陵县| 东丽区| 福州市| 文山县| 行唐县| 卢湾区| 闽清县| 武宁县| 新昌县| 淮南市| 抚远县| 河西区| 大理市| 平塘县| 吉首市| 汝南县| 娱乐| 玉龙| 惠州市| 盱眙县| 阜新| 保康县| 台北市| 高台县| 安化县| 马边| 卢氏县| 青河县| 海宁市| 仙桃市| 渭南市| 司法| 房产| 靖江市| 温州市| 临邑县| 平武县| 惠东县|