8-2 関係データベースの基礎と主キー

関係データベースの基礎

 関係データベースでは、行と列からなる2次元の関係表を用いて、各データの内容や相互関係を整理します。この表を、リレーション(関係またはテーブル)と呼びます。
 関係データベースの表は、次のような要素から構成されています。

 各行の値を、属性値といいます。また属性値が取り得る値の集合をドメイン(定義域)といいます。

 

主キー

主キー(primary key)」とは、レコードを一意に識別するためのキーのことです。

10002は一件だけで、それぞれの人や物を一意(ひとつしかない)に識別するためのものが主キーです。

主キーに含まれる列をキー項目とよび、
主キー以外の列(A〜D)のことを非キー項目と呼びます。

主キー制約

主キーは、一意に識別するものなので次のような制約があります

  • 一意性制約(UNIQUE制約)
    同じ値を持つ行は存在してはならない(値によって完全に区別できる)
  • 非ナル制約
    値がナル(空値、NULL)となってはいけない

 

外部キー

外部キー(FOREIGN KEY)とは、別の表に関連付けるために設定する列のことです。データの整合性をデータベースに保証させるために利用します。

 例えば、従業員テーブルに「従業員番号、部署番号、姓、名」の項目があるとして、部署テーブルの「部署番号」関連づけしたい場合に外部キーを利用します。

参照性制約

 データベースの整合性を保つために、外部キーには、次の参照制約(外部キー制約)が課せられます。

  • 参照性制約 外部キーの値あが、参照先の表に必ず存在すること

 参照制約によって、行の追加や削除が制限を受けることがあります。
例えば、社員表と部署表と間に参照制約が課せられているとき次のような制限されます。

  1. 「部署表に存在しない部署コード」を持つ社員を社員表に追加できない
  2. 社員がいる部署を、部署表から削除できない
  3. 社員表の部署コードの値は、部署表に存在する値しか変更できない

 

E-R図とテーブル構造

主キーと外部キーの関連は、「1:多」となり、外部キー側が「多」となります。

部署と社員という実体の関係を表している。
1つの部署には、複数の社員が所属している。

「多対多」の関連には双方に外部キーが必要となり、関係データベースでの実現は難しくなります。そこで「多対多」の関連を「1対多」になるように整理しなければなりません。

例えば、1人の社員が複数の部署に所属することがあるとします。
このような場合は、「所属」するという関連そのものをあらわすエンティティ(連関エンティティ)を定義し表現することになります。