1. 程式人生 > 其它 >MySQL筆記九:資料庫三正規化

MySQL筆記九:資料庫三正規化

第一正規化:要求任何 一張表必須有主鍵,每一個欄位原子性不可再分 第二正規化:在第一正規化的基礎上,要求所有非主鍵欄位完全依賴主鍵,不要產生部分依賴 第三正規化:在第二正規化的基礎上,要求所有非主鍵欄位直接依賴主鍵,不要產生傳遞依賴   9.1第一正規化 最核心最重要,所有的表的設計都要滿足 原子性不可再分:比如聯絡方式(包括郵箱+電話)就是原子性可分的,把它拆成兩個欄位才是原子性不可分   9.2第二正規化 學生編號+老師編號(pk)   學生姓名    老師姓名 1001            001                    張三            王老師 1002            002                    李四            趙老師
1003           001                      王五            王老師 1003            002                      王五            趙老師 滿足第一正規化,但是不滿足第二正規化,因為多對多關係中欄位之間有部分依賴,資料冗餘了,那麼怎麼修改才能滿足第二正規化? 技巧:多對多,三張表、關係表兩外來鍵 將一張表拆分成三張表:學生表、老師表、學生老師關係表 學生老師關係表 id(pk)        學生編號        老師編號 1                1001                001 2                1002                002
3                1003                001 4                1003                002   9.3第三正規化 一對多關係滿足第一正規化和第二正規化,但不滿足第三正規化 技巧:一對多,兩張表,關係表加外來鍵   9.4資料庫設計總結 一對多:兩張表,關係表加外來鍵 多對多:三張表,關係表兩外來鍵 一對一:實際開發中,一張表的欄位太多,這個時候需要拆分表 技巧:一對一,外來鍵唯一 設計表格的最終目的都是為了滿足客戶需求,有時會拿冗餘換速度,這是因為表之間的連線越多,效率越低(笛卡爾積現象),因此有時候表格資料存在冗餘,但是為了提升效率,一定的冗餘也是合理的