このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

なんだ、簡単じゃん、合理的なモデリング

ERスキーマの図式的表現をER図と呼ぶことにする。ノードとアロー(有向辺)からなるグラフ(箙)。

説明
ドメインノード 基本的値の集合
実体ノード 個体の集合
属性アロー 実体→ドメイン
関連アロー 実体→実体
計算アロー ドメインドメイン

ドメイン→実体の基本アローは考えない(あってはいけない)。ただし、属性の逆(転置)アローなどは後で考える(複合アローとして)。

ER箙から関係圏への箙写像をER図のインスタンスと呼ぶ。ただし、ドメインノードへの集合の割り当ては固定する。

計算アローの例は、月の番号に月の名前('一月'、'January'とか)を対応させる、生年月日から年齢の計算、その他普通の関数など。

次の条件がある。

  1. 属性アローには関数を対応させる。
  2. 計算アローには関数を対応させる。
  3. 関連アローには何でもよい。任意の関係。

次に制約記号:

制約記号 制約名 説明
→! 一意性制約 関係が単葉
!→ 全域性制約 関係が全域
→> 単射性制約 関係の転置が単葉
>→ 全射性制約 関係の転置が全域
下線 主キー制約 属性達がjointly単射

さらに、関係のあいだの関係(メタ関係)を表す制約記号

メタ制約記号 制約名 説明
\propto 転置制約 お互いに転置である
合成制約 複数の関係の合成である

関係(関連)に対する操作

記号 説明
r;s 合成(composition)
rt 転置
r|A 制限
r|B 余制限

制限、余制限は、包含写像と転置、合成で書ける。合成と転置だけでOK。

さまざまな制約はすべてのインスタンスに条件付けをして、任意のインスタンスを許すことはなくなる。すべての制約(メタ制約含む)を満たすインスタンス妥当インスタンスと呼ぶ。

リレーションスキーマ

ERグラフの部分グラフで、次の条件を持つものSをリレーションスキーマと呼ぶ。

  1. Sのすべての実体ノードは候補キー(属性の集合)を持つ。
  2. Sの異なるノードのあいだには高々1本のアローしかない。

このとき、Sは型を定義して、Sを満たすリレーションの全体として型の外延(リレーションの集合)が定義できる。

  • リレーションスキーマ=リレーションの型=リレーションの集合

候補キーから主キーを指定したリレーションスキーマキー付きリレーションスキーマと呼ぶ。主キーに含まれる属性を主キー属性と呼ぶ。

データベーススキーマ

幾つかのリレーションスキーマの集合をデータベーススキーマと呼ぶ。ただし、背景となるERスキーマは必ず必要。ERグラフの(特定の条件を満たす)部分グラフの集合がデータベーススキーマ。データベーススキーマが(グラフ被覆として)ERスキーマを被覆するとき、データベーススキーマはフルだと言う。そうでないときは部分データベーススキーマ

単一のリレーションスキーマも、単元集合としてデータベーススキーマになる。通常これは、部分データベーススキーマ

生成アローと複合アロー

ERグラフにおいて、生成アロー(基本アロー)の集合を次のように定める。

  • aとbが互いに転置なときは、どちらか一方しか生成アローになれない。
  • c=a;b のとき、cは生成アローになれない。
  • 恒等アローは生成アローになれない。
  • 他のすべての非恒等アローが、生成アローから転置と合成で作れる。

生成アロー以外で恒等アローでないものを複合アローと呼ぶ。複合アローは必ず、他のアローの転置か、他の2つのアローの合成になっている。

合成可能なアローは:

  1. 属性アロー(達)と計算アロー
  2. 計算アローと計算アロー
  3. 逆属性アローと属性アロー
  4. 逆属性アローと関連アロー
  5. 関連アローと関連アロー
  6. 関連アローと属性アロー

複合アローを含むようなリレーションスキーマを非正規を呼ぶ。複合アローを色々分類してゴニョゴニョするのが正規化理論 -- 作り直す必要がある。