ER図の「*」とか「1..*」って何の意味
ER図の続きです。
この図にある「*」と「1」って、どんな意味なんでしょう?
というのを、少し解説します。
まず、「1」のほうですが、これは、そのまま「1つ」という意味ですね。
この場合は、
「趣味が1つ」
ってことで、
「趣味のデータが1つ」
ってことです。
これに対応するのが、「*」のところ。
この「*」(アスタリスク)は、「0以上」という意味です。
0以上ってのは、「0でもいいし、1つ以上でもいいし」という意味です。
もう少し言うと、
趣味テーブルにはあるけど、対応する個人のデータはなくてもいい。
っていう意味ですね。
これ、ちょっとややこしいので、図にすると、
こんな風に、趣味が「車」な、さとし君ときよし君、がいてもいいし、
こんな風に、趣味が「ダイビング」な彼は、誰もいない、
という状態でもいいですよ、という意味です。
ちなみに、必ず1人はいるようにするには、
こんな風に
1..*
と書きます。
ピリオド2つで、「~」と同じ意味なんですね(英語には「~」に相当するものがないので、代用という訳です)。
趣味の手帳をER図で表してみよう
そんな訳で、やっと出てきました ER 図(Enitity Relational Chart)ですね。
ER とは言っても、ドラマの「ER緊急救命室」ではありませんよ(見てはいますが)。
先に話した、趣味テーブルの話を ER 図にしてみますね。
こんな風に、2つのテーブルが連携してました。
これを、表の関係だけ表してみると、こんな感じになります。
個人テーブルには、列が3つあって、「ID」と「名前」と「趣味ID」です。
主キーは、IDですよね。これは下線で表します。
趣味テーブルに繋がっている外部キー「趣味ID」は、点線の下線で表します。
同じように、
趣味テーブルは、列が2つあって、「ID」と「趣味」になります。
IDは、個人テーブルと同じように下線を使って、主キーを表しています。
なんか、味も素っ気もない図なんですが、「よくまとめられてますね~」ってな感じの図になります。
さて、
この2つのテーブルの関係を表したのが次のER図です。
個人テーブルと趣味テーブルを一本の線でつなげて、「関係」を表します。
脇についている「*」と「1」の意味は、「多対1」の関係ですよ。
矢印で表していた、こんな図、覚えていますか?
趣味テーブルのデータ(行)には、「車」がひとつだけあって、個人は、さとし君ときよし君の2名、ってことで、いくつでもいいよ、という意味です。
このあたりは、後日解説しますね。
ダブりは、外部キーでおまとめします
お次は、RDBMS の「R(Releational)」なところを解説です。
いままでの手帳は、ひとつのテーブルしか扱っていなかったのですが、
今度は、次のような「趣味」の手帳を作ります。
ひとつしか趣味を持っていない(笑)なのは、さておき、BFごとに趣味をメモしておくと、遊びのときに便利ですよね。
紙の手帳に書くときには、趣味の欄を作っておいて、「車」とか「旅行」とか書いておけばいいんですが、
良く見れば、「車」と「旅行」がダブっていますね。
そういう場合は、まず、
趣味の一覧を用意しておきます。
趣味の一覧には、名前と同じようにID(識別子、Identity)を付けておきます。
そうして、
趣味のほうから、趣味の一覧を参照するようにするんですね。
これが、関係(Relational)なところです。
この、趣味IDのところを「外部キー」と言います。
個人のテーブルから、趣味のテーブルへ参照するっていう意味なので、「外側の」って意味です。
英語では、Foreign Key (「FK」とも約されます)です。