第一正規化(1nf)
(必須有主鍵,列不可分)
資料庫表中的任何欄位都是單一屬性的,不可再分
create table aa(id int,nameage varchar(100))
insert aa values(1,''無限-女
'')
沒有達到第一正規化
create table aa(id int,name varcahr(10),age char(2))
insert aa values(1,''無限'',''女
'')
達到第一正規化
第二正規化(2nf)
資料庫表中非關鍵字段對任一候選關鍵字段的 都
不存在部分函式依賴
(當乙個表是復合主鍵時,非主鍵的字段不依賴於部分主鍵(即必須依賴於全部的主鍵字段))
create table sci(
sno int(32),cno int(32),grade int(32),credit int(32),
primary key sno,cno )
課程(cno)1---1學分(credit)
學生(sno)n---n課程(cno)
學生+課程--->分數(grade)
scisno cno grade credit
1 1 60 80
2 1 90 80
3 1 70 80
. . . .
. . . .
. . . .
如此以來,學分被大量重複儲存,資料冗餘
如要某課程學分,則要大量重複操作
如要加新課程,由於sno和cno共同做為主鍵,則在加入新課程時,必須有人選該課
如某學生某課程結業,則該學生其它課程資訊也同時被刪除了 總之
這種設計不太好吧,非關鍵字屬性credit僅函式依賴於cno,也就是credit部分依賴組合關鍵字(sno,cno)而不是完全依賴解決
分成兩個關係模式 sc1(sno,cno,grade),c2(cno,credit)。新關係包括兩個關係模式,它們之間通過sc1中的外關鍵字cno相聯絡,需要時再進行自然聯接,恢復了原來的關係
第三正規化(3nf)
關係模式r(u,f)中的所有非主屬性對任何候選關鍵字都不存在傳遞依賴
例----s1(sno,sname,dno, dname, location)
學號 姓名 所在系 系名稱 系位址
關鍵字sno決定各個屬性。由於是單個關鍵字,沒有部分依賴的問題,肯定是2nf。但這關係肯定有大量的冗餘,有關學生所在的幾個屬性dno,dname,location將重複儲存,插入,刪除和修改時也將產生類似以上例的情況。
原因:關係中存在傳遞依賴造成的。即sno 1->1 dno。 而dno 1->n sno卻不存在,
而dno -> location存在, 因此關鍵遼 sno 對 location 函式決定是通過傳遞依賴 sno -> location 實現的。也就是說,sno不直接決定非主屬性location。
解決目地:每個關係模式中不能留有傳遞依賴。
解決方法:分為兩個關係 s(sno,sname,dno),d(dno,dname,location)
注意:關係s中不能沒有外關鍵字dno。否則兩個關係之間失去聯絡
鮑依斯-科得正規化(bcnf)
在3nf的基礎上,庫表中任何欄位對任一候選關鍵字段的傳遞函式依賴都不存在
倉庫管理關係表為storehousemanage(倉庫id, 儲存物品id, 管理員id, 數量),且管理員1---1倉庫;倉庫1---n物品。這個資料庫表中存在如下決定關係:
(倉庫id, 儲存物品id) →(管理員id, 數量)
(管理員id, 儲存物品id) → (倉庫id, 數量)
所以,(倉庫id, 儲存物品id)和(管理員id, 儲存物品id)都是storehousemanage的候選關鍵字,表中的唯一非關鍵字段為數量,它是符合第三正規化的。但是,由於存在如下決定關係:
(倉庫id) → (管理員id)
(管理員id) → (倉庫id)
即存在關鍵字段決定關鍵字段的情況,所以其不符合bcnf正規化
解決:把倉庫管理關係表分解為二個關係表:
倉庫管理:storehousemanage(倉庫id, 管理員id)
倉庫:storehouse(倉庫id, 儲存物品id, 數量)
什麼是正規化,1NF,2NF,3NF?
關聯式資料庫設計正規化介紹 正規化是符合某一種級別的關係模式的集合。關聯式資料庫中的關係必須滿足一定的要求,即滿足不同的正規化。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 第四正規化 4nf 第五正規化 5nf 和第六正規化 6nf 1 第一正規化 1n...
關於正規化 1NF 2NF 3NF等
1.一些術語 正規化 normal form 是指資料庫設計的正規化,是抽象型的。關係模式 relational scheme 由乙個關係名以及它所有的屬性名構成。它對應二維表的表頭,是二維表的構成框架 邏輯結構 其格式為 關係名 屬性名1 屬性名2 屬性名n 關係 relation 表示多個實體之...
資料庫三正規化1NF2NF3NF
設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小 第一正規化 1nf 資料庫表中的所有字段值都是不可分解的原子值。即資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項...