【データベース】基本のまとめ | 初心者向け

今回は、システム開発をおこなううえで重要な「データベース」についてまとめました。

初心者向けの簡単な内容となっていますので、ぜひ最後までお読みください!

1. データベースとは


データベースとは、整理された情報の集まりのことです。

情報(データ)はバラバラな場所にあってもうまく活用できません。

情報を集めて整理することで、初めて活用することができます。

1-1. データモデルとは

データモデルとは、現実世界の複雑なデータを抽象化して、相互関係を分かりやすくした図のことです。

データモデルを作成することを「データモデリング」といいます。


データモデルには、以下のようなものがあります。

・関係データモデル(関係モデル、リレーショナルモデル)
・階層型データモデル
・ネットワーク型データモデル


今回は、関係データモデルについて詳しく解説していきます。

2. 関係データモデル


関係データモデル(関係モデル、リレーショナルモデル)とは、データの集まりを表であらわすデータモデルのことです。

表とは、ExcelやGoogleスプレッドシートのような形です。

表(テーブル)は、レコード(行)とカラム(列)を持ちます。

2-1. 主キーとは

主キーとは、テーブルの中から特定のレコードを識別するためのカラムのことです。

主キーになれるカラム

主キーになるためには、以下の条件を満たす必要があります。

・重複する値がない
・データがNULL(空)ではない

2-2. 複合主キーとは

複合主キーとは、テーブルの主キーを複数のカラムの組み合わせとして定義することです。

テーブル内に主キーの条件を満たすカラムがないとき、複合主キーを使用します。

2-3. 外部キーとは

外部キーとは、親テーブルに存在しないデータを子テーブルが持つことがないようにするための制約のことです。

2-4. 候補キーとは

候補キーとは、テーブル内ですべてのレコードを一意に識別することができるカラムの組み合わせのことです。

参照整合性(参照一貫性)とは

参照整合性(参照一貫性)とは、外部キーの参照先のレコードが、矛盾のない状態で存在していることです。

また、外部キーの参照先のレコードがない状態を「参照整合性がない」といいます。

関係データモデルでは、参照整合性がなくなるデータ操作はできません。

3. ER図


ER図(Entity Relationship Diagram)とは、データの関係性を「エンティティ(実体)」と「リレーションシップ(関連)」という2つの概念であらわした図のことです。

ER図は、データベースを設計する際の設計書として頻繁に利用されています。

3-1. 多重度

多重度とは、それぞれのエンティティが「何個の関連を持つか」あらわしたもののことです。

多重度は、「カーディナリティ」とも呼ばれます。


ER図で使用される多重度には、以下のようなものがあります。

・1対1
・1対多(1対N)
・多対多(N対M)

1対1

多重度が「1対1」の例には以下のようなものがあります。

・「会社」と「社長」:
1つの会社に社長は1人だけ存在し、社長は1つの会社にのみ所属します

1対多

多重度が「1対多」の例には以下のようなものがあります。

・「会社」と「従業員」:
1人の従業員は1つの会社に所属し、1つの会社に従業員は複数存在します

多対多

多重度が「多対多」の例には以下のようなものがあります。

・「従業員」と「プロジェクト」:
1人の従業員は複数のプロジェクトを担当し、1つのプロジェクトを複数の従業員が担当します

4. 正規化


正規化とは、データベース設計の工程において、同じテーブル内のデータの重複をなくすために、データを分割したり整理したりすることです。

正規化の目的を言い換えると、以下のようになります。

・テーブルのすべての関数従属から、「部分従属」と「推移的関数従属」を取り除き、「完全関数従属」だけを残すこと


さて、「関数従属」「部分従属」「推移的関数従属」「完全関数従属」とはなんでしょうか。

順番に解説していきます。

4-1. 関数従属

関数従属とは、2つの属性の間で片方の値を決定すると、もう一方の値が一意に決まるという性質のことです。

たとえば、「社員ID」を決定すれば「氏名」は一意に決まります。このとき、「氏名は社員IDに関数従属している」といえます。


関数従属には、以下の3つの種類があります。

・部分関数従属
・推移的関数従属
・完全関数従属


順番に解説していきます。

部分関数従属

部分関数従属とは、ある属性が候補キーの一部に関数従属している状態のことです。

推移的関数従属

推移的関数従属とは、ある属性が主キー以外の属性に関数従属している状態のことです。

完全関数従属

完全関数従属とは、候補キーの一部ではなく、すべてに対して関数従属している状態のことです。

部分関数従属性がない状態ともいえます。

5. 正規化の手順

正規化には手順があります。その前に、「非正規形」とは何か見ていきましょう。

5-1. 非正規形

非正規形とは、属性に繰り返しがある状態のことです。

「正規化をおこなう前の状態」ともいえます。

5-2. 第一正規化

第一正規化とは、属性の繰り返しがない状態にすることです。

第一正規化した状態を「第一正規形」といいます。

非正規形のテーブルを第一正規形にするには、レコードを追加して属性の繰り返しをなくします。

5-3. 第二正規化

第二正規化とは、部分関数従属がない状態にすることです。

第二正規化した状態を「第二正規形」といいます。

第一正規形のテーブルを第二正規形にするには、テーブルを分割して部分関数従属をなくします。

5-4. 第三正規化

第三正規化とは、推移的関数従属がない状態にすることです。

第三正規化した状態を「第三正規形」といいます。

第二正規形のテーブルを第三正規形にするには、テーブルを分割して推移的関数従属をなくします。

6. その他のデータモデル

階層型データモデル、ネットワーク型データモデルについても、少しだけ解説します。

6-1. 階層型データモデル

階層型データモデルとは、データを木構造で表したデータモデルのことです。

階層型データモデルの例には、「会社の組織図」などがあります。

6-2. ネットワーク型データモデル

ネットワーク型データモデルとは、データが網の目の形で表現されたデータモデルのことです。

それぞれのデータ単位(ノード)が繋がっていることから、ネットワーク型データモデルと呼ばれています。

7. おわりに


今回は、データベースの基礎についてまとめました。

データベースは、システム開発をするうえで欠かせないものです。

「もっと知りたい!」という方は、ぜひ参考記事を読んだり、ご自身で調べてみたりしてください。

参考記事

https://www.quackit.com/database/tutorial/about_database_tables.cfm

https://www.tutorialspoint.com/dbms/er_diagram_representation.htm