有一個學生分數表(testaa),其欄位由 學號 國文 英文 總分組成,因為總分是國文和英文的加總,因此這些非主鍵欄位具有相依姓,違反第三正規化,必須將總分由表中移除令成一張表
但由此正規化後會產生一些問題,如果成績有變動 總分則部會跟著變動,因此有以下兩個方法來處理這個問題
1. 不建立總分表格
建立view透過計算公式產生總分的虛擬欄位,這樣可以透過view來得到總分資料
create view 總分虛擬欄位 as select (國文+英文) as 總分 from testaa;
select * from 總分虛擬欄位;
2.透過反正規化並利用trigger實現
不分割資料表,並利用trigger自動維護表格,保持資料一致
不管國文或英文新增或修改都能自動更新總分
*****
trigger
*******************************
create or replace trigger trigger3
before insert or update or delete
on testaa
for each row
when(new.總分 is null or new.總分>=0)
begin
:new.總分:=:new.國文+:new.英文;
end;
******************************
文章標籤
全站熱搜
