スキップしてメイン コンテンツに移動

平成26年度 春期 データベーススペシャリスト試験 午後Ⅱ 問1 設問2 (1)

平成26年度 春期 データベーススペシャリスト試験 午後Ⅱ
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm2_qs.pdf

問1 データベースの物理設計に関する次の記述を読んで,設問1~3に答えよ。

設問2 〔データベースの物理設計〕の”テーブル定義表の作成”及び”データ所要量見積りと表領域へのデータ配置”について,(1)~(4)に答えよ。

 (1)表5と表7の太枠内に適切な字句を入れ,表を完成させよ。

 編集画面では,太枠の横線が,右端まで伸びてしまうが,本当は,記述していない。
ブラウザによるのかも。

表5 作成中の”銘柄”テーブル定義表
列名
データ型
NOT
NULL
格納長
(バイト)
索引の種類と構成例


NU
銘柄コード






銘柄名






上場区分






売買単位






公開情報






市場コード





1
制約
CHECK(上場区分 BETWEEN '1' AND '9')
FOREING KEY (市場コード) REFERENCES 市場(市場コード)



表6 作成中の”株価”テーブル定義表
列名
データ型
NOT
NULL
格納長
(バイト)
索引の種類と構成例
P


銘柄コード
CHAR(4)
Y
4
1


株価年月日
DATE
Y
4
2


株価時分
TIME
Y
3
3


始値
INTEGER
Y
4



安値
INTEGER
Y
4



高値
INTEGER
Y
4



終値
INTEGER
Y
4



出来髙
DECIMAL(15,0)
Y
8



制約
CHECK(上場区分 BETWEEN '1' AND '9')
FOREING KEY (市場コード) REFERENCES 市場(市場コード)


表7 作成中の”取引”テーブル定義表
列名
データ型
NOT
NULL
格納長
(バイト)
索引の種類と構成例
P
NU

取引番号
INTEGER
Y
4
1


注文番号
INTEGER



1

取引依頼年月日
DATE





取引成立年月日
DATE





取引株数
DECIMAL(13,0)





取引値段
INTEGER





取引状態
CHAR(1)





代金決済番号
INTEGER





株式決済番号
INTEGER





