どうも。つじけ(tsujikenzo)です。このシリーズでは「draw.io(ドローアイオー)でデータベース設計のER図をかこう」ということで、全4回でお届けします。今日は3回目で「濃度(カーディナリティ)編」をお送りします。
前回のおさらい
前回は「ERモデル編」ということで、ER図の一つであるERモデルの簡単な説明と、ER図で用いられる3つの要素の描画方法についてお届けしました。
今回は、「濃度(カーディナリティ)編」をお届けします。
Relationshipを描画する
前回はER図の要素として「実体型」「関連型」「属性」を配置しましたが、次にRelationshipとして、要素どうしを実線で繋いでみます。
線は要素から直接伸ばすことができます。要素をクリックすると、要素の外周に太い矢印が表示されます。
矢印をドラッグすると、線が伸びます。(初期設定ではスタイル[矢印]が設定されています)
つなげたい要素にドラッグすると、要素にポイントがでますので、ドロップ(マウスを離します)します。
このほかにも「Ctrlを押しながらドラッグ」や「Shiftを押しながらドラッグ」など、エンティティの複製を作成したりする便利なショートカットがあるので、いろいろ試してみてください。(説明は割愛させていただきます。)
線のスタイルを変更する
線を選択すると、「フォーマットパネル」から線のスタイルを設定することができます。
今回は初期設定の[矢印]だったため、「右終点:なし」に変更しました。
一度線のスタイルを変更すると、初期設定が変わりますので、後の作業が効率的に行えます。
線の配置を変更する
線の配置の背面・前面を変更したい場合は、「フォーマットパネル」の[配置]から変更することができます。(線の右クリックメニューでも可能です。)
実体型どうしのリレーションは直接むすんでも構いません。
濃度(カーディナリティ)とは
「属性」は「実体型」か「関連型」にぶらさがっていることを実線をつないで表現しました。残りの「実体型」と「関連型」ですが、「実体型」と「実体型」の関連を数値で定義すると、
- 1対1関連型
- 1対多関連型(逆は多対1)
- 多対多関連型
の3種類になります。
たとえば、1つのメールアドレスには1つの学生が紐づけられます(1対1)。1人の学生が複数の講義を履修している場合は1対多の関係になります。
そして、複数の学生が複数の講義を履修する場合や、複数の商品が複数の顧客に販売される場合などは多対多の関係が成り立ちます。
この1や多(0個以上ならどのような値でもかまわない)を濃度(カーディナリティ)と呼びます。
ER図で濃度を表現する
実体どうしを結ぶ線上をダブルクリックすると、文字列として[濃度]を追加することができます。
テキストを変更することもできますし、自由に移動することができます。今回は顧客側の濃度を多の意味である整数M,Nを使って、「M」としました。
同様に、商品側の濃度を「N」を設定します。
左カラムから濃度を追加する
線上をダブルクリックが難しい場合は、左カラムから濃度に関する要素のアイコンをクリックすることでも、追加することができます。
原文ではMandatory(必須)のParticipation(参加)ということですが、2つの実体の関連を「関連型」からみたとき、必要な主キーが「いくつあるか」「どちららにあるか」を定義しているとも言えます。
位置も調整しまして、このようになりました。
「概念モデル」と呼ばれるER図の作成はここまでになります。ERモデルが「実体型-Entity」「関連型-Relationship」(+属性)と「濃度-Cardinality」によって、実世界の関連性を描画したER図ということがなんとなくお判りいただけましたでしょうか。
皆さんがよく耳にする「リレーショナルデータベース」のER図の作成は、この後の流れになります。
まとめ
さて、以上で「濃度(カーディナリティ)編」ということで、Relationshipの線と濃度についてお届けしました。
次回は最終回で「IE表記法編」についてお届けします。お楽しみに!