我是數據庫設計的新手,我有關於爲我的項目選擇觸發器與視圖的問題。下面是一些細節:使用觸發器與視圖獲取當前數據狀態
數據庫使用:MySQL的
Table 1:
Name: - no limit on number of values
Level: - four values are possible - 1,2,3,4
Status: - four values are possible - a,b,c,d
每個名稱(不是強制性的,但有可能)的保持水平和狀態的所有組合。
例子:
名稱: 「王」 可以容納1級狀態,1級狀態b,......,2級狀態,2級狀態b ..... Level3的狀態a,級別3,狀態b .....
現在我必須查詢數據庫以進行一些計算,以便通過在網絡上運行的GUI(Java Swing)將它們顯示給用戶。我需要的計算是...
每個名稱的每個級別的每個狀態的計數。例如:
國王級別1有多少「狀態a」。 國王級別1中有多少「狀態b」。 King級別1中有多少「狀態c」。 國王級別1有多少「狀態d」。 國王級別2中有多少「狀態a」。 等等....
名稱--- ---級狀態
王--- 1 ---一個
王--- 1 ---一個
王--- 1 ---一個
王--- 1 --- b
王--- 1 --- b
國王--- 1 --- d
等級2然後不同的名字也。我想的在1級計數的名字「王」
如果我執行單獨的查詢得到這個數據,我需要執行320個查詢,如果我有20名。我不想要。我在這裏有兩個解決方案...
解決方案1.我創建了一個觸發器。
我創建表2:
Name,Level,a_count,b_count,c_count,d_count
King 1 3 2 0 0
xyz 1 ... ..... .... ...
當原始表1被更新觸發相應增加了計數。現在我直接從這張表2中讀取。
解決方案2:創建一個顯示此數據的視圖。
名稱 - 級 - 狀態 - 計數
王1一3
王1 B 2
王2 ...
所以上。
有了這個解決方案,我不需要通過網絡發送所有的查詢。我可以只調用一次視圖(它確實執行所有查詢,但不需要從程序中執行)
我可以實現這兩個,但我想知道哪個解決方案更高效。每個用戶(使用我的前端)在父表中會有大約2000行,用戶可以是任何數字。請建議。
感謝, 拉朱
有人請讓我知道觸發器和視圖之間可以使用什麼來獲取父表中的彙總數據? – Raju 2013-03-07 17:03:12