1. 程式人生 > 資料庫 >Mysql資料庫中資料表的優化、外來鍵與三正規化用法例項分析

Mysql資料庫中資料表的優化、外來鍵與三正規化用法例項分析

本文例項講述了Mysql資料庫中資料表的優化、外來鍵與三正規化用法。分享給大家供大家參考,具體如下:

資料表優化

將商品資訊表進行優化

1.建立商品種類表:

create table if not exists goods_cates( 
id int unsigned primary key auto_increment,name varchar(40) not null 
);

2.將商品種類寫入商品種類表中:

注意:插入另一個表的查詢結果不需要加values

insert into goods_cates(name) 
(select cate_name from goods group by cate_name); 

3.將商品種類表更新到商品表中:

將商品表與種類表連線,用種類表id代替商品表種類內容

update (goods_cates inner join goods on goods_cates.name=goods.cate_name) 
set goods.cate_name=goods_cates.id;

4.修改表結構:

將商品表商品種類名欄位名cate_name重新命名為cate_id

alter table goods change cate_name cate_id int unsigned not null; 

外來鍵

1.外來鍵的使用:

新增外來鍵約束,插入資料線判斷cate_id是否存在於goods_cates中的id,不存在,則插入資料失敗

alter table 表名1 add foreign key (欄位名1) references 表名2(欄位名2); 

(設定外來鍵後可以防止非法資料的錄入)

foreign key(欄位名1) references 表名2(欄位名2); 

(也可在建立表時直接設定外來鍵,前提是要連線的表存在)

2.外來鍵的缺點:

雖然外來鍵可以有效防止非法資料的錄入,但是會極大降低表的更新效率,所以實際開發中,一般不適用外來鍵約束,可以再事務層面去判斷資料的合法性。

3.外來鍵的刪除:

顯示建立表的語句

show create table goods; 

獲取外來鍵名稱後刪除外來鍵:

alter table goods drop foreign key goods_ibfk_1;

三正規化

1.第一正規化(1NF):強調列的原子性,即列不能再分成其他列。
2.第二正規化(2NF):基於1NF,表必須有一個主鍵,非主鍵欄位必須完全依賴與主鍵,而不是隻依賴於主鍵的一部分。
3.第三正規化(3NF):基於2NF,非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。

符合第三正規化的資料庫,是比較合理的資料庫。

更多關於MySQL相關內容感興趣的讀者可檢視本站專題:《MySQL查詢技巧大全》、《MySQL常用函式大彙總》、《MySQL日誌操作技巧大全》、《MySQL事務操作技巧彙總》、《MySQL儲存過程技巧大全》及《MySQL資料庫鎖相關技巧彙總》

希望本文所述對大家MySQL資料庫計有所幫助。