ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

Hello World程度のデータベース(その12:概念スキーマ(10)ER図)


情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「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図も描いたことで、概念スキーマはおしまいです。次は、この概念スキーマをデータベースに作る内部スキーマのお話です。