総視聴再生時間43万分以上(2017年5月13日現在)の動画で基本情報技術者試験の過去問&キーワード解説!スキマ時間に動画!〜これじょIT〜

PR広告

平成29年度春 基本情報技術者過去問 午後問3 データベース 設問1

住民からの問合せに回答するためのデータベースに関する次の記述を読んで、設問1~3に答えよ。

W市役所の生活環境課では、職員は住民からのごみの出し方に関する問合せがあったとき、対象物(ごみ)を検索条件としてルール表を検索し、出し方のルールを回答する業務を行っている。

問合せごとに一意な受付Noを割り当て、受付日、回答日、回答したルールの区分ID及び対象物IDを入力したレコードを問合せ記録表に登録する。問合せがあった対象物が対象物表になかった場合、回答日、区分ID及び対象物IDはNULLにして、メモ欄に当該対象物をテキストで入力したレコードを登録する。後日、問合せ記録表から、回答日、区分ID及び対象物IDがNULLのレコードを選択し、メモ欄に入力されている当該対象物の分別区分を決定し、一意な対象物IDを割り当て、対象物表に新たな対象物のレコードを登録する。ルール表に新たなルールのレコードを登録して、問合せ記録表の選択したレコードに、追加したルールの区分IDと対象物IDを設定する。

データベースの表構成とデータ格納例は、図1のとおりである。下線付きの項目は主キーを表す。

区分表

区分ID 分別区分
L0008 可燃物

対象物表

対象物ID 対象物
S0123 植木の枝

ルール表

区分ID 対象物ID 更新日 出し方のルール
L0008 S0123 2015-03-01 乾燥させ、ひもで束にする。

問合せ記録表

受付No 受付日 回答日 区分ID 対象物ID メモ欄
C003456 2016-05-14 NULL NULL NULL 自転車のタイヤチューブ

図1 データベースの表構成とデータ格納例

業務を行っている過程で幾つかの課題が明らかになった。これらのうちから対策すべき課題を選び、それを実現するために、データベースの表構成の見直し案を作成した。その結果を、表1に示す。

表1 対策する課題とデータベースの表構成の見直し案

課題 表構成の見直し案
同じ対象物でも、大きさなどによって出し方を分ける必要が出てきた。 ルール表に主キーとしてルールIDの項目を追加し、区分IDと対象物IDの項目を主キーではなくする。問合せ記録表にルールIDの項目を追加する。
新たに登録したルールについて、不都合があり、修正などをしたことが何度かあった。 ルール表に登録状態の項目を追加する。登録状態の項目の値は、"未公開"、"公開"のいずれかである。理由は、ルール表に新たなルールを追加する場合、住民からの問合せに対する検索の対象とならない(未公開)状態で一旦登録し、課内でレビューした後、問題がなければ検索の対象(公開)とするためである。

設問1

ルールIDの項目を追加する理由として適切な答えを、解答群の中から選べ。

解答群

  • ア:同じ区分IDの同じ対象物IDに対する出し方のルールを複数件登録できるようにする。
  • イ:同じ区分IDの異なる対象物IDに対する出し方のルールを登録できるようにする。
  • ウ:異なる区分IDの同じ対象物IDに対する出し方のルールを登録できるようにする。

解説

正解は「ア:同じ区分IDの同じ対象物IDに対する出し方のルールを複数件登録できるようにする。」です!

表1 対策する課題とデータベースの表構成の見直し案

課題 表構成の見直し案
同じ対象物でも、大きさなどによって出し方を分ける必要が出てきた。 ルール表に主キーとしてルールIDの項目を追加し、区分IDと対象物IDの項目を主キーではなくする。問合せ記録表にルールIDの項目を追加する。
新たに登録したルールについて、不都合があり、修正などをしたことが何度かあった。 ルール表に登録状態の項目を追加する。登録状態の項目の値は、"未公開"、"公開"のいずれかである。理由は、ルール表に新たなルールを追加する場合、住民からの問合せに対する検索の対象とならない(未公開)状態で一旦登録し、課内でレビューした後、問題がなければ検索の対象(公開)とするためである。

表1 対策する課題とデータベースの表構成の見直し案の課題「同じ対象物でも、大きさなどによって出し方を分ける必要が出てきた。」の対策として「ルール表に主キーとしてルールIDの項目を追加し、区分IDと対象物IDの項目を主キーではなくする。問合せ記録表にルールIDの項目を追加する。」とルールIDを追加します。

「同じ区分の同じ対象物」でも出し方が異なります。そのためにルールを複数件登録する必要があります。今の構造ではルール表の「区分ID」と「対象物ID」で主キーとなっているために複数件登録できません。

これを解決するために「ア:同じ区分IDの同じ対象物IDに対する出し方のルールを複数件登録できるようにする。」とします!

設問2

次の記述中の に入れる適切な答えを、解答群の中から選べ。

