どうも。つじけ(tsujikenzo)です。このシリーズでは「ドメインとはなにか」について全3回でお送りします。今日は2回目です。
前回のおさらい
前回は、「ドメインとはなにか(インターネット編)」 ということで、ドメインとは 「ある特定の情報のかたまり」 でした。
今回は、「ドメインとはなにか(データベース編)」 をお送りします。
今回のアジェンダ
- 集合とリレーション
- 非第1正規形と第1正規形
- ドメインとは定義域
集合とリレーション
数学における集合(set)は、ものの集まりのことです。
集合のなかにあるもののことを、元(げん)と呼びます。
集合は、異なる元の集まりです。集合のなかに、元が重複することはありません。
集合である・・・{1,2,3,4,5}
集合ではない・・{1,2,2,3,4,5,5}
リレーショナルデータベースでは、集合のことを「ドメイン」と呼びます。
ドメインとは「定義域」です。ドメインに 異なるドメインの元が混入する ことはありません。
直積集合
ドメインはDi(iは添え字)で表記されます。
ドメインの要素をすべてかけあわせたものを「直積集合」と呼びます。
この直積集合の各元をタプル(tuple)と呼びます。
直積集合の有限部分集合をリレーションと呼びます。ER図の「リレーション」とは別物 なので、区別しましょう。
また、リレーションのタプルの総数を、濃度(cardinality)と呼びます。
リレーションが定義されているドメインの個数を、次数(degree)と呼びます。
リレーションの表表現
このように、リレーションはタプルの集合ですが、リレーションを表として表すことができます。
表はテーブルとも呼ばれますが、列はいま、ドメインを表しているので、列順は重要です。
非第1正規形と第1正規形
これまで、ドメインは集合であること、リレーションはドメインの直積集合の有限部分集合であること、をお伝えしてきました。
ドメインは集合ですので「異なる元の集まり」という性質がありましたが、もう1つルールがあります。
それは、「ドメインはシンプルでなければならない」 ということです。
「シンプルである」ということは、「分解できない」という意味です。
分解できないということは、いくつかのドメインの直積集合であったり、べき集合であってならないということです。
ルール違反をしているドメインの例をみてみましょう。
まずは、ドメイン「社員名」が、タプルになっている例です。
ドメイン「趣味」が、べき集合になっている例もあります。
このように、ルール違反しているリレーションのことを「非第1正規形」と呼びます。
そして、非第1正規形に「ドメインはシンプルでなければならない」というルールを適用することを 「第1正規化」 と呼びます。
第1正規化
直積集合になっているドメインは、それ以上分解できないように、ドメインを分けます。
べき集合になっているドメインは、行を追加することで、解消します。
行を特定するユニークなキーがない、もしくは社員番号[tg001]が表に複数あることが、気持ち悪いかもしれませんが、これは順を追って解消していきます。
ついついやってしまうのが、人間の目で見やすいためか、[趣味1]、[趣味2]、[趣味3]のように、横に伸びるようにドメインを増やしてしまうことです。
これは第1正規化としては、誤りです。
ドメインとは定義域
集合とは、「異なる元の集まりであること」でしたが、ドメインに異なるドメインの要素が入ると、とても気持ち悪いはずです。
正しいドメイン・・・{つじけ,タカハシノリアキ,木下真吾}
気持ち悪いドメイン・{つじけ,41,木下真吾,福岡県,ギター}
それは、ドメインとは定義域 だからです。
わたしたちがよくみかけるテーブルの行は、タプルというドメインの直積の一部であり、テーブルはリレーションというドメインの直積集合の部分集合でした。
タプル・・・{つじけ,31,東京都},{タカハシノリアキ,41,神奈川県}
リレーション・・・[{つじけ,31,東京都},{タカハシノリアキ,41,神奈川県}]
まとめ
以上で、「ドメインとはなにか(データベース編)」 をお送りしました。
リレーショナルデータベースモデルを例に、リレーションの定義からドメインに触れてみました。
インターネット編とも、どこか通ずるものがあったと思います。
次回は、「ドメインとはなにか(ドメイン駆動設計編)」 をお送りします。
参考資料
『リレーショナルデータベース入門』増永良文 著 サイエンス社