計算機三級數據庫設計與應用題

設某全國性的運輸企業建立了大型OLTP系統,並在該系統之上建立了數據倉庫。OLTP系統和數據倉庫中有如下數據表:
運輸明細表(運輸單ID,發送站ID,終到站ID,貨物ID,貨物重量,運輸價格,發貨日期)
彙總表1(發送站ID,終到站ID,貨物ID,發貨日期,總重,總運價)
彙總表2(發送站ID,終到地區ID,貨物ID,發貨日期,總重,總運價)
彙總表3(發送站ID,終到站ID,貨物ID,發貨月份,總重,總運價)
彙總表4(發送地區ID,終到地區ID,貨物類別ID,發貨日期,總重,總運價)
該企業管理的貨運站約有100個,貨物約有500種共10類,各彙總表都建有主碼,且各表有合理的維護策略,在每次維護後數據能保持一致。設有視圖V,該視圖的訪問頻率很高,其查詢結果模式爲(發送地區ID,終到站ID,發貨月份,總重,總運價),該視圖現以彙總表1爲計算數據源。經監控發現,彙總表1的被訪問頻率過高,導致系統整體性能下降,而其它彙總表被訪問頻率較低。在不增加彙總表和索引的情況下,請給出一個改善系統服務性能的優化方案,並簡要說明理由。

參考答案:
由於彙總表1和視圖的模式訪問頻率都很高,而且視圖的數據源來自彙總表1,又因爲其他彙總表的訪問頻率較低,所以只需要將視圖的數據源綁定爲彙總表3,因爲彙總表3也可以滿足視圖的輸出模式。這樣不僅提升了彙總表3的數據訪問率,而且降低了彙總表1的數據訪問率,系統性能和服務性能得到了很大的優化。又因爲貨物約有500種,共10類,可以再建立一個視圖綁定數據源爲彙總表4,這樣就可以充分利用匯總表4的數據信息,從而可以進一步完善系統的性能的優化。

設有商品表(商品號,商品名,單價)和銷售表(銷售單據號,商品號,銷售時間,銷售數量,銷售單價)。其中,商品號代表一類商品,商品號、單價、銷售數量和銷售單價均爲整型。
請編寫查詢某年某商品的銷售總毛利的存儲過程,毛利=銷售數量×(銷售單價-單價)。要求商品號和年份爲輸入參數,總毛利用輸出參數返回。

參考答案:
CREATE PROCEDURE PRODUCT @商品號 int,@年份 int,@毛利 int output
AS
DELCARE
@某商品銷售量 int,@某商品進價 int,@某商品銷售單價 int
BEGIN
Select @某商品進價=單價 from 商品表 where@商品號=商品號
Select @商品銷售單價=銷售單價,@某商品銷售量=count(
from 銷售表 where@商品號=商品號 and銷售時間=@年份
IF @某商品進價 is NULL THEN
ROLLBACK;
RETURN;
END IF;
IF @某商品銷售單價 isNULL THEN
ROLLBACK;
RETURN;
RNDIF;
SET @毛利=(@某商品銷售單價-@某商品進價)
@某商品銷售量
GO

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章