今回は、システム開発をおこなううえで重要な「データベース」についてまとめました。
初心者向けの簡単な内容となっていますので、ぜひ最後までお読みください!
【データベース】基本のまとめ | 初心者向け
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