ER図を読むのが苦痛ならT字形で描き直してみよう

T字形ER図を教わるまで、エンティティが4個以上あるER図を読むのが苦痛だった。
今でも DBDesigner とか、SQL Server の付属ツールが出力するER図は、あんまり読みたくない。
これらのツールが吐く絵は、ほんとは一次元だ。エンティティの並び方にルールがない。
リレーションシップの線がごちゃごちゃにならないように、適当に間引いて箱を配置しているだけだ。


T字形のER図が読みやすい理由は、以下の2つ。

1.縦軸・横軸がある

縦軸は概念の生まれる順番を表し、横軸は時間を表す*1
縦軸だけがんばって例を出してみる。
IDEF1X だと受講と教官・生徒が同格に見えるんだけど、

+----------+       +----------+      +----------+   
|          |       |          |      |          |   
|   教官   +-----●+   受講   +●----+   生徒   |
|          |       |          |      |          |   
+----------+       +----------+      +----------+   

T字形にすると「あー教官と生徒が一緒になって受講というeventを生んだのだなあ」という印象になる。

+----------+            +----------+         
|          |            |          |         
|   教官   +-----○-----+   生徒   |
|          |     |     |          |         
+----------+     |     +----------+         
                 |
            +----+----+ 
            |          | 
            |   受講   |
            |          | 
            +----------+ 
2.概念をstep by stepで生成する

外部キーがいっぱいある表は何を表しているのか掴みにくいものだ。
T字形では、対照表を必ず binary方式で生成する。外部キーが3つもある表をいきなり作図することはない。
だから、binaryに生成される対照表を縦方向に追っていけば、最後にできた表が何を表しているのか、よくわかる。


実はT字形ER図であっても、1枚の紙にデータベースの全テーブルを収めてしまうと、決して読みやすくはない。
縦横軸に意味があると、おんなじ座標に複数の箱や線を描く必要が出てしまって、結局ルール通りに描けないから。
あと、実装形には、履歴テーブルとかターボファイルとか、縦横2軸では整理しきれないテーブルが発生するから。
それでもT字形でER図の練習をしておくと、IDEF1Xの絵とかも脳内変換しながら「概念の生まれる順番」を追いかけられるようになるのでお勧めです。

*1:横軸に時系列という意味があるのは、eventのみ