【平成31年度春期】データベーススペシャリスト試験 午後Ⅰ問1
自己採点結果 iTEC 32/50 TAC 36/50
設問1
以前は「候補キーを全て挙げよ」や「第3正規化せよ」という問題がありましたが、昨年から姿を消し、今年も午後Ⅱ問2のモデリング問題の簡易版となってました。前半はそこそこでしたが後半はいろいろ失点しています。
(1) ※属性の解答は、主キー(実線)を(PK)、外部キー(破線)を(FK)と表記します。
a 種目分類コード(FK) b 主催者番号(FK) c 種目コード(FK) d 大会番号(PK)
e 会員番号(PK) f 入金年月日 g 使用ポイント数
【コメント】
a 2(2)「種目は、種目コードで識別し、"種目分類コード"で、・・分類する」
b 3「大会は・・"主催者番号"を登録する」
c 5(1) 「エントリ枠は・・"種目コード"・・などを登録する」
d、e 2(3)「参加申込みは"大会番号","会員番号"で識別し、」
f 4(2) 「会員の参加費用の支払を確認して"入金年月日"を登録し、」
g 4(4)「会員はポイントを使用する場合、"使用ポイント"を登録し、」
(2)
【コメント】
①空欄a"種目分類コード"が外部キー
②空欄b"主催者番号"が外部キー
③"運営サービスコード"が主キーかつ外部キー
④"大会番号"が主キーかつ外部キー
⑤"アイテムコード"が主キーかつ外部キー
⑥"大会番号"が主キーかつ外部キー
⑦"大会番号"が主キーかつ外部キー
⑧空欄c"種目コード"が外部キー
⑨"会員番号"が主キーかつ外部キー
⑩"大会番号"が主キーかつ外部キー、そのうち"エントリ枠番号"はただの外部キーであるからこれは[エントリ枠]:[参加申込み]=1:多とすべきでした。
⑪iTECは1:1、TACはサブタイプを解答している。会員が大会申込をする時点では、ポイントを付与されていない(入金完了していない)会員が存在するから、[会員ポイント]⊆[会員]が正解かと思います。
設問2
【コメント】
iTECとTACで割れているのが、「参加申込数」の最後の列(iTECは"超過"、TACは"-")、「抽選年月日に対する本日」(iTECは3列目まで”前"、TACは"-")のようです。「参加申込数」の行については、評価時点が「日付が変わった時点及び参加申込受付時点」とあるので、募集期間後で抽選が行われた後でも「参加申込数」が”超過”状態が続いていると思われ、私の解答では誤答と思います。「抽選年月日に対する本日」の行については、募集期間前、募集期間中、募集期間後で参加申込数が定員以下の場合は決定表では考慮されない項目”-”と考えてました。
設問3
(1)
① 関係名:抽選エントリ枠、属性:後続エントリ枠番号
② 関係名:参加申込み、属性:エントリ枠番号
③ 参加申込みエントリ枠(大会番号(PK)、エントリ枠番号(PK)、会員番号(PK)、後続エントリ枠番号(FK))
【コメント】
①多段階抽選に対応するには「抽選エントリ枠」に"後続エントリ枠番号"がないと成立しないと思い解答しました。iTEC、TACともこの通りでした。
②「参加申込み」と「エントリ枠」が直接関連を持ってしまうと多段階抽選を実現できないと思い、「参加申込み」で「エントリ枠」と連関する属性を削除し、「抽選エントリ枠」と関連を持たせればよいと考えていました。しかし、これでは"抽選結果"を保持することができません。多段階抽選の結果を「抽選エントリ枠」に持たせることで、1つの「参加申込み」について複数の「抽選エントリ枠」の結果を保持できるようにする必要があります。私の解答は誤答でした。
③「エントリ枠」と「参加申込み」は1:多の関連(リレーションは誤っていましたが)で、上記②を考慮すると、多段階抽選を導入すると「抽選エントリ枠」と「参加申込み」は多:多となります。そこで、両者には連関エンティティを持たせる必要があります。その主キーには「抽選エントリ枠」の主キー{大会番号、エントリ枠番号}と「参加申込み」の主キー{大会番号、会員番号}の複合キーとして{大会番号、エントリ枠番号、会員番号}となる、というところまでは分かりましたが、非キーにはその抽選結果を保持する必要がありました。ちょっと残念な誤答です。
(2) 会員番号(PK)、ポイント有効年月日(PK)、有効ポイント数
【コメント】
「会員」と「会員ポイント」が1:多になり、有効期間(年月日)と複合キーを構成するところまでは分かったのですが、非キー属性は元のスキーマが"ポイント残高"となっているため、素直にそれに合わせるべきでした。私の解答は誤答と思います。これもちょっと残念。