對於正規化的理解

2022-02-28 15:08:01 字數 1082 閱讀 8586

我們判斷資料庫設計的好壞很大程度上是根據正規化的,簡單總結一下我對正規化的一點理解:

第一正規化(1nf)

是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。

第二正規化(2nf

就是非主屬性完全依賴於主關鍵字。

第三正規化(3nf

在第二正規化的基礎上,資料表中如果不存在非關鍵字段對任一候選關鍵字段的傳遞函式依賴則符合第三正規化。簡而言之,第三正規化就是屬性不依賴於其它非主屬性。

bc正規化(bcnf)

也就是排除了屬性之間不存在傳遞函式依賴(不潤主屬性與非主屬性)

這幾個正規化一步一步地約束了資料可的設計:

從第一正規化到第二正規化消去了主屬性對鍵的部分依賴;

從第二正規化到第三正規化消去非主屬性對鍵的傳遞函式依賴;

從第三正規化到bc正規化消去了屬性對鍵的傳遞函式依賴

函式依賴的定義:

一、      假設給定屬性x的值就知道屬性y的值,那麼成x函式決定y(或y函式依賴於x),記作x->y

就像是函式,x確定,f(x)也確定了

對於函式依賴x-》y,如果存在x『屬於x時有x』-》y成立,那麼稱y對x部分函式依賴,否則稱,y對x完全函式依賴。

傳遞函式依賴:x-》y,y->z,則x->z為傳遞函式依賴

第二正規化:對於關係r,若r屬於第一正規化,且每個非主屬性(不是候選碼中的屬性)完全函式依賴於候選鍵,則符合第二正規化。

實質是元組要有唯一的標識碼,保證了元祖的唯一性,乙個元組只能對應乙個實體,從根本上解決了「插入、刪除、更改異常」

第三正規化:對於屬於第二正規化的關係,如果每個非主屬性都不傳遞依賴於候選碼,則符合第三正規化。

非主屬性不傳遞依賴於候選碼,主屬性可以傳遞依賴於候選碼。3nf盡量消除了冗餘

bc正規化:如果r屬於第一正規化,且每個屬性都不傳遞依賴於r的候選鍵,則r屬於bc正規化,是基於函式依賴的最高正規化

正規化的理解

關聯式資料庫規範化 關係內部各屬性之間的聯絡的合理化程度 正規化 符合第二正規化的就一定符合第一正規化 2nf在1nf的基礎之上,消除了非主屬性對於碼的部分函式依賴。函式依賴 屬性x能夠確定屬性y,則y函式依賴於x,即x y 依賴於誰,誰在前面 碼 除 k 之外的所有屬性都完全函式依賴於 k,則k是...

正規化的理解

前言 為什麼要寫這篇文章呢,從去年年底開始,就和很多做技術的朋友交流過,從資料庫設計到資料庫架構各個方面的內容。有一些朋友執著於orm,執著於所謂的資料庫設計,卻忘記了一切技術是要為業務服務這個基石。當然這文章裡也有一些自己的理解,想向大家表達。正規化是什麼 正規化是符合某一種級別的關係模式的集合。...

三正規化的理解

1nf 字段不可分 2nf 有主鍵,非主鍵字段依賴主鍵 3nf 非主鍵字段不能相互依賴 解釋 1nf 原子性 字段不可再分,否則就不是關聯式資料庫 2nf 唯一性 乙個表只說明乙個事物 3nf 每列都與主鍵有直接關係,不存在傳遞依賴 不符合第一正規化的例子 關聯式資料庫中create不出這樣的表 表...