・テーブル:関係データベースの表のこと
・フィールド:テーブルの縦の列
・レコード:テーブルの横の行
・主キー:1つのレコードを特定できるフィールド
[関連用語]一意性制約、NOT NULL制約
・外部キー:複数のテーブルを関係づけるフィールド
[関連用語]参照制約
データベース設計
データベース設計に関連する用語として、「テーブル/フィールド/レコード」「主キー」「外部キー」について解説をします。
テーブル/フィールド/レコード
関係データベース(RDB:リレーショナルデータベース)では、表形式でデータを整理します。この表自体のことをテーブルと呼びます。
また、テーブルの縦の列をフィールド(項目)、横の行をレコードといいます。
上の表は、各社員の「社員番号」「社員名」および「所属の支店番号」「支店名」を整理した表です。この表を「社員テーブル」とします。
この「社員テーブル」の「社員番号」「社員名」「所属の支店番号」「支店名」の各列がフィールドです。項目自体の名称はフィールド名(項目名)と呼びます。
更に、「社員テーブル」では、各社員の情報は1つの行で整理されています。例えば、2行目の「社員番号:0002」は、「社員名:山田」で「支店番号:02」の「支店名:神奈川支店」に所属することが分かります。この1行がレコードになります。
このように、関係データベースは、テーブルと呼ばれる表形式で整理し、縦の列のフィールドと横の行のレコードから構成されます。
主キー
主キーとは、テーブルの1つのレコードを特定できるフィールドです。主キーはテーブルに1つだけ設定できます。また、複数のフィールドで1つの主キーとすることもできます。
例えば、上のテーブルでは、「社員番号」のフィールドで社員と所属する支店を特定できるので、「社員番号」が主キーになります。
主キーは、「一意性制約」と「NOT NULL制約」の2つの制約を満たす必要があります。
主キーの値が重複しない
・NOT NULL制約
主キーの値にNULLがない
一意性制約とは、主キーの値が重複しないことです。例えば、「社員番号:0003」が重複している場合を考えます。社員番号「0003」のレコードを選択した場合、「佐藤」と「斉藤」の2名(2つのレコード)が特定されます。
主キーは、1つのレコードを特定するので、テーブル内で値が重複しない一意性制約を満たす必要があります。
さらに、主キーの値は、NULL(空白)ではいけない、NOT NULL制約も満たさなければなりません。
このように、テーブルの1つのレコード(行)を特定できるフィールド(項目)を主キーと呼び、「一意性制約」と「NOT NULL制約」を満たす必要があります。
外部キー
外部キーとは、複数のテーブルを関係付けるフィールドです。1つのテーブルに複数設定できます。
2つの表で考えると、「社員テーブル」の「支店番号」のフィールドで、「支店テーブル」を紐づけ、支店名が分かります。つまり、「社員テーブル」の「支店番号」のフィールドは、外部キーになります。また、「支店テーブル」の「支店番号」は主キーです。
外部キーは、「参照制約」を満たす必要があります。
外部キーの値が、関係づけるテーブル(表)の主キーの値に存在する
例えば、「社員テーブル」の「支店番号:48」というレコードがあると仮定します。しかし、「支店テーブル」には、「支店番号:48」は存在しないため、2つのテーブルを関係づけられません。したがい、外部キーの値が関係づけるテーブルの主キーに存在する必要があり、このことを参照制約と呼びます。
このように、複数のテーブルを関係付けるフィールドを外部キーと呼び、「参照制約」を満たす必要があります。
[補足]インデックス
インデックスは、日本語で索引といいます。索引の本来の意味は、書籍に出てくる用語を五十音順で並べたものです。索引により、用語の検索が容易になります。
データベースも同じ考え方があり、検索を高速化するためのテーブルをインデックス(索引)といいます。
例えば、「社員テーブル」の「社員名:相内」のレコードを検索する場合、上から順番に1つずつ確認するので、時間がかかります。
続いて、インデックスとして、社員名を五十音順に並べたテーブルを用意した場合を考えます。
「社員名:相内」なので、インデックスの「あ行」から検索します。インデックスの検索結果より、「社員名:相内」は「社員番号:9999」と判明します。この検索結果から、「社員番号:9999」を「社員テーブル」で検索し、レコードを特定できます。
このように、データベースのレコードを効率的に検索するためのテーブルがインデックスです。
【まとめ】テーブル/レコード/フィールド/主キー/外部キー
それでは最後におさらいをしておきましょう!
用語 | 説明 |
---|---|
テーブル | 関係データベースの表のこと |
フィールド | テーブルの縦の列 |
レコード | テーブルの横の行 |
主キー | 1つのレコードを特定するフィールド テーブルに1つだけ設定 複数のフィールドで主キーとしてもよい |
一意性制約 | テーブル内で主キーの値が重複しない |
NOT NULL制約 | 主キーの値にNULLがない |
外部キー | 複数のテーブルを関係づけるフィールド テーブルに複数設定できる |
参照制約 | 外部キーの値が、関係づけるテーブルの主キーの値に存在する |
インデックス | 検索を高速化するためのテーブル |
コメント