【Iパス7問を基礎から】用語問題で粘れるデータベース | 「キー」と「正規化」
データベースのラスボスは正規化(表分け)や結合の計算問題です。
このNoteでは計算問題に備えて、キーや正規化の用語を解説し過去問を解きます。主キーと外部キーを概念、約束事(制約)、過去問を実例図解を交えて解説してみます。
ITパスポートのデータベース問題対策は以下で構成しています。Part4までは用語問題なので、頑張りましょう。
なお、このNoteは私が専門学校で教えてきた指導経験と970点合格をした実績に基づいていますので、ちょっとでも信用してくれたら嬉しいです。
\全てのNoteへのリンク集/
役割のある列 | 主キーと外部キー
データベースの表の列(項目)には、特別な役割があることを学習します。
主キーと主キー制約
外部キーと参照制約
主キーであり外部キーであるケース
複合主キーであるケース
主キーについて
主キーは、その表から1行を引き出すための列です。
主キーには2つの約束事「制約」があります。
一意制約:他の行との重複を許さない
非NULL制約:空白を許さない
以上2つを合わせて「主キー制約」と云います。
外部キーについて
外部キーは、別の表と紐づけるための項目で、他の表の主キーと共通します。
外部キーの約束事は参照制約と云います。参照先(別の表)の項目を勝手に消してしまってはいけないなど、追加や変更に関する約束です。
主キーであり外部キーである場合
主キーであり外部キーである場合もあります。
なお、主キーに下線、外部キーに点線をしますが、主キー&外部キーの場合は下線 にします。よって下線を見たら「主キーだけど、ワンチャン外部キーの可能性も」 と思いましょう。
主キーが複数の列になる場合「複合主キー」
主キーとは、一行を特定できれば良いので、複数の列の組み合わせでもOKです。
例えば、成績表で「学籍番号S001の1年生の時」「~2年制の時」という特定も仕方もありますからね。
キーに関する問題演習
解く前に用語を追加します。
行は、レコードとも云います
列は、フィールドや項目とも云います
以下の問題の太字は、覚えて欲しい言葉・解く時に注目して欲しい言葉です。
正答はエ。一意制約のことですね。
主キー制約は、一意制約と非NULL制約から成ります。
正答はイ。
aは一意制約の通り。dは複合主キーのこと。この時点でイに絞られます。
考えやすいcもお薦め。ユーザーIDなんて数値だけじゃない場合ありますからね。よってcはあり得ないから、アとウは消えます。残りはイとエ。
なおbのインデックスとは、検索を高速化するために設定します。>>データベース基本用語Note<< にて過去問を扱っています。
具体例を考えながら消去法が良いかもしれません。
ア:外部キーにかかっているのは、参照制約
イ:外部キーは一意制約されてないので、重複して大丈夫
ウ:複合主キーのように複数列の組み合わせもできます
イだけ見てみましょう、簡単なので。外部キーに1年1組は複数ありますよね。
正規化について
データベースにおいて、表を適切に分けることを正規化と云います。
一つの表に全てのデータをぶち込むと、大変なのは想像できますよね。例えば、クラス表・成績表などのように表を分けます。
正答はイ。
特にウとエは、表を分けることと関係ないので必ず消してくださいね。イチイチ覚える必要はありません。
正答はウ。>>データベース基本用語Note<< にまとめています。
結合:複数の表から一つの表を作る操作
射影:列を抽出する操作
選択:行を抽出する操作。「選行主婦」と覚えると良き
排他制御:複数のアクセスがあった時にデータベースに矛盾が発生しないように、一つのアクセスを受け入れ、他のアクセスに待ってもらう制御。ロックとも云います。
正規化された表におけるキー
最後に、正規化された表でのキーの特性についての問題をしましょう。
正答はイ。
「冗長」とは重複と同じ意味です。転じて、他の項目と同じ、または求めることができる項目と考えます。
イの年齢は、表中の生年月日と現在日時から計算できます。データベースはコンピュータ上で動いてますからね。ちょっと発想が必要でずるかったかもしれません。
とはいえ、他の生年月日・住所・趣味を他の項目から求めようがないですから。
よくあるパターンだと、「単価」列と「購入個数」列があるときに、「購入額」列は要らないですね。(実は、いちいち計算すると処理に時間がかかるので、あえて購入額列を設ける場合もありますが別の話です。)
正答はア。あまり考える必要ないかもですね。
なおどうしても分からないとき、主キーを名前で選んでもよいですよ。「~番号」「~ID」「~コード」という列名。または、一番左の列でも良いです(複合主キーの可能性もあり)。
①~⑤の条件を満たす表を作ってみました。
イの従業員名は、②で「同姓同名を許す」ので一意制約を満たしていないので主キーには不適格。
ウの従業員番号&部門コードは、部門コードなくても主キーになれます。もし⑤が「一人の従業員が複数の部署に配属される」とあれば、従業員番号と部門コードが複合主キーになります。
エの部門コードでは個人を特定できません。④より一部門には複数の従業員が所属するから。
まとめ | いよいよ次は計算問題
復習がてらまとめます。
特別な役割を持った項目の名前、
主キー:表から一行を特定するための項目
複合主キー:複数の項目で主キーとする
外部キー:別の表と関連付けるための項目
キーにつけられる制約。
主キー制約:
一意制約(ユニーク制約):他の行との重複を許さない
非NULL制約:空白を許さない
参照制約:外部キーに付ける制約
参照先のデータ「勝手に消さないで!」
あとは、行や列の別名。
行:レコード
列:フィールド、項目
次はいよいよ、データベースの結合・正規化の計算問題(未定)を準備しますね。
>>正規化の演習問題対策Note<< ←次どうぞ!
\全てのNoteへのリンク集/
p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。
でわでわ(・ω・▼)ノシ
この記事が参加している募集
学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