資料庫表設計的原則攻略(二)

2021-08-30 17:21:39 字數 1037 閱讀 9214

上篇主要是說了些基本表的一些基本概念,這一篇主要是想說一下正規化的應用。

在大二的時候學資料庫的時候是學的sql server資料庫,裡面也講到了正規化,現在就來看看三大正規化。

第一正規化:如果每列(或者每個屬性)都是不可再分的最小資料單元(也稱為最小的原子單元),則滿足第一正規化.比如乙個工人的基本資訊表,裡面有工人的工號,性別,年齡,這些屬性都是不可分割的,所以這個表就符合了第一正規化。

第二正規化: 就是在第一正規化的基礎上延伸,使之表裡的每個欄位都與主鍵發生關係。假如乙個關係滿足第一正規化,並且除了主鍵以外的其它字段,都依賴於該主鍵,則滿足第二正規化.

例如:訂單表(訂單編號、產品編號、定購日期、**、……),"訂單編號"為主鍵,"產品編號"和主鍵列沒有直接的關係,即"產品編號"列不依賴於主鍵列,這個列我們就可以把它刪除。

我們來看一下它的定義:

設u是關係模式r 的屬性集,f 是r 上成立的只涉及u 中屬性的函式依賴集。若x→y 和 y→z在r 上成立,則x →z 在r 上成立。因此我們就來看在網上搜尋到的例子:例如:訂單表(訂單編號,定購日期,顧客編號,顧客姓名,……),初看該錶沒有問題,滿足第二正規化,每列都和主鍵列"訂單編號"相關,再細看你會發現"顧客姓名"和"顧客編號"相關,"顧客編號"和"訂單編號"又相關,最後經過傳遞依賴,"顧客姓名"也和"訂單編號"相關。為了滿足第三正規化,應去掉"顧客姓名"列,放入客戶表中。

這裡其實就是為了說明資料庫的表裡步要出現冗餘,在顧客表裡已經有了"顧客姓名"了,而在訂單表裡就別出現了,而直接根據顧客編號相關聯就可以,否則造成資源浪費。

以上就是三大正規化。

延伸:我們來看這三大正規化:

第一正規化:1nf是對屬性的原子性約束,要求屬性具有原子性,不可再分解;

第二正規化:2nf是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性;

第三正規化:3nf是對字段冗餘性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗餘。

其實在設計資料庫的時候我們最多的要遵循的就是第三正規化,但是並不是越滿足第三正規化資料庫就設計的越完美,這種錯誤是錯誤的。有時候增加點冗餘相反的會提高訪問速率,因此在實際的設計過程中應降低對正規化的要求。

資料庫表的設計原則

建立資料庫裡最基本的應該就是建表,建索引 儲存過程等一系列操作了。談到表就不得不談到實體。資料實體 什麼是實體,客觀存在並且可以相互區別的事物稱為實體。這裡我們就簡單的把它理解為乙個表吧,描述實體的特性,我們就把他們稱為了屬性。也可以說當我們把乙個資料庫表當作乙個實體,那麼它裡面的所有字段是不是就是...

mysql的表設計原則 資料庫表設計的原則

命名規則 1 資料庫名 表名 欄位名全部採用小寫字母,以下劃線分割 表設計原則 1 各表必須設定主鍵 可以是組合主鍵 否則無法生成該錶的 2 當表中有 create time update time欄位時,web後台會生成獨特的功能,否則生成的web後台還需要稍微改一下 請習慣建立這兩個字段 3 當...

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

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