1. 程式人生 > >計算機三級數據庫設計與應用題

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

優化 then 參數 from turn 服務 數量 倉庫 編寫

設某全國性的運輸企業建立了大型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

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