基本情報技術者試験対策(21)「なぜデータベースを学ぶのか?」

スポンサーリンク
IT系

データベースとDBMS

初期のコンピュータは、計算を自動的に行うために使われていたが、 現在のコンピュータの用途は、計算だけではない。大量のデータを蓄積したデータベースを実現するためにも使われてる。
そのため、データベースに関する様々な知識が、試験の出題テーマになっている。

データベースは、データの実体である 「ファイル」 と、データを管理 「プログラム」から構成されている。このプログラムをDBMS (DataB Management System=データベース管理システム)と呼ぶ。試験には、DBMSに命令を伝える SQL文や、 DBMSが提供するトランザクション処理などが出題される。
さらに、データベースの設計も、試験の出題テーマになっている。 業務の中にあるデータを図示するE-R図(いーあーるず)や、関係データベース の正規化などが出題される。 現在のデータベースの主流は、データを表形式で格納する関係データベース (relational database) である。 正規化は、表を適切に設計するための理論である。

関係データベースの基礎知識

関係データベースでは、データを表形式で格納する
ハードディスクの中に、あたかも表があるかのように、データの読み書きが行える。
1つのデータベースは、 1つだけの表で構成することも、複数の表で構成することもできる。

1つの表に、1つのデータの集合を格納する。 例えば、社員のデータ「社員表」に格納し、部署の情報を「部署表」に格納する。この場合は、「社員表」と「部署表」という2つの表で、1つのデータベースが構成されることになる。

1つの表は、いくつかの行と列から構成されている。 表には、行単位で データを登録する。 下図は、社員のデータを格納した 「社員表」 である。 ここでは、5行のデータが登録されている。 データベースでは、データを 「件」単位で数えるので、5行のデータのことを、 5 「件」 のデータ、 または 5件の「レコード」 と呼ぶ場合もある。

社員のデータを格納した社員表

表の列には、タイトル欄を付けて、レコードとして登録される項目の名前を書き込む。 このタイトル欄だけを取り出して、表の構成を示すことがある。 試験問題では、下図のように、 項目の名前をA、B、C、D、Eの様に示すこともある。これは、「特に名前は付けないが、 何らかの項目である」という意味である。

表のタイトル欄だけを取り出して表の構成を示す

登録、 読み出し、更新、削除

表に対するデータの読み書きは、 「登録」 「読み出し」 「更新」 「削除」の4つに分類できる登録とは、 新たなレコードを書き込むことである。読み出しとは、既存のレコードを取得することである。 更新とは、既存のレコードの内容を部分的に変更することである。 削除とは、 既存のレコードを消し去ることである。

表に対するデータの操作の種類

  • 登録: 新たなレコードを書き込む
  • 読み出し: 既存のレコードを取得する
  • 更新: 既存のレコードを部分的に変更する
  • 削除: 既存のレコードを消し去る

登録を行うときには、条件を指定しないが、読み出し、更新、削除を行うときには、条件を指定でる。 例えば、先ほどの社員表を読み出す際に、「性別が男である」という条件を指定できる。 条件は、AND演算やOR演算で結び付けることができる。 NOT演算で、 否定することもできる。 データベースを操作するには、 日常生活で使われている表現を、登録、 読み出し、更新、削除という言葉に置き換える必要がある。 例えば、 社員が「入社」することは、社員表への 「登録」 である。 「男性社員の一覧を得る」ことは、社員表の 「読み出し」 である。 佐藤寛雄さんの「給与をアップ」することは、佐藤寛雄さんのレコードの「更新」である。鈴木次郎さんが「退職」することは、鈴木次郎のレコードの「削除」である。

データベースを操作するSQLの命令も、登録、読み出し、更新、削除に分けられている。登録はINSERT命令、読み出しはSELECT命令、更新はUPDATE命令、削除はDELETE命令である。

これらの命令は、表を指定して実行される。関係データベースは、表にデータを格納しているからである。

主キーの役割

関係データベースを構築することは、表を作ることに他ならない。 その際に、必ず守らなければならないルールがある。 それは、 「表には主キーが必要である」 である。 主キー (primary key) とは、他のレコードと同じ値にならないユニークな情報を持つ列のことである。 これまで例にしてきた「社員表」 では、「社員番号」 が主キーである。

もしも、主キーがない 「社員表」を作ったら、 どうなるだろう。 滅多にないことだが、 同姓同名、 同じ性別、 同じ誕生日、 同じ給与の社員が2名いたら、全く同じレコードが2件登録されてしまい、両者を区別できない。 これでは、 データベースが使いものにならない。

同様の理由で、主キーに NULL (ヌル) を登録することはできない。 NULL は、「空(から)」を意味します。この場合も、全く同じ内容のレコードが2件登録されてしまい、両者を区別できない。

従属性

表において「○○が決まれば、 △△が決まる」 ということを従属性と呼ぶ。例えば、社員表には、 「社員番号が決まれば、氏名が決まる」 「 番号が決まれば、性別が決まる」 「社員番号が決まれば、生年月日が決まる」「社員番号が決まれば、給与が決まる」 という従属性がある。

「○○が決まれば、△△が決まる」という従属性は、「○○」から「△△」 に向けた矢印で示す。 下図は、「社員表」の従属性を示したものである。 主キーから、他のすべての列に従属性の矢印が付いている。その他に、余分な矢印はない。 適切な表 (正規化された表) は、 このような従属性になる。

従属性を矢印で示した社員表

リレーションシップ

1つのデータベースが複数の表から構成されている場合は、表から別の表をたどって、目的のデータを取得することがある。このように表と表を関連付けることをリレーションシップ Relationship)と呼ぶ。リレーションシップは、主キーと外部キーによって実現される外部キー (foreign key) とは、別の表の主キーのことである。

例えば、社員のデータを格納した 「社員表」 から、部署のデータを格納した 「部署表」 をたどって、 佐藤寛雄が所属する 「部署名」 を取得するとしよう(下図)。 この場合には、 「社員表」 に、 「部署表」の主キーである 「部署番号」を追加する。 「社員表」 の 「部署番号」 は、別の表の主キーなので、外部キーである。 「社員表」 の佐藤一郎の行を見ると、 「部署番号」が 002であることがわかります。 この002で 「社員表」から「部署表」をたどる と、 「部署名」が 経理部だとわかる。

部署番号を使って社員表から部署表をたどる

参照の整合性

先ほどの図の「部署表」から「部署番号」が002の行を削除すると、どうなるだろう(下図)。「社員表」の佐藤寛雄の「部署番号」 002から、「部署表」の「部署番号」 002をたどれなくなる。
つまり、佐藤寛雄の所属部署が不明ということになってしまう。

DBMSには、このようなことが起きないように、表の更新や削除をチェックする機能がある。 これによって参照の整合性が保たれる。 参照とは、 表から表をたどることである。整合性とは、必ずたどれるという意味である。 そのため、「部署表」から「部署番号」が002の行を削除しようとしても、DBMS が操作を受け付けない。

参考)情報処理教科書 出るとこだけ!基本情報技術者[科目A][科目B]2025年版

コメント

タイトルとURLをコピーしました