資料庫設計三正規化
阿新 • • 發佈:2020-07-20
資料庫設計三正規化
什麼是設計正規化
設計表的依據。按照這個三正規化設計的表不會出現資料冗餘。
三正規化都是哪些?
第一正規化:任何一張表都應該有主鍵,並且每一個欄位原子性不可再分。 第二正規化:建立在第一正規化的基礎之上,所有非主鍵欄位完全依賴主鍵,不能產生部分依賴。 多對多?三張表,關係表兩個外來鍵。 t_student學生表 sno(pk) sname -------------------------- 1 張三 2 李四 3 王五 t_teacher講師表 tno(pk) tname --------------------------- 1 王老師 2 張老師 3 李老師 t_student_teacher_relation 學生講師關係表 id(pk) sno(fk) tno(fk) -------------------------------------------- 1 1 3 2 1 1 3 2 2 4 2 3 5 3 1 6 3 3 第三正規化:建立在第二正規化的基礎之上,所有非主鍵欄位直接依賴主鍵,不能產生傳遞依賴。 一對多? 兩張表,多的表加外來鍵 t_class 班級 cn(pk) cname -------------------------- 1 班級1 2 班級2 t_student 學生 sno(pk) sname classno(fk) ----------------------------------------- 10001 王一 1 10002 王二 1 10003 王三 2 10004 王四 2 10005 王五 1 10006 王六 2
提醒:在實際的開發中,以滿足客戶的需求為主,有的時候會拿冗餘換執行速度。
一對一如何設計
一對一設計的兩種方案: t_user_login 使用者登入表 id(pk) username password -------------------------------------- 1 zs 123 2 ls 456 第一種:主鍵共享 t_user_detail 使用者詳細資訊表 id(pk+fk) realname tel ... ---------------------------------------------- 1 張三 12345678 2 李四 85274174 第二種方案:外來鍵唯一 t_user_detail 使用者詳細資訊表 id(pk) realname tel userid(fk+unique) ... --------------------------------------------------------------------- 1 張三 12345678 1 2 李四 85274174 2