データベース初心者の基礎知識ブログ -11ページ目

ER図の「*」とか「1..*」って何の意味

ER図の続きです。

20100819_07.jpg

この図にある「*」「1」って、どんな意味なんでしょう?

というのを、少し解説します。

まず、「1」のほうですが、これは、そのまま「1つ」という意味ですね。

この場合は、

「趣味が1つ」

ってことで、

「趣味のデータが1つ」

ってことです。

これに対応するのが、「*」のところ。

この「*」(アスタリスク)は、「0以上」という意味です。

0以上ってのは、「0でもいいし、1つ以上でもいいし」という意味です。

もう少し言うと、

趣味テーブルにはあるけど、対応する個人のデータはなくてもいい。

っていう意味ですね。

これ、ちょっとややこしいので、図にすると、

20100820_08.jpg

こんな風に、趣味が「車」な、さとし君ときよし君、がいてもいいし、

20100820_09.jpg

こんな風に、趣味が「ダイビング」な彼は、誰もいない、

という状態でもいいですよ、という意味です。

ちなみに、必ず1人はいるようにするには、

20100820_10.jpg

こんな風に

1..*

と書きます。

ピリオド2つで、「~」と同じ意味なんですね(英語には「~」に相当するものがないので、代用という訳です)。

 

 

 

 

趣味の手帳をER図で表してみよう

そんな訳で、やっと出てきました ER 図(Enitity Relational Chart)ですね。

ER とは言っても、ドラマの「ER緊急救命室」ではありませんよ(見てはいますが)。

先に話した、趣味テーブルの話を ER 図にしてみますね。

20100819_05.jpg

こんな風に、2つのテーブルが連携してました。

これを、表の関係だけ表してみると、こんな感じになります。

20100819_06.jpg

個人テーブルには、列が3つあって、「ID」と「名前」と「趣味ID」です。

主キーは、IDですよね。これは下線で表します。

趣味テーブルに繋がっている外部キー「趣味ID」は、点線の下線で表します。

同じように、

趣味テーブルは、列が2つあって、「ID」と「趣味」になります。

IDは、個人テーブルと同じように下線を使って、主キーを表しています。

なんか、味も素っ気もない図なんですが、「よくまとめられてますね~」ってな感じの図になります。

さて、

この2つのテーブルの関係を表したのが次のER図です。

20100819_07.jpg

個人テーブルと趣味テーブルを一本の線でつなげて、「関係」を表します。

脇についている「*」と「1」の意味は、「多対1」の関係ですよ。

矢印で表していた、こんな図、覚えていますか?

20100819_08.jpg

趣味テーブルのデータ(行)には、「車」がひとつだけあって、個人は、さとし君ときよし君の2名、ってことで、いくつでもいいよ、という意味です。

このあたりは、後日解説しますね。

 

 

 

 

ダブりは、外部キーでおまとめします

お次は、RDBMS の「R(Releational)」なところを解説です。

いままでの手帳は、ひとつのテーブルしか扱っていなかったのですが、

今度は、次のような「趣味」の手帳を作ります。

20100819_03.jpg

ひとつしか趣味を持っていない(笑)なのは、さておき、BFごとに趣味をメモしておくと、遊びのときに便利ですよね。

紙の手帳に書くときには、趣味の欄を作っておいて、「車」とか「旅行」とか書いておけばいいんですが、

良く見れば、「車」と「旅行」がダブっていますね。

そういう場合は、まず、

趣味の一覧を用意しておきます。

20100819_04.jpg

趣味の一覧には、名前と同じようにID(識別子、Identity)を付けておきます。

そうして、

趣味のほうから、趣味の一覧を参照するようにするんですね。

20100819_05.jpg

これが、関係(Relational)なところです。

この、趣味IDのところを「外部キー」と言います。

個人のテーブルから、趣味のテーブルへ参照するっていう意味なので、「外側の」って意味です。

英語では、Foreign Key (「FK」とも約されます)です。