MySQL設計三正規化

2021-10-23 14:22:57 字數 1380 閱讀 4265

正規化化的優點

減少資料的冗餘

資料表的字段是通過關係來連線的、每一張小表的字段和少、更新查詢快

正規化化的缺點

查詢需要進行連表查詢、導致效能降低

索引更難進行優化

正規化一

任何一張表都應該由主鍵、並且其他的字段具有原子性(不可再分)

例如乙個完整的位址、是可以將它分為多個字段

address

xx省xx市xx縣

可以分為

province

city

county

xx省xx市

xx縣正規化二

建立在第一正規化的基礎之上、所有非主鍵字段必須都依賴主鍵、不應該產生部分依賴

s_id(primary key)

s_name

course_id(選修課程id)

course_name(選修課程名稱)

course_scor(該選修課得分)

20172502xx張三5

創新創業與實踐

66

這裡 course_name(選修課程名稱) 和 course_scor(該選修課得分) 依賴的是 course_id(選修課程id) 而不是 s_id

產生了部分依賴, 而且是學生選課和乙個課程被多個學生選擇是多對多的關係,為降低冗餘性應設計三張表(一張學生表、一張課程表、一張學生選課與被選課程的關係表)

學生表

s_id(primary key)

s_name

20172502xx

張三課程表

course_id(選修課程id)

course_name(選修課程名稱)

5創新創業與實踐

對應關係表

s_c_id

course_id(選修課程id)

course_scor(該選修課得分)15

預設為null

正規化三

建立在第二正規化的基礎之上、所有非主鍵字段必須都直接依賴主鍵、不能產生傳遞依賴

s_id

s_name

c_class_name(班級名稱)

c_class_id(班級id)1張三

3年級8班

依賴關係如上 班級名稱通過學生的班級id間接的依賴主鍵(s_id)

Mysql的三正規化設計

後乙個正規化都是在滿足前乙個正規化的基礎上建立的.1nf 無重複的列 表中的每一列都是不可分割的基本資料項.不滿足1nf的資料庫不是關聯式資料庫.例如 聯絡人表 姓名,乙個聯絡人有家庭 和公司 則不符合1nf,應拆分為 姓名,家庭 公司 原子性,資料不可再分 2nf 屬性完全依賴於主鍵 不能存在僅依...

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

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

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

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