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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【数据库范式】第二范式分析

發布時間:2023/12/13 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 【数据库范式】第二范式分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2、第二范式2NF

定義:數據庫表中不存在非關鍵字段對任一候選關鍵字段的部分函數依賴,即符合第二范式。

簡單的說就是不要字段冗余

《注:什么是函數依賴,詳見百度百科(http://baike.baidu.com/view/40008.htm)。

如果一個表中某一個字段A的值是由另外一個字段或一組字段B的值來確定的,就稱為A函數依賴于B。》

2NF可以減少插入異常,刪除異常和修改異常。

簡單的說,一方面,第二范式肯定要滿足第一范式,否則就沒有必要談第二范式。

另一方面,當某張表中的非主鍵信息不是由整個主鍵函數來決定時,即存在依賴于該表中不是主鍵的部分或者依賴于主鍵一部分的部分時,通常會違反2NF。

我們再來看上面的滿足1NF的表1-2

CardNo

StudentNo

StudentName

Sex

Academy

Major

class

CardCash

UserID

UserLevel

Date

Time

001

021101

小明

教育學院

心理系

1

100

Operator

操作員

2011/10/03

09:00

我們看到,在這張表中,通過CardNo和StudentNo就可以確定StudentName,Sex,Academy,Major,class,CardCash,UserID,Date,Time。所以可以把CardNo和StudentNo的組合作為主鍵。

但是,我們發現CardCash并不完全依賴于CardNo和StudentNo,僅僅通過CardNo就可以確定CardCash,因為一張卡,一定會有卡內金額。這就造成了部分依賴。出現這種情況,就不滿足第二范

修改為:

我們再來看另一個例子,學生上下機記錄表,會更明顯些。表2-1

CardNo

StudentNo

StudentName

Sex

Department

Major

class

OnDate

OnTime

OffDate

OffTime

ConsumeTime

ConsumeMoney

001

0211

小明

教育學院

心理系

1

2011/10/14

09:00

2011/10/14

10:00

1

2

我們看到,在這張表中,StudentName,Sex,Department,Major,class都是直接依賴于StudentNo,而不依賴與表中的其他字段,這樣的設計也不符合2NF非主鍵信息不是由整個主鍵函數來決定時。

我們可以把1-2和2-1優化為:

3-1

StudentNo

CardNo

UserID

UserLevel

Date

Time

021101

001

Operator

操作員

2011/10/03

09:00

3-2

CardNo

CardCash

001

98

3-3

CardNo

OnDate

OnTime

OffDate

OffTime

ConsumeTime

ConsumeMoney

001

2011/10/14

09:00

2011/10/14

10:00

1

2

3-4

StudentNo

StudentName

Sex

Academy

Major

class

021101

小明

教育學院

心理系

1

----------------------------------------

第二范式

每一行的數據只能與其中一列相關,即一行數據只做一件事。只要數據列中出現數據重復,就要把表拆分開來。

一個人同時訂幾個房間,就會出來一個訂單號多條數據,這樣子聯系人都是重復的,就會造成數據冗余。我們應該把他拆開來。

這樣便實現啦一條數據做一件事,不摻雜復雜的關系邏輯。同時對表數據的更新維護也更易操作。

----------------------------------------

2.第二范式(確保表中的每列都和主鍵相關)

第二范式在第一范式的基礎之上更進一層。第二范式需要確保數據庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在一個數據庫表中,一個表中只能保存一種數據,不可以把多種數據保存在同一張數據庫表中。

比如要設計一個訂單信息表,因為訂單中可能會有多種商品,所以要將訂單編號和商品編號作為數據庫表的聯合主鍵,如下表所示。

訂單信息表

這樣就產生一個問題:這個表中是以訂單編號和商品編號作為聯合主鍵。這樣在該表中商品名稱、單位、商品價格等信息不與該表的主鍵相關,而僅僅是與商品編號相關。所以在這里違反了第二范式的設計原則。

而如果把這個訂單信息表進行拆分,把商品信息分離到另一個表中,把訂單項目表也分離到另一個表中,就非常完美了。如下所示。

這樣設計,在很大程度上減小了數據庫的冗余。如果要獲取訂單的商品信息,使用商品編號到商品信息表中查詢即可。

總結

以上是生活随笔為你收集整理的【数据库范式】第二范式分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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