資料庫知識學習,資料庫設計優化攻略 四

2022-09-18 23:33:16 字數 1532 閱讀 3395

3.2.1 設計規範化表,消除資料冗餘 

資料庫正規化是確保資料庫結構合理,滿足各種查詢需要、避免資料庫操作異常的資料庫設計方式。滿足正規化要求的表,

稱為規範化表,正規化產生於 20 世紀 70 年代初,一般表設計滿足前三正規化就可以,在這裡簡單介紹一下前三正規化

第一正規化(1nf)無重複的列

所謂第一正規化(1nf)是指在關係模型中,對域新增的乙個規範要求,所有的域都應該是原子性的,即資料庫表的每一

列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。 

第二正規化(2nf)屬性

在 1nf 的基礎上,非碼屬性必須完全依賴於碼[在 1nf 基礎上消除非主屬性對主碼的部分函式依賴] 

第三正規化(3nf)屬性

在 1nf 基礎上,任何非主屬性不依賴於其它非主屬性[在 2nf 基礎上消除傳遞依賴] 

通俗的給大家解釋一下(可能不是最科學、最準確的理解)

第一正規化:屬性(字段)的原子性約束,要求屬性具有原子性,不可再分割;

第二正規化:記錄的惟一性約束,要求記錄有惟一標識,每條記錄需要有乙個屬性來做為實體的唯一標識。

第三正規化:屬性(字段)冗餘性的約束,即任何字段不能由其他字段派生出來,在通俗點就是:主鍵沒有直接關係的資料

列必須消除(消除的辦法就是再建立乙個表來存放他們,當然外來鍵除外)

如果資料庫設計達到了完全的標準化,則把所有的表通過關鍵字連線在一起時,不會出現任何資料的複本(repetition)。

標準化的優點是明顯的,它避免了資料冗餘,自然就節省了空間,也對資料的一致性(consistency)提供了根本的保障,杜

絕了資料不一致的現象,同時也提高了效率。

3.2.2 適當的冗餘,增加計算列 

資料庫設計的實用原則是:在資料冗餘和處理速度之間找到合適的平衡點

滿足正規化的表一定是規範化的表,但不一定是最佳的設計。很多情況下會為了提高資料庫的執行效率,常常需要降低正規化標

準:適當增加冗餘,達到以空間換時間的目的。比如我們有乙個表,產品名稱,單價,庫存量,總價值。這個表是不滿足第

三正規化的,因為「總價值」可以由「單價」乘以「數量」得到,說明「金額」是冗餘字段。但是,增加「總價值」這個冗餘

字段,可以提高查詢統計的速度,這就是以空間換時間的作法。合理的冗餘可以分散資料量大的表的併發壓力,也可以加快

特殊查詢的速度,冗餘字段可以有效減少資料庫表的連線,提高效率。

其中"總價值"就是乙個計算列,在資料庫中有兩種型別:資料列和計算列,資料列就是需要我們手動或者程式給予賦值的列,

計算列是源於表中其他的資料計算得來,比如這裡的"總價值"

在 sql 中建立計算列:

create table table1

number decimal(18,4),

price money,

amount as number*price --這裡就是計算列

如果是'否',說明這列是虛擬列,每次查詢的時候計算一次,而且那麼它是不可以用來做 check,foreign key 或 not null

約束。如果是'是',就是真實的列,不需要每次都計算,可以再此列上建立索引等等。

資料庫知識學習,資料庫設計優化攻略 二

優化 粗略的進行了表分割槽,優化 為精確資料分割槽 為什麼要表分割槽?當乙個表的資料量太大的時候,我們最想做的一件事是什麼?將這個表一分為二或者更多分,但是表還是這個表,只是 將其內容儲存分開,這樣讀取就快了 n 倍了 原理 表資料是無法放在檔案中的,但是檔案組可以放在檔案中,表可以放在檔案組中,這...

資料庫優化 資料庫設計優化

一 索引優化 1.首先索引不是越多越好,要視情況而定。因為索引會降低insert和update的效率 insert和update有時可能會重建索引。2.乙個表的索參數量最好不要超過6個,擇優而建。3.專案上線後,根據使用者的查詢條件字段稍微調整資料庫中的字段索引。二 分表 1.縱切 根據表字段來且分...

優化資料庫設計

資料庫設計步驟 1.需求分析 1.收集資訊 2.標識實體 1.標識實體的屬性 2.標識實體的關係 2.繪製e r圖 e 實體r 關係 3.繪製資料庫模型圖 4.根據sql行程資料庫 第一 二 三正規化 1 第一正規化 1nf 無重複的列 所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本...