なんだ、簡単じゃん、合理的なモデリング
ERスキーマの図式的表現をER図と呼ぶことにする。ノードとアロー(有向辺)からなるグラフ(箙)。
図 | 説明 |
---|---|
ドメインノード | 基本的値の集合 |
実体ノード | 個体の集合 |
属性アロー | 実体→ドメイン |
関連アロー | 実体→実体 |
計算アロー | ドメイン→ドメイン |
ドメイン→実体の基本アローは考えない(あってはいけない)。ただし、属性の逆(転置)アローなどは後で考える(複合アローとして)。
ER箙から関係圏への箙写像をER図のインスタンスと呼ぶ。ただし、ドメインノードへの集合の割り当ては固定する。
計算アローの例は、月の番号に月の名前('一月'、'January'とか)を対応させる、生年月日から年齢の計算、その他普通の関数など。
次の条件がある。
- 属性アローには関数を対応させる。
- 計算アローには関数を対応させる。
- 関連アローには何でもよい。任意の関係。
次に制約記号:
制約記号 | 制約名 | 説明 |
---|---|---|
→! | 一意性制約 | 関係が単葉 |
!→ | 全域性制約 | 関係が全域 |
→> | 単射性制約 | 関係の転置が単葉 |
>→ | 全射性制約 | 関係の転置が全域 |
下線 | 主キー制約 | 属性達がjointly単射 |
さらに、関係のあいだの関係(メタ関係)を表す制約記号
メタ制約記号 | 制約名 | 説明 |
---|---|---|
転置制約 | お互いに転置である | |
⇒ | 合成制約 | 複数の関係の合成である |
関係(関連)に対する操作
記号 | 説明 |
---|---|
r;s | 合成(composition) |
rt | 転置 |
r|A | 制限 |
r|B | 余制限 |
制限、余制限は、包含写像と転置、合成で書ける。合成と転置だけでOK。
さまざまな制約はすべてのインスタンスに条件付けをして、任意のインスタンスを許すことはなくなる。すべての制約(メタ制約含む)を満たすインスタンスを妥当インスタンスと呼ぶ。
リレーションスキーマ
ERグラフの部分グラフで、次の条件を持つものSをリレーションスキーマと呼ぶ。
- Sのすべての実体ノードは候補キー(属性の集合)を持つ。
- Sの異なるノードのあいだには高々1本のアローしかない。
このとき、Sは型を定義して、Sを満たすリレーションの全体として型の外延(リレーションの集合)が定義できる。
- リレーションスキーマ=リレーションの型=リレーションの集合
候補キーから主キーを指定したリレーションスキーマをキー付きリレーションスキーマと呼ぶ。主キーに含まれる属性を主キー属性と呼ぶ。
データベーススキーマ
幾つかのリレーションスキーマの集合をデータベーススキーマと呼ぶ。ただし、背景となるERスキーマは必ず必要。ERグラフの(特定の条件を満たす)部分グラフの集合がデータベーススキーマ。データベーススキーマが(グラフ被覆として)ERスキーマを被覆するとき、データベーススキーマはフルだと言う。そうでないときは部分データベーススキーマ。
単一のリレーションスキーマも、単元集合としてデータベーススキーマになる。通常これは、部分データベーススキーマ。
生成アローと複合アロー
ERグラフにおいて、生成アロー(基本アロー)の集合を次のように定める。
- aとbが互いに転置なときは、どちらか一方しか生成アローになれない。
- c=a;b のとき、cは生成アローになれない。
- 恒等アローは生成アローになれない。
- 他のすべての非恒等アローが、生成アローから転置と合成で作れる。
生成アロー以外で恒等アローでないものを複合アローと呼ぶ。複合アローは必ず、他のアローの転置か、他の2つのアローの合成になっている。
合成可能なアローは:
- 属性アロー(達)と計算アロー
- 計算アローと計算アロー
- 逆属性アローと属性アロー
- 逆属性アローと関連アロー
- 関連アローと関連アロー
- 関連アローと属性アロー
複合アローを含むようなリレーションスキーマを非正規を呼ぶ。複合アローを色々分類してゴニョゴニョするのが正規化理論 -- 作り直す必要がある。