[プログラミング用語]ドメインとはなにか(データベース編)

プログラミング

どうも。つじけ(tsujikenzo)です。このシリーズでは「ドメインとはなにか」について全3回でお送りします。今日は2回目です。

前回のおさらい

前回は、「ドメインとはなにか(インターネット編)」 ということで、ドメインとは 「ある特定の情報のかたまり」 でした。

[プログラミング用語]ドメインとはなにか(インターネット編)
どうも。つじけ(tsujikenzo)です。このシリーズでは「ドメインとはなにか」について全3回でお送りします。今日は1回目です。ドメインってなに?プログラミング学習をしていると、必ず出会う単語のひとつに 「ドメイン」 があります。こ...

今回は、「ドメインとはなにか(データベース編)」 をお送りします。

今回のアジェンダ

  • 集合とリレーション
  • 非第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,神奈川県}]

まとめ

以上で、「ドメインとはなにか(データベース編)」 をお送りしました。

リレーショナルデータベースモデルを例に、リレーションの定義からドメインに触れてみました。

インターネット編とも、どこか通ずるものがあったと思います。

次回は、「ドメインとはなにか(ドメイン駆動設計編)」 をお送りします。

参考資料

『リレーショナルデータベース入門』増永良文 著 サイエンス社

このシリーズの目次

  1. [プログラミング用語]ドメインとはなにか(インターネット編)
  2. [プログラミング用語]ドメインとはなにか(データベース編)
  3. [プログラミング用語]ドメインとはなにか(ドメイン駆動設計編)

タイトルとURLをコピーしました