平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf
問3 テーブルの設計及びSQLの設計に関する次の記述を読んで,設問1~3に答えよ。
設問2 〔SQL分の設計〕について,(1)~(3)に答えよ。
(3) ”セット商品構成”テーブルの主索引を用いてアクセスする。
これらのアクセスパスでは,SQL4の方が,”セット商品構成”テーブルの主索引をアクセスする頻度が多かった。そのアクセス頻度を減らすために,SQL4のWHERE句にANDで追加すべき述語を一つ答えよ。
問題の対象となっているのは、以下の内容である。
〔SQL文の設計〕
Fさんが,案1と案2のそれぞれについて設計した主なSQL文を表4に示す。
注記 hvは,ホスト変数を表す。
SQL4とSQL5の違いを確認する。
FROM句の結合している表が異なる。
SQL4 注文明細、商品、セット商品構成
SQL5 注文明細、セット商品、セット商品構成
サンプルデータを確認する。
商品テーブル
セット商品テーブル
セット商品構成テーブル
SQL4(商品テーブル)の商品番号には、単品商品も含んでいるため、”セット商品構成”テーブルの主索引(セット商品番号)と一致しないこれらのアクセスを減らせば良いことになる。
商品.単品区分 = 'N'
表の別名が定義されているので、それを使用する。
【回答】
P.単品区分 = 'N'
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf
問3 テーブルの設計及びSQLの設計に関する次の記述を読んで,設問1~3に答えよ。
設問2 〔SQL分の設計〕について,(1)~(3)に答えよ。
(3) ”セット商品構成”テーブルの主索引を用いてアクセスする。
これらのアクセスパスでは,SQL4の方が,”セット商品構成”テーブルの主索引をアクセスする頻度が多かった。そのアクセス頻度を減らすために,SQL4のWHERE句にANDで追加すべき述語を一つ答えよ。
問題の対象となっているのは、以下の内容である。
〔SQL文の設計〕
Fさんが,案1と案2のそれぞれについて設計した主なSQL文を表4に示す。
表4 案1と案2について設計した主なSQL文(未完成)
案
| SQL | SQL文 |
---|---|---|
案1 | SQL1 | SELECT M.商品番号,P.社内原価,P.化粧箱番号 FROM 注文明細 M,商品 P WHERE M.商品番号 = P.商品番号 AND M.注文番号 = :hv |
案2 | SQL2 | SELECT M.商品番号,T.社内原価,S.化粧箱番号 FROM 注文明細 M f JOIN 単品商品 T ON M.商品番号 = T.商品番号 f JOIN セット商品 S ON M.商品番号 = S.商品番号 |
案2 | SQL3 | SELECT M.商品番号,T.社内原価,CAST(NULL AS INT) 化粧箱番号 FROM 注文明細 M g JOIN 単品商品 T ON M.商品番号 = T.商品番号 WHERE M.注文番号 = :hv UNION ALL SELECT M.商品番号,CAST(NULL AS INT) 社内原価,S.化粧箱番号 FROM 注文明細 M g JOIN セット商品 S ON M.商品番号 = S.商品番号 WHERE M.注文番号 = :hv |
案1 | SQL4 | SELECT K.単品.商品番号,SUM( h )
FROM 注文明細 M,商品 P,セット商品構成 K
WHERE M.注文番号 = :hv AND M.商品番号 = P.商品番号
AND P.商品番号 = K.セット商品番号
GROUP BY K.単品商品番号
|
案2 | SQL5 | SELECT K.単品.商品番号,SUM( h )
FROM 注文明細 M,セット商品 S,セット商品構成 K
WHERE M.注文番号 = :hv AND M.商品番号 = S.商品番号
AND P.商品番号 = K.セット商品番号
GROUP BY K.単品商品番号
|
SQL4とSQL5の違いを確認する。
FROM句の結合している表が異なる。
SQL4 注文明細、商品、セット商品構成
SQL5 注文明細、セット商品、セット商品構成
サンプルデータを確認する。
商品テーブル
商品番号
|
商品名
|
…
|
---|---|---|
TS001 | たまご茸 | … |
TS002 | へび苺 | … |
SS001 | 山菜セット(松) | … |
SS002 | 山菜セット(竹) | … |
セット商品テーブル
商品番号
|
商品名
|
…
|
---|---|---|
SS001 | 山菜セット(松) | … |
SS002 | 山菜セット(竹) | … |
SS003 | 山菜セット(梅) | … |
SS004 | 山菜セット(桜) | … |
セット商品構成テーブル
セット商品番号
|
単品商品番号
|
構成数
|
---|---|---|
SS001 | TS001 | 50 |
SS001 | TS002 | 40 |
SS001 | TS003 | 40 |
SS002 | TS001 | 30 |
SS002 | TS003 | 20 |
SS002 | TS004 | 20 |
SQL4(商品テーブル)の商品番号には、単品商品も含んでいるため、”セット商品構成”テーブルの主索引(セット商品番号)と一致しないこれらのアクセスを減らせば良いことになる。
商品.単品区分 = 'N'
表の別名が定義されているので、それを使用する。
【回答】
P.単品区分 = 'N'
コメント
コメントを投稿