新ERモデル 2

RDBもERモデルもズレているところがある。

  1. 「実体」は、実体の母集合〈population | parent set〉、実体の状態〈インスタンス〉、母集合の要素、状態の要素、そして実体名のどれだか分からない。
  2. 実体の状態は、母集合の部分集合だから、1からの関係、または1への関係として定義できる。つまり、実体状態は関係。
  3. 関係も母集合を持つが、それは関係のプロファイルとしてエンコードされる。
  4. Rel(1, A) \stackrel{\sim}{=} Pow(A)、Rel(A, B) \stackrel{\sim}{=} Pow(A×B) をよく理解すべき。
  5. 部分集合=一項関係も二項関係とみなせる。
  6. 三項関係も二項関係とみなせる。ただし、みなし方が三種類あり、それらは結合律子と単位律子で繋がっている。
  7. ドメイン=値の基本型と、実体の母集合は区別すべき。
  8. 仮に、新ERモデルからできる圏をER圏と呼ぶと、ER圏の生成系を決めるのが設計。
  9. ドメインの集合と実体母集合の集合でER圏の大枠は決まる。
  10. ER圏の対象は、ドメインまたは実体母集合から直積ペアリング/タプリングで生成される。
  11. そのなかで、ドメインだけから作られた対象達と、平坦な対象達が、部分クラスとしてある。ドメインだけから作られた平坦な対象が、RDBでは使われる。
  12. テーブルは関係〈関連インスタンス〉であって、ターゲット対象がドメインだけからなる平坦な対象であるもの。
  13. テーブルの全体は、部分圏にはならないので、独自の計算が必要。
  14. テーブルの計算体系は、直積(これは関係の直積)と、ジョインからなる。関数結合もテーブル計算のなかで使ってよい。
  15. 関係圏またはテーブル系のなかで、独立性と生成性を問題にする。線形代数の線形独立性〈一次独立性〉と生成性と似てる。
  16. ER圏の部分集合Σ(対象と射の部分集合)に対して、対象または射が独立とは、Σで生成された圏に入らないこと。独立でないなら従属。
  17. ER圏の部分集合Σが生成的とは、Σで生成された圏がもとの圏に一致すること。

制約は次のように記述する。

  1. Rが関係のとき、univalent(R) は制約として意味を持つ。
  2. Rが関係のとき、Def(R)⊆Src(R), Img(R)⊆Trg(R) は集合値の項としてよい。
  3. 集合値の項のあいだの包含関係は制約として意味を持つ。

これでだいたい記述できるだろ。

Dが《ドメイン》として、Rel(1, D) の要素SはDの部分集合を表すので、Img(S)⊆D と同一視できる。R:X→D in Rel のとき、Img(R)⊆Img(S) はRのドメイン制約〈ドメイン条件制約〉となる。

実体状態EのキーKに対する主キー制約は:

  1. Img(E)⊆Def(K)
  2. univalent(K)

参照整合性制約は、R:X→Yで、Yの状態 B:1→Y があるとき、

  • Img(F)⊆Img(B)

以上に挙げた、ドメイン条件制約、主キー制約、参照整合性制約は、Img, Def, univalentで書ける。univalentは、転置と結合と恒等関係のあいだの包含関係で書ける。DefとImgは、どちらか片方があれば転置で書ける。結局、転置、結合、恒等、Def(定義域)があればよい。

肝心な事は:

  1. ちゃんとした制約記述言語を使って、制約を明示的に書き出す。
  2. 実体状態や、ドメインの部分集合も関係だと認識する。1が重要。
  3. 変更〈mutation〉により、制約が破られることがある。それにどう対処するかは別問題。制約違反〈異常 | 矛盾〉を阻止するのか検出・報告するのかは設計判断。
  4. 圏の部分集合〈指標 | スキーマ〉の生成性を理解する。
  5. 圏の部分集合〈指標 | スキーマ〉と、ひとつの対象・射の独立性を理解する。
  6. 圏の計算とテーブルの計算が違うことを認識し、対応関係を理解する。

ERスキーマは次のものからなるべきだろう。

  1. 生成対象である、ドメインと実体母集合
  2. 基本関係〈関連?〉記号のプロファイル(実体状態記号は、関係記号に入る)
  3. 制約記述

ERスキーマの状態〈モデル〉は、事前に決っているドメイン名と実体母集合名に集合を割り当て、関係記号に関係を割り当てる対応。Relの部分圏が決まる。

変更によって、ERスキーマの状態は変化する。制約を破らない変更(の族)が、状態〈モデル〉のあいだの準同型射となる。

制約に出現する包含関係を2-射と思うと、スキーマから生成される圏は2-圏、Relも自然に2-圏になる。となると、スキーマ間のスキーマ射〈指標射〉もモデル〈状態〉も2-関手でなくてはならない。2関手を対象とする、2-関手・2-圏が必要だから、2-関手・2-圏の2-射としてのモディフィケーションが必要になるのか。なるほど。

だいぶ見えてきた。関係圏のダガー閉モノイド構造以外に2-構造が必要になる。制約は2-構造内にエンコードされる。さらに制約の比較として3-射が出てくる。

  • 0-射: 集合
  • 1-射: 関係
  • 2-射: 関係のあいだの包含関係=制約
  • 3-射: 制約のあいだの強弱比較