リレーションと第1正規形
リレーショナルデータベースの特徴
リレーショナルデータベースは,関係データベースやRDB(Relational Data Base)とも呼ばれ, 最も広く利用されるデータベースです. 1968年にリレーショナルデータベースのアイデアが発表され, 現在でもデータベースの主流であることから,その有用性の高さが想像できると思います. 2次元の表形式という直感的で分かりやすいデータ形式でありながらも, 数学の集合論 が基本となっており,厳密なルールで運用されます. 今回は,集合論の概念を用いながら, リレーショナルデータベースがどのように構築されるかを解説します.
リレーションとは
リレーショナルデータベースは,その名の通り, データの リレーション(関係) を記述するためのデータベースです. では,一体,リレーションとは何を表すのでしょうか. 集合論の概念を利用して考えていきましょう.
ドメイン
ドメイン とは,特定の条件を満たす 要素(元) から構成される集合のことです. 例えば,名前の集合,電話番号の集合は,それぞれドメインです. 一般に,ドメインは $D_i$ で表現されます.
$$ D_1 = \left( 高谷舞衣,福岡豊樹,西村朱音 \right) $$
$$ D_2 = \left( 0786857519,0265723899,0178189244 \right) $$
この他にも,アルファベットの集合や,整数の集合もドメインと考えることができます. ここでは,有限集合のみを対象としていますが,無限集合でも問題ありません.
$$ D_3 = \left( a, b, c \right) $$
$$ D_4 = \left( 1, 2, 3, 4, 5 \right) $$
ドメインの直積
ドメインを対象として,直積 という演算が定義されます. 直積は $D_1 \times D_2$ のように表現され, 各ドメインから一つずつ要素を取り出して組にした新たなドメインになります. $D_1$と$D_2$の直積の場合,新たなドメインの要素数は$3 \times 3 = 9$ です.
$ D_1 \times D_2 = \{ $
$(高谷舞衣,0786857519),(高谷舞衣,0265723899),(高谷舞衣,0178189244),$
$(福岡豊樹,0786857519),(福岡豊樹,0265723899),(福岡豊樹,0178189244),$
$(西村朱音,0786857519),(西村朱音,0265723899),(西村朱音,0178189244)$
$ \} $
このとき,直積集合の要素は タプル(レコード) と呼ばれます. 例えば,$(高谷舞衣,0786857519)$ はタプルです.
例題1
下記のドメインの直積$D_1 \times D_2 \times D_3$を求めよ. $$ D_1 = \left( a, b \right) $$ $$ D_2 = \left( 1, 2, 3 \right) $$ $$ D_3 = \left( a, b \right) $$
リレーション
有限個のドメイン$D_1,D_2,\cdots,D_n$があるとき, これらの直積$D_1 \times D_2 \times \cdots \times D_n$の 任意の部分集合を リレーション と呼びます. 一般にリレーションは$R$で表現されます.
$$ R \subseteq D_1 \times D_2 \times \cdots \times D_n $$
例えば,上述の$D_1 \times D_2$において, 下記の3つのタプルからなる集合はリレーションとなります. このとき,リレーションに含まれるタプルの総数を 濃度, また,タプルを構成する要素数を 次数 と呼びます. ここでは,濃度は3,次数は2となります.
$$ R = \left\{ (高谷舞衣,0786857519),(福岡豊樹,0265723899),(西村朱音,0178189244) \right\} $$
直積はドメインから構成可能な 全ての組み合わせ を表すのに対し, リレーションはその全ての中から実在する(意味のある)タプルだけを 抽出した 実在する組み合わせと考えることができます.
リレーションと表
さて,リレーションの定義は分かりましたね. リレーションはリレーショナルデータベースとどのように関係するのでしょうか. 実はリレーションは 表(テーブル) と一致します. リレーションは表形式で表すと下記のようになります.
高谷舞衣 | 0786857519 |
福岡豊樹 | 0265723899 |
西村朱音 | 0178189244 |
これだけでは何だか寂しいですね. リレーションの基になっているドメイン名(氏名,電話番号)を表に付け加えましょう. これは 属性名(列名) と呼ばれます.
氏名 | 電話番号 |
---|---|
高谷舞衣 | 0786857519 |
福岡豊樹 | 0265723899 |
西村朱音 | 0178189244 |
最後に表全体にも「アドレス帳」と名前を付けることにします. これは リレーション名(テーブル名) と呼ばれます.
氏名 | 電話番号 |
---|---|
高谷舞衣 | 0786857519 |
福岡豊樹 | 0265723899 |
西村朱音 | 0178189244 |
【アドレス帳】
このようにリレーションに属性名とリレーション名を付与した 表(テーブル)がリレーショナルデータベースの実態です.
例題2
下記のリレーションを表形式で表せ. また,適切な属性名とリレーション名を考えなさい. $$ R = \left \{ (米津玄師, 馬と鹿, 250円),(LiSA,紅蓮華,250円),(miwa,リブート,400円) \right \} $$
第1正規形
リレーショナルデータベースは考えなしに設計してしまうと, データが冗長になったり,不整合が発生してしまうことがあります. これを解決するのが,正規形 と呼ばれるリレーションを制約するためのルールです. 正規形には,第1正規形〜第5正規形,また,ボイス・コッド正規形があります. 数字が増えるごとに制約の条件は厳しくなりますが, 一般に第3正規形までを満たしていれば運用には問題ないと判断されます. 今回は最も緩い制約である 第1正規形(First Normal Form: 1NF) に関して解説します. 第1正規形であるための条件は下記です.
第1正規形
リレーション$R=(A_1, A_2, \cdots, A_n)$の各ドメインがシンプルであるとき第1正規形であるという.
まずは,第1正規形を満たしていないリレーション【学生名簿】を考えてみます. このリレーションには,第1正規形を満たしていない箇所が含まれています. どこに問題があるか考えてみましょう.
氏名 | 所属 | 趣味 |
---|---|---|
岩城隼人 | (工学部,機械工学科) | サッカー |
岩村優 | (工学部,情報工学科) | テニス,読書 |
杉江弘子 | (人文学部,心理学科) | 読書 |
仙波あすか | (国際関係学部,国際学科) | テニス,映画鑑賞 |
【学生名簿(非第1正規形)】
ドメインが シンプル であるとはどういうことでしょうか. つまりは,ドメインが 複数のドメインの直積 であることや あるドメインのべき集合 であることが禁止されているということです.
ケース1:直積の場合
まずは,所属の列に注目してみましょう. ここで,学部を表すドメイン$D_1$と,学科を表すドメイン$D_2$を下記のように定義することにします.
$$D_1 = (工学部,人文学部,国際関係学部)$$ $$D_2 = (機械工学科, 情報工学科, 心理学科, 国際学科)$$
所属の列の要素は,これらのドメインの直積$D_1 \times D_2$で与えられています. 例えば,$(工学部,機械工学科)$は,$D_1$の要素である工学部と,$D_2$の要素である機械工学科を組み合わせた表現になっています. これは,第1正規形の条件を満たしていません.
ケース2:べき集合の場合
次に,趣味の列に注目してみましょう. ここで,趣味を表すドメイン$D_3$を下記のように定義することにします.
$$D_3 = (サッカー,テニス,読書,映画鑑賞)$$
趣味の列の要素は,このドメイン$D_3$のべき集合(部分集合を要素とする集合)で与えられています. 例えば,$(テニス,読書)$は,$D_3$の部分集合の一つです. これも,第1正規形の条件を満たしていません.
正規化
非正規形から正規形に変形することを 正規化 と呼びます. ここでは,第1正規形になるように変形しましょう. 直積の場合は 直積前のドメインに分割します. 例えば,$(工学部, 機械工学科)$は,$工学部$と$機械工学科$の2列に分けます. また,べき集合の場合は,要素の数だけタプルを複製します. 例えば,$(テニス,読書)$は,$岩村優$のタプルを2つに複製し,$テニス$と$読書$をそれぞれ設定します. この結果,リレーション【学生名簿】は第1正規形を満たします.
氏名 | 学部 | 学科 | 趣味 |
---|---|---|---|
岩城隼人 | 工学部 | 機械工学科 | サッカー |
岩村優 | 工学部 | 情報工学科 | テニス |
岩村優 | 工学部 | 情報工学科 | 読書 |
杉江弘子 | 人文学部 | 心理学科 | 読書 |
仙波あすか | 国際関係学部 | 国際学科 | テニス |
仙波あすか | 国際関係学部 | 国際学科 | 映画鑑賞 |
【学生名簿(第1正規形)】
例題3
下記のリレーション【取引銀行】を第1正規形に変形せよ.
銀行 | 電話番号 | 貯金額 |
---|---|---|
(愛知銀行,春日井支店) | 052-123-1111, 052-123-2222 | 100,000円 |
(愛知銀行,大曽根支店) | 052-123-3333 | 200,000円 |
(大垣共立銀行,名古屋支店) | 052-123-4444,052-123-5555 | 300,000円 |