SqlServer系列 資料庫三大正規化

2022-01-31 12:40:03 字數 1595 閱讀 1514

1   概述

一般地,在進行資料庫設計時,應遵循三大原則,也就是我們通常說的三大正規化,即第一正規化要求確保表中每列的原子性,也就是不可拆分;第二正規化要求確保表中每列與主鍵相關,而不能只與主鍵的某部分相關(主要針對聯合主鍵),主鍵列與非主鍵列遵循完全函式依賴關係,也就是完全依賴;第三正規化確保主鍵列之間沒有傳遞函式依賴關係,也就是消除傳遞依賴。

本文將基於三大正規化原則,結合具體的例項做簡要分析,難度係數:基礎。

2   第一正規化

2.1 例子引入

根據如下場景設計出兩種資料表,請分析兩種資料表的合理性。

123

具體例子:

第一種表設計

第二種表設計

2.2  分析

第一種表設計不滿足第一正規化,為什麼不滿足第一正規化?因為region列不具有原子性,能拆分成省份、市和具體位址;

3   第二正規化

3.1 例子引入

根據如下場景設計出兩種資料表,請分析兩種資料表的合理性。

1  需求描述:設計乙個訂單資訊表,訂單有多種商品,將訂單編號和商品編號作為聯合主鍵。
第一種表設計

第二種表設計

3.2 分析

第一種表設計不滿足第二正規化 ,訂單編號和商品編號作為聯合主鍵,由於商品名稱,單位,**這幾列只與商品編號有關,與訂單編號無關,因此與主鍵(聯合主鍵)無關,違反正規化第二原則;

第二種表設計滿足第二正規化,把第一種設計表進行拆分,把商品資訊分離到另乙個表中,把訂單專案表也分離到另乙個表中。

4    第三正規化

4.1  例子引入

根據如下場景設計出兩種資料表,請分析兩種資料表的合理性。

1

需要在資料庫中儲存如下資訊:

2 學生編號;學生卡號;使用者id號;操作員級別;操作日期;操作時間;

第一種表設計

第二種表設計

4.2 分析

第一種表設計不滿足第三正規化,在表中,乙個userid能確定乙個userlevel。這樣,userid依賴於studentno和cardno,而userlevel又依

賴於userid,這就導致了傳遞依賴,3nf就是消除這種依賴。

第二種表設計滿足第三正規化,將第一種**拆分成成兩個**。

5   參考文獻

6   版權

博主**:

資料庫基礎系列之三 Sql Server連線埠

昨天遇到乙個比較奇怪的問題,機器a 機器b,都裝有sql server2000,c 程式從a連b上的資料庫ok,但是從b連a的資料庫總是有異常,異常提示 在建立與伺服器的連線時出錯。在連線到 sql server 2005 時,在預設的設定下 sql server 不允許進行遠端連線可能會導致此失敗...

資料庫基礎系列之三 Sql Server連線埠

昨天遇到乙個比較奇怪的問題,機器 a 機器 b,都裝有 sql server2000,c 程式從a連b 上的資料庫 ok,但是從b連 a的資料庫總是有異常,異常提示 在建立與伺服器的連線時出錯。在連線到 sql server 2005 時,在預設的設定下 sql server 不允許進行遠端連線可能...

資料庫基礎系列之三 Sql Server連線埠

昨天遇到乙個比較奇怪的問題,機器 a 機器 b,都裝有 sql server2000,c 程式從a連b 上的資料庫 ok,但是從b連 a的資料庫總是有異常,異常提示 在建立與伺服器的連線時出錯。在連線到 sql server 2005 時,在預設的設定下 sql server 不允許進行遠端連線可能...