メインコンテンツへスキップ
見出し画像

【Iパス7問を基礎から】用語問題で粘れるデータベース | 「キー」と「正規化」

    データベースのラスボスは正規化(表分け)や結合の計算問題です。

    このNoteでは計算問題に備えて、キーや正規化の用語を解説し過去問を解きます。主キーと外部キーを概念、約束事(制約)、過去問を実例図解を交えて解説してみます。

    ITパスポートのデータベース問題対策は以下で構成しています。Part4までは用語問題なので、頑張りましょう。


    なお、このNoteは私が専門学校で教えてきた指導経験と970点合格をした実績に基づいていますので、ちょっとでも信用してくれたら嬉しいです。

    \全てのNoteへのリンク集/


    役割のある列 | 主キーと外部キー

    データベースの表の列(項目)には、特別な役割があることを学習します。

    • 主キーと主キー制約

    • 外部キーと参照制約

    • 主キーであり外部キーであるケース

    • 複合主キーであるケース



    主キーについて

    主キーは、その表から1行を引き出すための列です。

    主キーには2つの約束事「制約」があります。

    • 一意制約:他の行との重複を許さない

    • 非NULL制約:空白を許さない

    以上2つを合わせて「主キー制約」と云います。

    画像



    外部キーについて

    外部キーは、別の表と紐づけるための項目で、他の表の主キーと共通します。

    画像

    外部キーの約束事は参照制約と云います。参照先(別の表)の項目を勝手に消してしまってはいけないなど、追加や変更に関する約束です。

    画像



    主キーであり外部キーである場合

    主キーであり外部キーである場合もあります。

    画像

    なお、主キーに下線、外部キーに点線をしますが、主キー&外部キーの場合は下線 にします。よって下線を見たら「主キーだけど、ワンチャン外部キーの可能性も」 と思いましょう。

    画像



    主キーが複数の列になる場合「複合主キー」

    主キーとは、一行を特定できれば良いので、複数の列の組み合わせでもOKです。

    例えば、成績表で「学籍番号S001の1年生の時」「~2年制の時」という特定も仕方もありますからね。

    画像




    キーに関する問題演習

    解く前に用語を追加します。

    • 行は、レコードとも云います

    • 列は、フィールドや項目とも云います

    以下の問題の太字は、覚えて欲しい言葉・解く時に注目して欲しい言葉です。


    主キーを設定する理由はどれか。
    ア:算術演算の対象としないことが明確になるから
    イ:主キーを設定した列が検索できるようになるから
    ウ:他の表からの参照を防止できるようになるから
    エ:表中のレコード(行)を一意に識別できるようになるから

    「ITパスポート試験 令和元年度問66」より改変

    正答はエ。一意制約のことですね。

    主キー制約は、一意制約と非NULL制約から成ります。


    主キーの設定に関する記述で正しいのはどれか。
    a:値が他のレコードと重複する場合、主キーとして適格ではない
    b:インデックスとの重複設定はできない
    c:主キーの値は数値である必要がある
    d:複数のフィールド(列)を使って主キーを構成できる
    ア:a, c イ:a, d ウ:b, c エ:b, d

    「ITパスポート試験 令和5年度問78」より改変

    正答はイ。

    aは一意制約の通り。dは複合主キーのこと。この時点でイに絞られます。

    考えやすいcもお薦め。ユーザーIDなんて数値だけじゃない場合ありますからね。よってcはあり得ないから、アとウは消えます。残りはイとエ。

    なおbのインデックスとは、検索を高速化するために設定します。>>データベース基本用語Note<< にて過去問を扱っています。


    外部キーに関する記述で正しいのはどれか。
    ア:外部キーは、一意制約(ユニーク制約)が付けられている
    イ:外部キーを設定したフィールドには、重複する値を設定できない
    ウ:一つの表に複数の表の外部キーを設定できない
    エ:複数のフィールドをまとめて一つの外部キーに設定できる

    「ITパスポート試験 平成30年度秋問73」より改変

    具体例を考えながら消去法が良いかもしれません。

    • ア:外部キーにかかっているのは、参照制約

    • イ:外部キーは一意制約されてないので、重複して大丈夫

    • ウ:複合主キーのように複数列の組み合わせもできます

    イだけ見てみましょう、簡単なので。外部キーに1年1組は複数ありますよね。

    画像




    正規化について

    データベースにおいて、表を適切に分けることを正規化と云います。

    一つの表に全てのデータをぶち込むと、大変なのは想像できますよね。例えば、クラス表・成績表などのように表を分けます。

    画像


    データの正規化を行う目的として適切なのはどれか。
    ア:データに冗長性をもたせ、データ誤りを検出するため
    イ:データの矛盾や重複を排除して、データの維持管理を容易にするため
    ウ:データの文字コードを統一して、データの信頼性と格納効率を向上させるため
    エ:データを可逆圧縮して、アクセス効率を向上させるため

    「ITパスポート試験 平成31年度問92」より改変

    正答はイ。

    特にウとエは、表を分けることと関係ないので必ず消してくださいね。イチイチ覚える必要はありません。


    データベースにおいて売上伝票の表を設計するとき、表を構成するフィールドの関連性を分析し、データの重複・不整合が発生しないように、複数の表に分ける作業はどれか。
    ア:結合 
    イ:射影 
    ウ:正規化 
    エ:排他制御 

    「ITパスポート試験 令和元年度問87」より改変

    正答はウ。>>データベース基本用語Note<< にまとめています。

    • 結合:複数の表から一つの表を作る操作

    • 射影:列を抽出する操作

    • 選択:行を抽出する操作。「選行主婦」と覚えると良き

    • 排他制御:複数のアクセスがあった時にデータベースに矛盾が発生しないように、一つのアクセスを受け入れ、他のアクセスに待ってもらう制御。ロックとも云います。




    正規化された表におけるキー

    最後に、正規化された表でのキーの特性についての問題をしましょう。


    次の社員表において、冗長な項目(列)はどれか。
    社員表(社員番号, 社員名, 生年月日, 現在の満年齢, 住所, 趣味)

    ア:生年月日 イ:現在の満年齢 ウ:住所 エ:趣味

    「ITパスポート試験 令和年度問」より改変

    正答はイ。

    「冗長」とは重複と同じ意味です。転じて、他の項目と同じ、または求めることができる項目と考えます。

    イの年齢は、表中の生年月日と現在日時から計算できます。データベースはコンピュータ上で動いてますからね。ちょっと発想が必要でずるかったかもしれません。

    とはいえ、他の生年月日・住所・趣味を他の項目から求めようがないですから。

    よくあるパターンだと、「単価」列と「購入個数」列があるときに、「購入額」列は要らないですね。(実は、いちいち計算すると処理に時間がかかるので、あえて購入額列を設ける場合もありますが別の話です。)


    以下の5つの条件で従業員表と部門表を作成した。従業員表の主キーはどれか。
    ①各従業員は他人と重複しない従業員番号を一つもつ
    ②同姓同名の従業員がいてもよい
    ③各部門には重複のない部門コードを一つもつ
    ④一つの部門には複数名の従業員が所属する
    ⑤1人のの従業員が所属する部門は一つだけとする
    従業員表(従業員番号, 従業員名, 部門コード, 生年月日, 住所)
    部門表(部門コード, 部門名, 所在地)
    ア:従業員番号
    イ:従業員番号と部門コード
    ウ:従業員名
    エ:部門コード

    「ITパスポート試験 令和4年度問65」より改変

    正答はア。あまり考える必要ないかもですね。

    なおどうしても分からないとき、主キーを名前で選んでもよいですよ。「~番号」「~ID」「~コード」という列名。または、一番左の列でも良いです(複合主キーの可能性もあり)。


    ①~⑤の条件を満たす表を作ってみました。

    画像

    イの従業員名は、②で「同姓同名を許す」ので一意制約を満たしていないので主キーには不適格。

    ウの従業員番号&部門コードは、部門コードなくても主キーになれます。もし⑤が「一人の従業員が複数の部署に配属される」とあれば、従業員番号と部門コードが複合主キーになります。

    エの部門コードでは個人を特定できません。④より一部門には複数の従業員が所属するから。




    まとめ | いよいよ次は計算問題

    復習がてらまとめます。

    特別な役割を持った項目の名前、

    • 主キー:表から一行を特定するための項目

      • 複合主キー:複数の項目で主キーとする

    • 外部キー:別の表と関連付けるための項目

    キーにつけられる制約。

    • 主キー制約:

      • 一意制約(ユニーク制約):他の行との重複を許さない

      • 非NULL制約:空白を許さない

    • 参照制約:外部キーに付ける制約

      • 参照先のデータ「勝手に消さないで!」

    あとは、行や列の別名。

    • 行:レコード

    • 列:フィールド、項目

    次はいよいよ、データベースの結合・正規化の計算問題(未定)を準備しますね。

    \全てのNoteへのリンク集/

    p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。

    でわでわ(・ω・▼)ノシ







    この記事が参加している募集

     
     
    大学・専門学校の先生の解説Note。 学生時代にITパスポート試験・基本情報技術者試験・応用情報技術者試験を独学で高得点合格。情報処理安全確保支援士試験(セキスペ)・データベーススペシャリスト試験・ネットワークスペシャリスト試験・G検定なども取得。 2027年にPD-S受験予定。