第一正規化
存在非主屬性對碼的部分依賴關係 r(a,b,c) ab是碼 c是非主屬性 b-->c b決定c c部分依賴於b
第一正規化
定義:如果關係r 中所有屬性的值域都是單純域,那麼關係模式r是第一正規化的
那麼符合第一模式的特點就有
1)有主關鍵字
2)主鍵不能為空,
3)主鍵不能重複,
4)欄位不可以再分
例如:studyno | name | *** | contact
20040901 john male email:[email protected],phone:222456
20040901 mary famale email:[email protected] phone:123455
以上的表就不符合,第一正規化:主鍵重複(實際中資料庫不允許重複的),而且contact欄位可以再分
所以變更為正確的是
studyno | name | *** | email | phone
20040901 john male [email protected] 222456
20040902 mary famale [email protected] 123455
第二正規化
存在非主屬性對碼的傳遞性依賴 r(a,b,c) a是碼 a -->b ,b-->c
定義:如果關係模式r是第一正規化的,而且關係中每乙個非主屬性不部分依賴於主鍵,稱r是第二正規化的。
所以第二正規化的主要任務就是
滿足第一正規化的前提下,消除部分函式依賴。
studyno | name | *** | email | phone | classno | classaddress
01 john male [email protected] 222456 200401 a樓2
01 mary famale [email protected] 123455 200402 a樓3
這個表完全滿足於第一正規化,
主鍵由studyno和classno組成,這樣才能定位到指定行
但是,classaddress部分依賴於關鍵字(classno-〉classaddress),
所以要變為兩個表
表一studyno | name | *** | email | phone | classno
01 john male [email protected] 222456 200401
01 mary famale [email protected] 123455 200402
表二classno | classaddress
200401 a樓2
200402 a樓3
第三正規化
不存在非主屬性對碼的傳遞性依賴以及部分性依賴 ,
studyno | name | *** | email | bounslevel | bouns
20040901 john male [email protected] 優秀 $1000
20040902 mary famale [email protected] 良 $600
這個完全滿足了第二正規化,但是bounslevel和bouns存在傳遞依賴
更改為:
studyno | name | *** | email | bouunsno
20040901 john male [email protected] 1
20040902 mary famale [email protected] 2
bounsno | bounslevel | bouns
1 優秀 $1000
2 良 $600
這裡我比較喜歡用bounsno作為主鍵,
基於兩個原因
1)不要用字元作為主鍵。可能有人說:如果我的等級一開始就用數值就代替呢?
2)但是如果等級名稱更改了,不叫 1,2 ,3或優、良,這樣就可以方便更改,所以我一般優先使用與業務無關的字段作為關鍵字。
一般滿足前三個正規化就可以避免資料冗餘。
第一正規化,第二正規化,第三正規化
第一正規化 存在非主屬性對碼的部分依賴關係 r a,b,c ab是碼 c是非主屬性 b c b決定c c部分依賴於b 第一正規化 定義 如果關係r 中所有屬性的值域都是單純域,那麼關係模式r是第一正規化的 那麼符合第一模式的特點就有 1 有主關鍵字 2 主鍵不能為空,3 主鍵不能重複,4 欄位不可以...
第一正規化,第二正規化,第三正規化
第一正規化 存在非主屬性對碼的部分依賴關係 r a,b,c ab是碼 c是非主屬性 b c b決定c c部分依賴於b 第一正規化 定義 如果關係r 中所有屬性的值域都是單純域,那麼關係模式r是第一正規化的 那麼符合第一模式的特點就有 1 有主關鍵字 2 主鍵不能為空,3 主鍵不能重複,4 欄位不可以...
第一正規化 第二正規化 第三正規化
第一正規化 存在非主屬性對碼的部分依賴關係 r a,b,c ab是碼 c是非主屬性 b c b決定c c部分依賴於b 第一正規化 定義 如果關係r 中所有屬性的值域都是單純域,那麼關係模式r是第一正規化的 那麼符合第一模式的特點就有 1 有主關鍵字 2 主鍵不能為空,3 主鍵不能重複,4 欄位不可以...