はじめに
RDB(リレーショナル・データ・ベース)のRは英語のrelation(関係)から来ています。
「このrelationはテーブル同士の関連(外部制約)ではなく、集合のことである」という雑学(?)があります。
RDBで大事なのはテーブルを集合として考えることである、という警句でもあります。
英語のrelationに集合的な意味はないのに、なんで集合なんでしょう?
本記事ではrelationとは一体どういった意味なのかをリレーショナルモデルから説明します。
Relationの定義
relation(関係)の数学的な定義をみてみます。
定義(直積集合)
A,Bを集合として、 A\times B = \{(a,b)|a \in A, b\in B\}を集合AとBの直積集合という。
定義(関係)
A,Bを集合として、AとBの直積集合(A\times B)の任意の部分集合RをAからBへの関係という。
噛み砕くと、集合A,Bのすべての要素を組み合せた直積集合{(a,b)}に含まれる任意の集合のことをrelation(関係)といいます。
関係の定義だけでは、イメージがわかないので具体的をみてみます。
リレーションの具体例
具体的な2つの集合を考えます。Aを名前の集合、Bを整数の集合とします。
ことき直積集合 $A\times B$は {(田中,1),(山田, 5), ...}のように名前と整数を組み合せた集合となります。
関係Rは直積集合の任意の部分集合なので、(名前, 整数)の組み合せから好きなものを集めてみます。
R = { (川端康成, 1968),(大江健三郎, 1994) }
私が好きに選んだ組み合せですが、なんだか恣意的な人名が選ばれています。
川端康成は1968年、大江健三郎は1994年にノーベル文学賞を受賞した小説家です。
私が定義した名前から整数への関係Rは、「(日本人の)ノーベル文学賞受賞者の名前と受賞年」の関係です。
つまり、relation(関係)というのは、2つの集合からある関係をみたす要素を集めた集合と考えることができます。
RDBとの関係
ここで、関係Rを少し拡張してみます。
あらたな集合Cを任意の文字列の集合としましょう。RとCの直積集合 $R \times C$ を考えます。
すると新しく関係R'が定義できて
R' = {
(川端康成, 1968, 『伊豆の踊子』『雪国』など、日本人の心情の本質を描いた),
(大江健三郎, 1994, 『個人的な体験』『万延元年のフットボール』など、現実と虚構が一体となった世界を創作した)
}
と定義することができます。任意の文字列から選んできたのは受賞理由です。(本当はもっと長いけど見にくいので短くしました)
この関係を表にしてみます。
受賞者名 | 受賞年 | 理由 |
---|---|---|
川端康成 | 1968 | 『伊豆の踊子』『雪国』など、日本人の心情の本質を描いた |
大江健三郎 | 1994 | 『個人的な体験』『万延元年のフットボール』など、現実と虚構が一体となった世界を創作した |
(受賞者名, 受賞年, 理由)というタイトルは私が付けましたが、これを属性名といいます。
そして、この関係はノーベル文学賞という関係性において私がA, B, Cの集合から抜き出したものです。よってこの関係R'にノーベル文学賞という名前を付けてみます。これをリレーション名といいます。
RDBの言葉で表現すると、relation(関係)はノーベル文学賞テーブル、属性はカラム名(受賞者名, 受賞年, 理由)に対応することになります。
本当の雑学
RDBの元となったリレーショナルデータモデルの創始者コッドさんは、なぜrelationalなのかについて、当時緊張関係にあった米中関係のrelationからとったという本当なのか冗談なのかわからない話が、『リレーショナルデータベース入門』(サイエンス社)に書いてありました。
リレーショナルデータモデルとRDBの関係性をもっと知りたい方はぜひ読んでみてください。
参考
- 『リレーショナルデータベース入門』(サイエンス社)
- 日本人のノーベル賞受賞者