関連データモデル

関係データモデル

本稿は「SELECTと集合とActiveRecord」の前段階、SQLで操作されるデータベース管理システムを規定している「関係データモデル」の説明である。

関係データモデルとは?

関係データモデルとは「ドメインをもつ値のタプルの集合である関係としてデータをまとめモデル」のこと。以下、各種用語について説明する。

ドメイン

変数の値域。
関係データモデルが計算機上のシステムであれば「文字列」「時刻」などもドメインとなりうる。

タプル

値の並んだもの。
並んだ値の意味付けは関係スキーマによって別途なされる。

関係

タプルの集合のこと。テーブルともいう。

関係スキーマ

関係名に対する属性名の並びのこと。
関係を表で表した時の一番上の行に対応する。

キー

主キーとも呼ぶ。その値を見るだけで何者かがわかるような属性名集合。当然NULLではない。

具体例

下記の関係(テーブル)について具体的に考える。

名前 勘定科目 耐用年数 取得価格 減価償却累計額 簿価
バイク 車両運搬具 3 300000 100000 200000
事務所 建物 50 10000000 8000000 2000000
株式会社awsedrftgyhujikolp のれん 20 800000000 200000000 600000000

この関係の関係スキーマは(名前,勘定科目,耐用年数,取得原価,減価償却累計額,簿価)であり、(バイク,車両運搬具,3,300000,100000,200000)がタプルの一例となる。
なお、関係スキーマやタプルは横ベクトルであるが、縦ベクトルの(勘定科目,車両運搬具,建物,のれん)などはそのままカラムと呼ばれ、関係スキーマに対応するこの例では「勘定科目」がカラム名と呼ばれる

テーブルの操作

テーブル、すなわち関係の操作は関係演算によって行う。関係演算とは集合演算である。
関係演算には以下の五種類が存在する

  1. 射影 projection
    • 一部のカラム(テーブルを行列と見た時の縦ベクトル)だけを取り出す
  2. 選択 selection
    • 一部のタプル(テーブルを行列と見た時の横ベクトル)だけを取り出す
  3. 和 union
    • 二つのテーブル、すなわち関係を合わせる。
    • テーブル=関係はタプルの集合であるため、二つのテーブルの要素であるタプルすべてを要素に持つ新たな集合を定義する、と言い換えられる
    • 同一の関係スキーマを持つテーブル同士でなければ和の演算は行えない
  4. 直積
    • 二つのテーブルの要素に対しすべての組み合わせの新しいテーブルを作る
      • タプル数nの関係とタプル数mの関係の直積によってタプル数n×mの関係が作られる
  5. 結合
    • 直積を行った後に選択を行う
    • 直感的には、同じキーを持つテーブル同士を一つのテーブルにまとめる。足りないところはNULLになる。

SQLDML(Data Management Language) 

SQLは、関係データモデルの関係演算を集合を意識せずに行えるように設計したプログラミング言語である。関係演算はSQLDMLに対応する。
関係演算との対応は下記の通り

  • SELECT [カラム名]
    • 出力するカラムを規定
    • 射影
  • FROM [テーブル名]
    • 入力するテーブルを規定
    • 直積
  • WHERE
    • 出力に含まれるタプルの条件
    • 選択
      和および結合は直積と選択によって定義可能。

参考文献