日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库冗余

發布時間:2023/12/18 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库冗余 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據冗余
1.關系數據庫的數據冗余形成的原因:表的重復、屬性的重復、元組的重復、屬性值的重復。有的數據冗余用于數據間建立聯系、數據安全或為了數據使用的便利,是必需的數據冗余,而其余的數據冗余為非必需的數據冗余應盡量予以消除。按屬性值域集合基的特點將其分為有限類和無限類。無限類屬性值偶爾重復不是數據冗余,有限類屬性值的重復由一對多或多對多的關系所致,可相機處理之。

關系數據庫中的數據冗余主要是指關系數據庫中同一信息數據的重復存貯。
  數據冗余浪費了寶貴的資源,應盡量減少。但關系數據庫中為實現一些功能有些數據冗余是必需的。必需的數據冗余主要用于以下用途:
(1)數據間建立聯系,如兩表間通過共同屬性建立聯系;

(2)數據恢復,如建立備份文件以備正式文件被破壞時恢復;
  (3)數據核查,如設立數據校驗位可以檢查數據在存貯、傳輸等過程中的改變;
  (4)數據使用的便利,如為了查看數據的直觀,使用數據的方便、高效。
  (5)減少數據通訊開銷,如分布式數據庫在不同場地重復。

  • 數據冗余的成因
    關系數據庫由表及附屬文件組成,其表由屬性定義的結構和元組(記錄)組成,其屬性值域有多種類型,故關系數據庫的數據冗余形成的原因有表的重復、屬性的重復、元組的重復、屬性值的重復4類。
    2.1 表的重復
      為了數據安全的需要制作備份表,當主表被破壞時可用此恢復數據。分布式數據庫為減少數據通訊開銷也常重復放表,這種數據冗余在這里是必需數據冗余,不能刪除。若是因其他原因產生的非必要的重復表則應予以刪除。
    2.2 屬性重復
      有不同表的屬性重復和同一表內屬性重復2種情況:
      (1) 不同表中屬性重復常用來建立表之間聯系,這只需要一個公共屬性,這是必需數據冗余,不能刪除;各表間的多于一個的屬性應當刪除。如有以下3個表:
  • T1(A,B,C);T2(A,B,D);T3(A,C,D,E)。

    其中屬性A為三表所共有;屬性B為T1,T2 兩張表所共有,屬性C為T1,T3 兩張表所共有;屬性D為T2,T3 二表所共有。如取A為公共屬性則,T1,T2 兩張表中只能保留一個B屬性;T1,T3 兩張表中只能保留一個C屬性;T2,T3 兩張表中只能保留一個D屬性。
      (2) 同一表內有相同屬性內容的多個屬性,若非數據安全檢查的需要,應刪除之。
    2.3 元組的重復
      表內不同記錄內容有時會完全相同,若非必要,應予以刪除。
    2.4 屬性值的重復
      按屬性值域集合基的特點可以將其分為有限類和無限類。
      (1) 無限類屬性值的重復。無限類屬性值是指其屬性值域集合的基為無限大或者數據庫記錄數為同一數量級的屬性值,如實數、整數、日期、各種編號。
      無限類屬性值偶爾也可能重復,但這只是巧合,而并非數據冗余。
      (2) 有限類屬性值的重復。有限類屬性值是指其屬性值域集合的基小于數據庫記錄數至少一個數量級的屬性值,如產品名,部門名,職稱名,課程名。
      有限類屬性值的重復實際上是由一對多或多對多的關系引起的,有時可作為必需冗余數據不予以處理,這時不需程序就有較好的查看效果和工作效率。但當重復量很大時,也應當設法對所引起的數據冗余進行壓縮,這通常要建立新表和相應的程序。

    2.5 不同成因的數據冗余用不同層次上的操作來消除。

    (1)消除表的重復所引起的數據冗余為磁盤文件級的操作。(2)屬性的重復所引起的數據冗余的消除為對數據庫結構修改的操作。(3)元組的重復所引起的數據冗余的消除由記錄級的操作完成。

    3. 數據冗余的缺點:
    a) 存儲空間的浪費。

    b) 數據交互和數據庫訪問執行效率降低。

    代碼的冗余 可以用存儲過程來解決
    刪除冗余數據:用一個PL/SQL 方案(一個自定義的存儲過程)或者一個SQL語句的解決方案(使用一個分析的函數RANK()和一個嵌套的子查詢)來消除冗余數據然后控制應該保留的記錄,詳細見參考資料2
    減少冗余數據:使用范式設計。
    常見類型數據庫設計技巧、模型,詳見參考資料3

    附:

  • 題外:數據庫的最初雛形據說源自美國一個奶牛場的記賬薄(紙質的,由此可見,數據庫并不一定是存儲在電腦里的數據^_^),里面記錄的是該奶牛場的收支賬目,程序員在將其整理、錄入到電腦中時從中受到啟發。當按照規定好的數據結構所采集到的數據量大到一定程度后,出于程序執行效率的考慮,程序員將其中的檢索、更新維護等功能分離出來,做成單獨調用的模塊,這個模塊后來就慢慢發展、演變成現在我們所接觸到的數據庫管理系統(DBMS)——程序開發中的一個重要分支。
  • 數據庫范式設計:
    數據庫范式是數據庫設計中必不可少的知識,沒有對范式的理解,就無法設計出高效率、優雅的數據庫,甚至設計出錯誤的數據庫。
  • a) 第一范式(1NF):屬性不可分

    b) 第二范式(2NF):符合1NF,并且,非主屬性完全依賴于碼。

    c) 第三范式(3NF):符合2NF,并且,消除傳遞依賴

    d) BC范式(BCNF):符合3NF,并且,主屬性不依賴于主屬性(如果關系模式屬于第一范式,且每個屬性都不傳遞依賴于鍵碼,則R屬于BC范式)。

    總結

    以上是生活随笔為你收集整理的数据库冗余的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。