溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在Mysql數(shù)據(jù)庫中數(shù)據(jù)表使用外鍵與三范式

發(fā)布時間:2021-05-12 17:04:15 來源:億速云 閱讀:136 作者:Leah 欄目:MySQL數(shù)據(jù)庫

這篇文章將為大家詳細(xì)講解有關(guān)如何在Mysql數(shù)據(jù)庫中數(shù)據(jù)表使用外鍵與三范式,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

數(shù)據(jù)表優(yōu)化

將商品信息表進(jìn)行優(yōu)化

如何在Mysql數(shù)據(jù)庫中數(shù)據(jù)表使用外鍵與三范式

1.創(chuàng)建商品種類表:

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

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

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

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

如何在Mysql數(shù)據(jù)庫中數(shù)據(jù)表使用外鍵與三范式

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

將商品表與種類表連接,用種類表id代替商品表種類內(nèi)容

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

4.修改表結(jié)構(gòu):

將商品表商品種類名字段名cate_name重命名為cate_id

alter table goods change cate_name cate_id int unsigned not null;

如何在Mysql數(shù)據(jù)庫中數(shù)據(jù)表使用外鍵與三范式

外鍵

1.外鍵的使用:

添加外鍵約束,插入數(shù)據(jù)線判斷cate_id是否存在于goods_cates中的id,不存在,則插入數(shù)據(jù)失敗

alter table 表名1 add foreign key (字段名1) references 表名2(字段名2);

(設(shè)置外鍵后可以防止非法數(shù)據(jù)的錄入)

如何在Mysql數(shù)據(jù)庫中數(shù)據(jù)表使用外鍵與三范式

foreign key(字段名1) references 表名2(字段名2);

(也可在創(chuàng)建表時直接設(shè)置外鍵,前提是要連接的表存在)

2.外鍵的缺點:

雖然外鍵可以有效防止非法數(shù)據(jù)的錄入,但是會極大降低表的更新效率,所以實際開發(fā)中,一般不適用外鍵約束,可以再事務(wù)層面去判斷數(shù)據(jù)的合法性。

3.外鍵的刪除:

顯示創(chuàng)建表的語句

show create table goods;

如何在Mysql數(shù)據(jù)庫中數(shù)據(jù)表使用外鍵與三范式

獲取外鍵名稱后刪除外鍵:

alter table goods drop foreign key goods_ibfk_1;

三范式

1.第一范式(1NF):強調(diào)列的原子性,即列不能再分成其他列。
2.第二范式(2NF):基于1NF,表必須有一個主鍵,非主鍵字段必須完全依賴與主鍵,而不是只依賴于主鍵的一部分。
3.第三范式(3NF):基于2NF,非主鍵列必須直接依賴于主鍵,不能存在傳遞依賴。

符合第三范式的數(shù)據(jù)庫,是比較合理的數(shù)據(jù)庫。

關(guān)于如何在Mysql數(shù)據(jù)庫中數(shù)據(jù)表使用外鍵與三范式就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI