12. 応用例: ER図#

12.1. ER図 in graphviz#

graphvizでER図を作成した例。

graph ER { fontname="Helvetica,Arial,sans-serif" node [fontname="Helvetica,Arial,sans-serif"] edge [fontname="Helvetica,Arial,sans-serif"] layout=neato node [shape=box]; course; institute; student; node [shape=ellipse]; {node [label="name"] name0; name1; name2;} code; grade; number; node [shape=diamond,style=filled,color=lightgrey]; "C-I"; "S-C"; "S-I"; name0 -- course; code -- course; course -- "C-I" [label="n",len=1.00]; "C-I" -- institute [label="1",len=1.00]; institute -- name1; institute -- "S-I" [label="1",len=1.00]; "S-I" -- student [label="n",len=1.00]; student -- grade; student -- name2; student -- number; student -- "S-C" [label="m",len=1.00]; "S-C" -- course [label="n",len=1.00]; label = "\n\nEntity Relation Diagram\ndrawn by NEATO"; fontsize=20; }

図 12.1 Entity Relation Diagram drawn by NEATO#

12.2. ER図 in PlantUML#

PlantUMLで同じモデルの ER図を書いてみる。 StudentとCourceを横並びにしたいが、... edgeの上下と左右を指定することで、ここでは乗り切った。

@startuml
   'skinparam linetype ortho

   entity institute {
     * name
     --
     }
   entity cource{
     * name
     --
     code
   }
   entity student {
     * name
     --
     number
     grade
   }

   institute ||--o{ cource  : C-I
   institute ||--o{ student : S-I
   cource }o-o{ student   : S-C

@enduml

図 12.2 PlantUMLで書いたER図#

@startuml
'skinparam linetype ortho

entity institute {
  * name
  --
  }
entity cource{
  * name
  --
  code
}
entity student {
  * name
  --
  number
  grade
}

institute ||-o{ cource  : C-I
institute ||-o{ student : S-I
cource }o-o{ student   : S-C

@enduml

図 12.3 edgeの向きを指定しない場合はこちら#

12.2.1. ER図(Information Enginering diagram)で使われる、端末記号#

PlantUMLではER図のことをInformation Enginering Diagaramと呼ぶことがあります。

タイプ

記号

0か1

|0-

1のみ

||-

0以上

}o-

1以上

}|-

--

汎化/特化 Extension

<|--

コンポジション composition

*--

集約 Aggregation

o--

12.2.2. 可視性#

クラス図で、メンバの可視性の定義

文字

フィールドのアイコン

メソッドのアイコン

可視性

-

private

#

protected

~

package private

+

public