関係データベース
関係データベースは、データを複数の表で管理するデータベース。
SQL(Structured Query Language)という言語を用いて、次のような操作を行うよ。
選択 | 指定した行を抽出する。 |
射影 | 指定した列を抽出する。 |
結合 | 複数の表を1つの表にする。 |
表をテーブル、列をフィールド、行をレコードともいう。
表を結合することにより、CPUやメモリの消費を抑え、速く処理することができるようになる。
主キーと外部キー
全ての表には、必ず主キー(Primary Key)を設定する。
主キーは、表の中で特定の行を識別するための列のこと。次の制約があるよ。
- 一意性制約:他の値と重複しない
- NOT NULL制約:空の値(NULL)がない
複合主キーは、複数の列を主キーに設定したもの。1つの列では特定の行を識別できない場合に用いるよ。
外部キーは、他の表の主キーを参照する列のこと。次の制約があるよ。
- 参照制約:外部キーの値が被参照表に存在する
正規化
関係データベースを作成する際、正規化という作業を行う。
正規化は、表を分割して整理すること。重複したデータを取り除くよ。
正規化前は、色を付けた部分のように、部署番号と部署名で重複している値がある。
正規化後は、表を分割して整理したので、重複した値がないよ。
冗長
正規化の過程で、冗長な列は排除するようにする。冗長は、余分や無駄という意味。
例えば、次のような表を作成するとする。
社員番号 | 名前 | 生年月日 | 性別 | 年齢 | 保有資格 |
---|---|---|---|---|---|
001 | 田辺 淳 | 平成1年2月12日 | 男 | 33歳 | ITパスポート |
002 | 秋山 麗 | 平成3年9月23日 | 女 | 31歳 | 基本情報技術者 |
003 | 加藤 太一 | 平成4年1月30日 | 男 | 30歳 | 基本情報技術者 |
この場合、冗長な列は年齢になる。 年齢は、現在の日付から生年月日を引くことで分かるためだよ。