天天看點

MySQL 第七篇:資料庫設計、視圖與觸發器資料庫設計視圖觸發器

我把MySQL的内容整理成9篇部落格,學完這9篇部落格雖不能說能成為大神,但是應付一般中小企業的開發已經足夠了,有疑問或建議的歡迎留言讨論。

為了建立備援較小、結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關系型資料庫中這種規則就稱為範式。範式是符合某一種設計要求的總結。要想設計一個結構合理的關系型資料庫,必須滿足一定的範式。現在對資料庫設計範式要求不高,了解即可。

如果每列(或者每個屬性)都是不可再分的最小資料單元(也稱為最小的原子單元),則滿足第一範式.簡記為1NF。

例如:學員表(姓名、編号、位址、……)其中”位址”列還可以細分為國家、省、市、區等。

如果一個關系滿足第一範式,并且除了主鍵以外的其它列,都依賴于該主鍵,則滿足第二範式. 簡記為2NF。

如果一個關系滿足第二範式,并且除了主鍵以外的其它列都不依賴于主鍵列,則滿足第三範式.簡記為3NF。

注意:滿足範式要求的資料庫設計是結構清晰的,同時可避免資料備援和操作異常。這并不意味着不符合範式要求的設計一定是錯誤的,在資料庫表中 比如 一對一 或一對多關系的這種情況下,合并導緻的不符合範式要求反而是合理的。

一般情況下滿足前兩種就可以了。

1、了解視圖

視圖與表有很多相似的地方,視圖也是由若幹字段以及若幹記錄構成的,它也可以作為select語句的資料源。甚至在某些特定情況下,可以通過視圖對表進行更新操作。

視圖儲存的僅僅是一條select語句,其源資料都來自于資料庫表,資料庫表稱為基本表或者基表,視圖稱稱為虛表。基表資料發生變化,虛表也會随之變化。

2、視圖作用

a.使操作變得簡單(可以将複雜的select語句封裝到視圖)

b.避免資料備援(可以由一個基表或者多個基表産生多種針對性的視圖)

c.增強資料安全性(為不同的使用者配置設定不通的視圖,增強了資料的安全通路控制)

d.提高資料的邏輯獨立性(使應用程式與資料邏輯獨立)

1、建立視圖

create view 視圖名[(視圖字段清單)] as select語句

為了區分視圖與基本表,在命名視圖時,建議加字首“view_”或者“v_”

2、檢視視圖

describe 視圖名

3、删除視圖

drop view 視圖名

1、了解觸發器

mysql5.0新增的功能,觸發器定義了一系列的操作,這一系列的操作稱為觸發程式,當觸發事件發生時,觸發程式自動運作。

2、作用

觸發器主要用于監視某個表的insert、update、delete等更新操作,這些操作可以分别激活該表的insert、update或者delete類的觸發程式運作,進而實作資料自動維護。

create trigger 觸發器名 觸發時機 觸發事件 on 表名 for each row

begin

觸發程式

end;

解釋:

觸發時機:before與after;

觸發事件:insert、update、delete;

for each row表示行級觸發器;

注意:

使用old和new關鍵字對記錄進行操作。new.字段名或者old.字段名。 old記錄是隻讀的。

new記錄隻有是before類型時才能更改值。

2、檢視觸發器的定義

show create trigger 觸發器名稱;

3、删除觸發器

drop trigger 觸發器名;