ルール表のレコードを特定するために、問合せ記録表にルールIDの項目を追加するとき、ルールIDを外部キーとしたルール表に対するa制約を設定する。追加するルールIDの項目には、b

a に関する解答群

  • ア:非NULL
  • イ:NULL
  • ウ:UNIQUE
  • エ:参照
  • オ:検査
  • カ:主キー

b に関する解答群

  • ア:非NULL制約は適用できない
  • イ:UNIQUE制約を適用する
  • ウ:更新操作を行うことはできない
  • エ:主キー制約を適用する

解説

正解は

aには「エ 参照」

bには「ア 非NULL制約は適用できない」

が入ります!

主キールールIDを追加したルール表のレコードを特定するために、問合せ記録表にルールIDの項目を追加します。問合せ記録表にルールIDを追加する時、ルール表にないルールIDを追加すると、テーブル同士の関連の整合性が失われます。それを避けるために「エ 参照」制約をつけます。

また、問題文に問合せがあった対象物が対象物表になかった場合、回答日、区分ID及び対象物IDはNULLにしてとあります。区分IDと対象物IDがわからなければルールIDもわかりません。そのため、「ア 非NULL制約は適用できない」となります!

設問3

ルール表作成用DDLの見直しについて、次の記述中の に入れる適切な答えを、解答群の中から選べ。

図2に示す、ルールIDの項目と登録状態の項目追加後のルール表作成用DDLのレビュー時に、cは削除すべきとの指摘を受けた。また、登録状態の項目に対する制約が不足しているとの指摘もあり、dを追加することになった。

CREATE TABLE ルール (
    ルールID CHAR(6) PRIMARY KEY,
    区分ID CHAR(5) NOT NULL,
    対象物ID CHAR(5) NOT NULL,
    登録状態 VARCHAR(10) NOT NULL,
    更新日 DATE NOT NULL,
    出し方のルール VARCHAR(2048),
    FOREIGN KEY (区分ID) REFERENCES 区分(区分ID),
    FOREIGN KEY (対象物ID) REFERENCES 対象物(対象物ID),
    UNIQUE (区分ID, 対象物ID)
)

図2 ルール表作成用DDL

c に関する解答群

  • ア:区分IDの項目及び対象物IDの項目のUNIQUE制約
  • イ:対象物IDの項目の非NULL制約
  • ウ:対象物IDの項目の参照制約
  • エ:ルールIDの項目の主キー制約

d に関する解答群

  • ア:CHECK(登録状態 IN('未公開', '公開'))
  • イ:CHECK(登録状態 IS NULL)
  • ウ:UNIQUE('未公開', '公開')
  • エ:WHERE 登録状態 IN('未公開', '公開')

解説

正解は

cには「ア:区分IDの項目及び対象物IDの項目のUNIQUE制約」が

dには「ア:CHECK(登録状態 IN('未公開', '公開'))」が

入ります!

下記のDDLように、UNIQUE(区分ID,対象物ID)が入っていると、課題「同じ対象物でも、大きさなどによって出し方を分ける必要が出てきた。」を解決するために、ルールIDをもうけ、同じ区分IDと対象物IDでも登録できるようになりません。

CREATE TABLE ルール (
    ルールID CHAR(6) PRIMARY KEY,
    区分ID CHAR(5) NOT NULL,
    対象物ID CHAR(5) NOT NULL,
    登録状態 VARCHAR(10) NOT NULL,
    更新日 DATE NOT NULL,
    出し方のルール VARCHAR(2048),
    FOREIGN KEY (区分ID) REFERENCES 区分(区分ID),
    FOREIGN KEY (対象物ID) REFERENCES 対象物(対象物ID),
    UNIQUE (区分ID, 対象物ID)
)

従って、「ア:区分IDの項目及び対象物IDの項目のUNIQUE制約」は削除するべきです!

登録状態には次ような仕様があります。

「登録状態の項目の値は、"未公開"、"公開"のいずれかである。」

"未公開"か"公開"以外の文字が入らないようにする必要があります。そのためにア:CHECK(登録状態 IN('未公開', '公開'))」を入れます!

PR広告

フェイスブックコメント

平成28年度秋 基本情報技術者試験 午後 テキスト・動画解説

平成28年度秋 基本情報技術者試験 午前 テキスト・動画解説

平成28年度春 基本情報技術者試験 午後 テキスト・動画解説

平成28年度春 基本情報技術者試験 午前 テキスト・動画解説

平成27年度秋 基本情報技術者試験 午後 テキスト・動画解説

平成27年度春 基本情報技術者試験 午後 テキスト・動画解説

平成27年度春 基本情報技術者試験 午前 テキスト・動画解説

平成26年度秋 基本情報技術者試験 午前 テキスト・動画解説

平成26年度春 基本情報技術者試験 午前 テキスト・動画解説