Skip to main content

English

Japan

【第3回】データモデルを読む ― 関係 ―

前回は「表」について説明しましたが、ER図をみると、表を表す四角形が線でつながっています。この線は表と表の「関係」を表しています。

実を言うとデータモデルの一つの要素であるER図には、いくつかの表記法があります。「表」を表す四角形が「関係」を表す線でつながっている、というところまでは、どの表記法もおおむね同じなのですが、微妙なところで食い違っています。前回も含めてこの連載では、「IDEF1X」という表記法を採用します。これ以外にも「IE記法」だとか、「バックマン記法」「バーカー記法」だとかの表記法がありますが、「表」「関係」「主キー」が表現できているという点で、ほぼ同等のものだと考えてください。「IDED1X」は米国の連邦政府が使用している情報処理の標準(FIPS)になっており、規格が公開されています。また、この表記法を採用しているソフトウェアも多い(ERwin、ER/Studio など)ため、入門と言う意味で取り上げるには妥当な選択だと思います。

本題に戻って、説明のため前回使ったER図を少し拡張します。

modelingNo3-1

表をつないでいる線には実線と点線があり、一方の端には黒丸があります。「関係」は原則的に一方の表の特定の行が、もう一方の表の複数の行と対応する、という「1対多」の関係を表しています。「多」の側の線の端に黒丸がついている、と考えてください。

実はこれ以外に「1対多」の「1」の側に、白い菱形がついていることがあります。この菱形は、データモデルを読むにあたっては大きな影響は及ぼさないので、しばらくは無視して進めることにしましょう。(とはいえ、プログラマーさんが設計書としてデータモデルを読む場合には、大事なポイントになりますので、そのような場合には自分で調べてみてください。)

【図書】を一つ指定すると、その【図書】を出版した【出版社】が一つ定まりますが、【出版社】は【図書】を複数出版していますから、これは「1対多」の関係で、「多」の側の【図書】の方に黒丸がついています。

【図書】と【著者】と【著作】の関係は、次のようになります。一つの【図書】を複数の【著者】が共著することもあるし、もちろん一人の【著者】が複数の【図書】を書くこともあります。【図書】と【著者】は「1対多」ではなく「多対多」の関係になりますが、モデルで許されているのは、「1対多」の関係だけです。(どうして「多対多」の関係が許されないのかは、後で説明します。)そこで【著作】という表を間において、共著の関係を【図書】と【著作】の「1対多」の関係、一人の【著者】が複数の【図書】を書く関係を【著者】と【著作】の「1対多」関係で表現しています。(こういう「多対多」の関係の処理のしかたを「交差」と呼びます。)

一方の表の行がもう一方の表の行と「対応する」という言葉を使いましたが、表と表に「1対多」関係がある、と言っただけで、どの行とどの行が「対応する」のかを表現できるわけではありません。【図書】と【出版社】の関係で言えば、この【図書】がどの【出版社】から出版されたのかを指定するためには、【図書】の各行の中に【出版社】を表すデータを埋め込んでおく必要があります。(【出版社】の側に【図書】のデータを埋め込む、という方法は、「1対多」の関係があることから得策ではありません。必ず「1」側のデータを「多」側に埋め込むことになります。)【出版社】を一つ特定するために必要なのは【出版社】の主キーですから、【出版社】の主キー《出版社名》が【図書】の列として現れます。このように「多」側の表に埋め込まれた「1」側の主キーを「外部キー」と呼びます。「関係」を主キーの継承として表現するため、「多対多」の関係はそのままではモデルで扱うことができません。

modelingNo3-2

注意深い方は、上で示したER図で示した表の中に、角が丸くなった長方形で描かれた表(【著作】)があることに気がついた方がおられると思います。角が直角でも、角が丸くなっていても、それが表をあらわしていることに変わりはないのですが、角が丸くなっている表は、主キーの一部に外部キーになっているものがある表です。業務屋さんがデータモデルを読むときにはあまり意識しないのですが、システムを構築する場合は、こういうことが効いてくることがありますので、システム屋さんがデータモデルを読む場合には知っておいた方がよいかもしれません。

サンプルとしてあげてあるER図に含まれる3つの関係を読み下すと、次のようになります。

modelingNo3-3

modelingNo3-4

modelingNo3-5

関係が図の中で実線で表現されていても、点線で表現されていても、こういう「読み方」をする限りでは、あまり意識する必要はありません。実は一対多の「1」側の主キー全てが「多」側の主キーになっている場合が実線、そうでない場合が点線というルールです。

表にしても関係にしても、それがあらわしている内容を機械的に日本語に置き換えて読むことができることをご理解いただけたと思います。「可能性がある」とか「必然的に」とかいう表現は、論理学で様相命題と呼ばれている言い回しになります。データモデルは様相命題の「固まり」として読み下すことができます。データモデルの論理学とのかかわりについて興味を持っていただけた方は、

をご覧いただけると幸いです。

ご意見募集

ここまでの内容で質問やコメントがある方は、 編集部までお問い合わせお問い合わせ下さい。
「入門」なのであまり高度な質問にはお答えできませんが、みなさまの役に立ちそうな内容については、この連載の中でとりあげたいと思います。

 

Index