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のみ