這篇文章將為大家詳細(xì)講解有關(guān)如何在MySQL數(shù)據(jù)庫(kù)中數(shù)據(jù)表使用外鍵與三范式,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、雅安服務(wù)器托管、營(yíng)銷軟件、網(wǎng)站建設(shè)、興賓網(wǎng)站維護(hù)、網(wǎng)站推廣。
數(shù)據(jù)表優(yōu)化
將商品信息表進(jìn)行優(yōu)化
1.創(chuàng)建商品種類表:
create table if not exists goods_cates( id int unsigned primary key auto_increment, name varchar(40) not null );
2.將商品種類寫(xiě)入商品種類表中:
注意:插入另一個(gè)表的查詢結(jié)果不需要加values
insert into goods_cates(name) (select cate_name from goods group by cate_name);
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;
外鍵
1.外鍵的使用:
添加外鍵約束,插入數(shù)據(jù)線判斷cate_id是否存在于goods_cates中的id,不存在,則插入數(shù)據(jù)失敗
alter table 表名1 add foreign key (字段名1) references 表名2(字段名2);
(設(shè)置外鍵后可以防止非法數(shù)據(jù)的錄入)
foreign key(字段名1) references 表名2(字段名2);
(也可在創(chuàng)建表時(shí)直接設(shè)置外鍵,前提是要連接的表存在)
2.外鍵的缺點(diǎn):
雖然外鍵可以有效防止非法數(shù)據(jù)的錄入,但是會(huì)極大降低表的更新效率,所以實(shí)際開(kāi)發(fā)中,一般不適用外鍵約束,可以再事務(wù)層面去判斷數(shù)據(jù)的合法性。
3.外鍵的刪除:
顯示創(chuàng)建表的語(yǔ)句
show create table goods;
獲取外鍵名稱后刪除外鍵:
alter table goods drop foreign key goods_ibfk_1;
三范式
1.第一范式(1NF):強(qiáng)調(diào)列的原子性,即列不能再分成其他列。
2.第二范式(2NF):基于1NF,表必須有一個(gè)主鍵,非主鍵字段必須完全依賴與主鍵,而不是只依賴于主鍵的一部分。
3.第三范式(3NF):基于2NF,非主鍵列必須直接依賴于主鍵,不能存在傳遞依賴。
符合第三范式的數(shù)據(jù)庫(kù),是比較合理的數(shù)據(jù)庫(kù)。
關(guān)于如何在Mysql數(shù)據(jù)庫(kù)中數(shù)據(jù)表使用外鍵與三范式就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。