有一個學生分數表(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;

******************************

文章標籤
全站熱搜
創作者介紹
創作者 to52016 的頭像
to52016

Eason [資料科學//Python學習/資料庫] & [拍片&剪片]

to52016 發表在 痞客邦 留言(0) 人氣(120)