基本情報技術者のデータベースのまとめです。
今回は、関係データベース、主キー、外部キー、正規化についてまとめていきます。
関係データベース
DBMS(Data Base Management System)
DBMS(データベース管理システム)はデータベースの定義や操作、制御をするミドルウェアです。
データベースには代表的な種類が3つあります。
- 関係型:データを表で管理する
- 階層型:データを階層で管理する
- ネットワーク型:データを網状に管理する
この中でも関係型が現在の主流です。
関係データベース
関係データベースは表の形でデータを管理していきます。
上の図のような形でデータを管理しています。
縦を「列」、横を「行」と言います。データ一件が一つの行として記録されていきます。そして、追加や削除なども基本的に行単位でやっていきます。
表の構成としては下のようになります。
- 表(テーブル):データを収容する場所
- 行(レコード、タプル):一件分のデータを表す
- 列(フィールド、属性):各項目を表す
関係演算とビュー表
表の中から特定の行や列を取り出したり、表と表をくっつけたりして新しく表を作り出すために使う演算のことを、関係演算と言います。関係演算には、「選択」「射影」「結合」などがあります。
- 選択:表の中から特定の条件に合致する行を取り出すことができます。
- 射影:表の中から特定の条件に合致する列を取り出すことができます。
- 結合:表の中にある共通の列を介して、2つの表をくっつけることができます。
関係演算を用いるとデータを使って様々な表を作ることができます。このようにして仮想的に作った一時的な表のことをビュー表と呼びます。
スキーマ
データベースの構造や仕様を定義するものを、スキーマと言います。標準で使用されている規格では、3層スキーマ構造をとっており、「外部スキーマ」「概念スキーマ」「内部スキーマ」という3層に定義を分けることで、データの独立性を高めています。
- 外部スキーマ:ユーザが利用する必要なデータだけを表現します。ビュー表はこれに該当します。
- 概念スキーマ:データベース本体。プログラムやハードウェアから切り離されているため、データの独立性を保っています。
- 内部スキーマ:物理的にどう記憶させるかの定義。ハードウェア的な変更は、このスキーマで影響を吸収します。
主キー、外部キー、正規化
主キーと外部キー
表の中で各行を識別するために使う列を主キーと言います。主キーの条件は「表の中で重複しない」「空でない」の2つです。例としては、学生番号や、社員番号などです。また、1つの列では1つに定まらないけど、複数の列を組み合わせることで主キーとしたものを複合キーと言います。例えば、学年、組、出席番号などは一つ一つでは、一人を特定できませんが、3つ合わさると一人に特定できます。
また、表と表をつなげる時に使うものを外部キーと呼びます。
上の表の場合、緑色の部分は主キーとなり、オレンジの部分は外部キーとなります。外部キーであるfaculty_idは、学部の表の中にあるidを参照しています。
正規化
データに矛盾や重複がないようにすることを正規化と呼びます。正規化を見る前にまず、関係従属と部分関係従属について説明していきます。
- 関係従属:主キー(複合キー含む)が決まると列の値が一つに決まる関係。例:名前は学生番号に関係従属する。
- 部分関係従属:複合キーの一部の項目で関係従属の関係にあるもの。
この二つについては実際の表を見ながらの方が分かりやすいので、下の正規化の図を見てください。
では、正規化について見ていきます。
・非正規形:正規化が行われていない表。表の中に重複が含まれています。
上の図のオレンジの部分のように、表の中に重複部分が含まれています。
・第1正規形:非正規形から重複部分を分離させた表。
上の図の水色の部分のように、非正規形の表から重複した部分を切り離し、独立したレコードとして挿入します。また、金額のような計算で求められる列は削除します。
・第2正規形:第1正規形の表から部分関係従属している列を分離させた表。
上の図のように、先ほどの第1正規形の表は、緑の列は黄色の列に部分関係従属していて、水色の列はオレンジの列に部分関係従属しています。なので、下の図のように表を分離させることで、第2正規形になります。
・第3正規形:第2正規形の表から関係従属している列を分離させた表。
上の図のように、第2正規形の表では、水色の列がオレンジの列に関係従属しています。つまり、水色の列は注文番号ではなく、ユーザーIDを主キーとしています。よって、この部分を下の図のように分離します。この表の形が第3正規形です。
以上が、データベースの関係データベース、主キー、外部キー、正規化のまとめでした。