制約
CHECK(取引状態 IN ( '1', '2', '3', '9')
FOREING KEY (注文番号) REFERENCES 注文(注文番号)
注記 網掛け部分は,表示していない。



表1 主な属性の意味と制約

属性名
意味と制約
銘柄コード
銘柄を一意に識別するコード(4桁の半角英数字)。銘柄コードは,登録後に
変更されれることはない。
銘柄名
銘柄を一意に識別する,株式発行企業の名称(全角文字30字以内)。関係
”銘柄”の銘柄名は,登録時に必須であり,登録後に変更されることがある。
上場区分
銘柄の市場での売買可否について,上場,上場準備中などの状態を表す
区分(1~9の半角1文字の数字)。関係”銘柄”の銘柄名は,登録時に必須
であり,登録後に変更されることがある。
売買単位
売買するときの単位(1~1,000,000の整数)。売買単位が定められている銘柄は
その整数倍の数量で売買され,売買単位が定められていない銘柄は任意の
数量で取引される。売買単位は,変更されることがある。
公開情報
銘柄に関して一般に公表された情報(全角文字1,200文字以内。平均文字数は
500字)。公開情報は,随時更新され,銘柄によっては情報がない場合もある。
市場コード
証券取引所などの市場を一意に識別するコード(5桁の半角英数字)。銘柄ご
とにG社が取引をおこなう市場を一つ決めている。関係”銘柄”の市場コード
は,登録時に必須であり,登録後に変更されることがある。


〔RDBMSの仕様とストレージの構成〕

2.テーブル
 (1) テーブルの列には,NOT NU(LL制約を指定することができる。NOT NULL制約を指定しない列には,1バイトのNULLかどうかを表すフラグが付加される。

 (2) 主キー制約は,主キーを構成する列名を指定する。

 (3) 参照制約は,列名,参照先テーブル名,参照参照先列名を指定する。制約に違反する行の追加と削除,列の更新は拒否される。

 (4) 検査制約は,同じ行の列に対する制約と,副問合せによる他のテーブルに対する制約を記述することができる。

 (5) 使用可能なデータ型は,表4のとおりである。


表4 使用可能なデータ型表
データ型
説明
CHAR(n)
n文字の半角固定長文字列(1≦n≦255)。文字列がn文字未満の場合は,文字列の後方に半角の空白を埋めてnバイトの領域に格納される。
NCHAR(n)
n文字の全角固定長文字列(1≦n≦127)。文字列がn文字未満の場合は,文字列の後方に全角の空白を埋めて”n×2”バイトの領域に格納される。
VARCHAR(n)
最大n文字の半角可変長文字列(1≦n≦8,000)。値の文字数分のバイトの領域に格納され,4バイトの制御情報が付加される。
NCHAR VARYING(n)
最大n文字の全角可変長文字列(1≦n≦4,000)。”値の文字数×2”バイトの領域に格納され,4バイトの制御情報が付加される。
SMALLINT
-32,768 ~ 32,767の範囲内の整数。2バイトの領域に格納される。
INTEGER
-2,147483,648 ~ 2,147483,647の範囲内の整数。4バイトの領域に格納される。
DECIMAL(m,n)
精度 m (1≦m≦31),位取り n (0≦n≦m) の10新数。m÷2+1の小数部を切り捨てたバイト数の領域に格納される。
DATE
0001-01-01 ~ 9999-12-31の範囲内の日付。4バイトの領域に格納される。
TIME
00:00:00 ~ 23:59:59の範囲内の時刻。3バイトの領域に格納される。
TIMESTAMP
0001-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999の範囲内の時刻印。10バイトの領域に格納される。

〔データベースの物理設計〕
2.テーブル定義表の作成に従う



【回答】

表5 作成中の”銘柄”テーブル定義表
列名
データ型
NOT
NULL
格納長
(バイト)
索引の種類と構成例
P
U
NU
銘柄コード
CHAR(4)
Y
4
1


銘柄名
NCHAR
VARYING(30)
Y
34

1

上場区分
CHAR(1)
Y
1



売買単位
INTEGER
N
4



公開情報
NCHAR
VARYING(1200)
N
1004



市場コード
CHAR(5)
Y
5


1
制約
CHECK(上場区分 BETWEEN '1' AND '9')
FOREING KEY (市場コード) REFERENCES 市場(市場コード)


表7 作成中の”取引”テーブル定義表
列名
データ型
NOT
NULL
格納長
(バイト)
索引の種類と構成例
P
NU

取引番号
INTEGER
Y
4
1


注文番号
INTEGER
Y


1

取引依頼年月日
DATE
Y




取引成立年月日
DATE
N




取引株数
DECIMAL(13,0)
N




取引値段
INTEGER
N




取引状態
CHAR(1)
Y




代金決済番号
INTEGER
N




株式決済番号
INTEGER
N




制約
CHECK(取引状態 IN ( '1', '2', '3', '9')
FOREING KEY (注文番号) REFERENCES 注文(注文番号)
注記 網掛け部分は,表示していない。

コメント

このブログの人気の投稿

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ 問3 設問3 (1)

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf 問3 テーブルの設計及びSQLの設計に関する次の記述を読んで,設問1~3に答えよ。  設問3 〔注文トランザクションの設計〕について,(1),(2)に答えよ。  (1) 次のTR1~TR4のうち,いずれか二つの組合せのトランザクションを同時に実行したとき,デッドロックが起こるおそれがある。次の表中の  ウ  ~  カ   にデッドロックが起きない組合わせには○を,起きるおそれがある組合わせには×を記入せよ。   TR1:単品商品2個を注文する。   TR2:単品商品1個とセット商品1個を注文する。   TR3:セット商品1個を注文する。   TR4:セット商品2個を注文する。 \ TR1 TR2 TR3 TR4 TR1 ○  ウ   エ  × TR2 \ × × × TR3 \ \  オ   カ  TR4 \ \ \ × 問題の対象となっているのは、以下の内容である。 〔注文トランザクションの設計〕  Fさんは,注文トランザクションについて,次のように設計した。 (1) 注文単位を一つのトランザクションで処理し,最後にCOMMIT文を発行する。 (2) 注文に基づいて,”注文”テーブル及び”注文明細”テーブルに行を挿入する。 (3) 商品については,商品一覧画面に表示された順番に”在庫”テーブルの  引当可能数を調べ,引当可能ならば注文数を減算した値で引当可能数を更新する。 (4) セット商品が在庫不足のとき,”在庫”テーブルの不足セット商品数に不足数を  加算する。”セット商品構成”テーブルから,主キー順に当該セット商品を構成する  単品商品の構成数を調べ,必要数を計算する。単品商品については,”在庫”  テーブルの引当可能数には必要数を減算した値で、不足セット商品用引当済には  必要数を加算した値で更新する。 (5) トランザクションのISOLATIONレベルは,READ COMMITTEDとする。 検討す...

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ 問2 設問1 (1)

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf 問2  設問1 会議室予約システムについて,(1)~(4)に答えよ。  (1) 図2中のSQL文の  a  ~  c  に入れる適切な字句を答えよ。 〔会議室予約システムのテーブル〕  会議室予約システムの主要なテーブルのテーブル構造,概要は,図1,表1のとおりである。  社員( 社員番号 ,社員氏名,…)  会議室( 会議室番号 ,収容可能人数,階数,プロジェクタ設置有無,TV会議設備設置有無,…)  会議室予約( 会議室番号 , 予約日 , 予約開始時刻 ,予約終了時刻, 社員番号 ) 図1 主要なテーブルのテーブル構造(一部省略) 表1 主要なテーブルの概要 テーブル名 概要 社員 ・社員の情報を管理する。社員番号で社員を一意に識別する。 会議室 ・会議室の情報を管理する。会議室番号で会議室を一意に識別する。 ・会議室ことに収容可能な人数,階数,設備の設置有無が設定されている。 会議室予約 ・会議室の予約状況を管理する。会議室番号,予約日,予約開始時刻で 会議室予約を一意に識別する。 ・予約開始時刻及び予約終了時刻の分の指定は00分または30分とする。 〔会議室予約システムでの検索〕  会議室予約システムで空き会議室の検索結果一覧を表示する際に必要な情報を得るために実行するSQL文の例を図2に示す。  なお,図2中のホスト変数のhv1は予約希望日,hv2は予約希望開始時刻,hv3は予約希望終了時刻を表す。 SELECT * FROM 会議室 X WHERE  a  (SELECT * FROM 会議室予約 Y WHERE X.会議室番号 = Y.会議室番号 AND Y.予約日 = :hv1 AND Y.予約開始時刻  b  :hv3 AND Y.予約終了時刻  c  :hv2) 図2 検索で実行するSQL文の例 図2のSQLから、判明できることは、 対象となる...

平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ 問3 設問2 (2)

平成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)に答えよ。  (2) SQL4及びSQL5,指定した注文について,注文されたセット商品を構成する単品商品の合計数を求めるSQL文です。SQL4及びSQL5の実行結果が同じにように,  h   に入れる適切な字句を答えよ。 問題の対象となっているのは、以下の内容である。 〔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.商品番号 WHERE M.注文番号 = :hv 案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   ...