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

          1. 第一范式 - 列的原子性,數(shù)據(jù)庫表中的每一列都是不可再分的基本數(shù)據(jù)項
            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,名字數(shù)據(jù)重復,而且如果供應商改名,需要修改全部數(shù)據(jù)。因此需要單獨一個表(供應商ID,供應商姓名),(組件ID,供應商ID,價格)
          3. 第三范式 - 非主屬性之間不能有依賴關系,必須都直接依賴于主屬性,消除傳遞依賴
            1. 比如(組件ID,制造商姓名,制造商地址),其中組件ID為主鍵,而制造商地址依賴于制造商姓名,需要(組件ID,制造商姓名)和新表(制造商姓名,制造商地址)其中姓名是主鍵
            2. 比如(訂單ID,組件ID,單價,數(shù)量,總價),其中總價=單價*數(shù)量,總價依賴于單價和數(shù)量,需要去掉總價欄
          4. BC范式 - 任何屬性(包括非主屬性和主屬性)不能被非主屬性所決定。第三范式強調非主屬性不能依賴于其他非主屬性,BC范式是第三范式的加強,強調“任何屬性”。因此如果滿足第三范式,并且只有一個主鍵,則一定滿足BC范式

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

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


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


          網(wǎng)站導航:
           
          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 吴川市| 新闻| 乐平市| 通道| 乌兰察布市| 灵台县| 蓝山县| 方城县| 崇阳县| 大厂| 泊头市| 吉安市| 蓬安县| 浮山县| 新安县| 宜川县| 河津市| 额济纳旗| 湖口县| 洮南市| 土默特右旗| 晋城| 佛坪县| 宾阳县| 徐州市| 张家口市| 吴旗县| 泰来县| 大埔区| 安乡县| 牙克石市| 芒康县| 滁州市| 韶山市| 包头市| 麻栗坡县| 延吉市| 郴州市| 北海市| 成都市| 昭苏县|