情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。
いままで、正規化について書いてきたりして、エンティティと属性について、分けました。今回は、それを成果物としてER図にまとめます。
■ER図
ER図は、エンティティ(E)とリレーション(R)を書きます。。。
けど、それだけではテーブルができないので、属性値も書きますね。
で、書き方には、J.マーチンのER図(足の羽みたいなのがあるやつ)とかIDEF1Xとかあります。今日は、IDEF1Xで書きます。
IDEF 1Xについては、
アイデフワンエックス(IDEF1X)―リレーショナル・データモデルの新しい表現法
ISBN:9784822290283 (482229028X)
という本があるのですが、今日の内容は、その本を参考にして書いてます。
■IDEF 1XのER図
で、そのER図は、こんな感じになります。

エンティティ名が、ボックスの上に入ります。
ボックスの中に線が引いてあって、線の上に主キーを書きます。主キーは1つの場合もありますし、2つ3つが組み合わせって入ることもあります。で、組み合わせっているとき、それが、外部キー(他のものの主キー)だった場合は、うしろに(FK)とつけます。
線の下に属性名を書きます。属性中、外部キーがあれば、うしろにFKと書きます。
ちなみに、属性名にFKが来る場合というのは、関係はあるが、相手がなくても存在できるときに、あり得ます。
で、関係については線でかきます。
そして、その関係の内容(動詞句)を書きます。
1対Nの関係にあるとき、Nのほうに黒丸をつけます。
で、問題は1対Nの関係かどうかの見分け方なのですが、まず、1対Nの、1のほうは、主キーが入っているエンティティのほうです。Nのほうが外部キーが入っているエンティティのほうです。
1対1であれば、Nのほうのエンティティに、主キーの入っているレコードは1件しかないです。1対Nの場合は、いくつかあり得ます。1対0は、1件もないということです。
ただし、1対1だったら、テーブルを分ける必要は無いですし(第二正規形)、常に1対0っていうのは、関係ないってことです(^^;)なので、普通は1対1~Nのような形になります。それをわざわざ表現する場合は、黒丸のしたに、以下の文字を書いて示します(上記の本の140ページ)
黒丸のみ 1対0~N
黒丸にP 1対1~N
黒丸にZ 1対0~1
黒丸に数字 1対数字(1対3とか)
なお、N対Mというのも考えられます(両方を黒丸でかきます)。このとき、お互いの主キーが、それぞれの外部キーになっているケースなのですが、これは、RDBには、ありません。というか、作れませんので、1対Nになるように、お互いの主キーを組み合わせたテーブルを作ります(下記の例だと、在庫がそう)。
なお、これは、第一正規形のときに、処理される(1対Nにされる)と思います。
■ER図の例
で、これをまとめて書くと、こんなかんじ

在庫をあらわしたものです。
なお、在庫というのは存在しない、それは入庫と出庫の履歴である
という説もありますが、現実問題、会社設立から今日までの入出庫をとって
おくことはできないので、現実的には、このように在庫テーブルが存在します。
それと、動詞句ですが、しらじらしい動詞句になってしまったりする
っていうか、よくわかんない動詞句になってしまったりもするので、
省略することも多いかも。。
■汎化-スーパークラスについて
汎化は、以下の図のように、丸に棒線をかいて、よこに、各クラスにわける基準を書きます。

っていうことで、概念スキーマ構造の操作の成果物である、ER図も描いたことで、概念スキーマはおしまいです。次は、この概念スキーマをデータベースに作る内部スキーマのお話です。