Mysql的三正規化設計

2021-08-18 20:24:17 字數 725 閱讀 8671

後乙個正規化都是在滿足前乙個正規化的基礎上建立的.

1nf:

無重複的列

.表中的每一列都是不可分割的基本資料項.不滿足1nf的資料庫不是關聯式資料庫.

例如:聯絡人表(姓名,**),乙個聯絡人有家庭**和公司**,則不符合1nf,應拆分為(姓名,家庭**,公司**).

原子性,資料不可再分

2nf:

屬性完全依賴於主鍵

.不能存在僅依賴於關鍵一部分的屬性.

資料沒有冗餘

例如:選課關係(學號,課程名稱,成績,學分),組合關鍵字(學號,課程名稱)作為主鍵.其不滿足2nf,

因為存在決定關係:課程名稱->學分即存在組合主鍵中的部分字段決定非主屬性的情況.會導致資料冗餘,更新/插入/刪除異常.

3nf

:屬性不傳遞依賴於其它非主屬性

.非主鍵列必須直接依賴於主鍵,而不能傳遞依賴。

即不能是:非主鍵a依賴於非主鍵b,非主鍵b依賴於主鍵.

例如:學生表(學號,姓名,學院編號,學院名稱),學號是主鍵,姓名、學院編號、學院名稱都完全依賴於學號,
滿足2nf,但不滿足3nf,因為學院名稱直接依賴的是學院編號 ,它是通過傳遞才依賴於主鍵.

MySQL設計三正規化

正規化化的優點 減少資料的冗餘 資料表的字段是通過關係來連線的 每一張小表的字段和少 更新查詢快 正規化化的缺點 查詢需要進行連表查詢 導致效能降低 索引更難進行優化 正規化一 任何一張表都應該由主鍵 並且其他的字段具有原子性 不可再分 例如乙個完整的位址 是可以將它分為多個字段 address x...

Mysql的三正規化設計和反正規化設計

第一正規化 第一正規化 1nf 要求資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值。若某一列有多個值,可以將該列單獨拆分成乙個實體,新實體和原實體間是一對多的關係。在任何乙個關聯式資料庫中,第一正規化 1nf 是對關係模式的基本要求,不滿足第一正規化 1nf 的資料庫就不是關聯式資料...

mysql設計之三正規化 MySQL設計之三正規化

資料庫設計三正規化 設計資料庫表的時候所依據的規範,共三個規範 第一正規化 要求有主鍵,並且要求每乙個字段原子性不可再分 第二正規化 要求所有非主鍵字段完全依賴主鍵,不能產生部分依賴 第三正規化 所有非主鍵欄位和主鍵字段之間不能產生傳遞依賴 第一正規化 資料庫表中不能出現重覆記錄,每個欄位是原子性的...