ER図を書いてみよう 研修コースに参加してみた
今回参加した研修コースは ER図を書いてみよう です。
こういった設計や図を使う研修は、実は1社向けの研修ではハマりにくく、自社の開発標準などと合わせて欲しい、という要望が寄せられがちです。
このため、本来の設計をチームやプロジェクトで共有するという意図から離れ、図の書き方に終始する研修も多いのですが、このコースはそんなものは関係なく、あくまで図を使ってどのように意図を共有するのか、どうするとモデリングできるのか、演習しながら学べるコースでした!
では、どんな内容だったのか、レポートします!!
もくじ
コース情報
想定している受講者 | 特になし |
---|---|
受講目標 | データベース構造を考え、ER図に落とし込むことができるようになる |
講師紹介
登壇されたのは、すっかりテックな演習コースではおなじみの 冨原 祐 さん です
現場の技術をどう学ぶか、工夫を凝らした演習をデザインできる講師
いつものようにお名前だけおっしゃり、本日の流れを説明いただきました。
- 実際に書いてみて、最終的に時間があれば要件から書き起こしてみましょう
- もし分かるという方は最後の要件から始めてみてください
出来る限り、受講者の方が学びたいことを邪魔しない、というのは三好さん譲りかも知れません。
ER図は誰が見るのか
- エンドユーザー <-> 元請け (SE) <-> 開発パートナー (SE)
- ER図はエンドユーザーに見せてもわからないので、元請けと開発パートナーとでやり取りする、ということになります
たしかにエンドユーザと共有するものではないんですよね。これは結構重要です。
ER図とは?
業務フローは時系列でフローを書きますが、ERはただ関係を表すものです。
なぜ必要になるのか
- エクセルとかで 1 シート 1 テーブルでテーブル定義を書かれても、どう他のテーブルとリレーションがあるのかわかりません
- ER図であればその関連がスグにわかります
例えば、冨原さんはキーワード検索結果の表示をサンプルに、どのテーブルとどのテーブルが関連して抽出されているのか、ER図で表現しているそうです。
開発者はそれで SQL がスグにわかるようになるとのことでオススメされていました。
たしかに!
最近聞いた話では、テーブル設計をモブプログラミング風にやると学びが多いとのことだったので、開発者同士の意思疎通に効きやすいのかも知れませんね。
ER図 書き方
この中でも IE 記法と IDEF1X 記法がよく現場では使われています。
共通する概念
- Entity は名詞
- 動詞的な「仕入れる」の場合も何らか帳票があるので、それにも注目する
- Relationship は関係
- 最初は 1:多、多:多 など気にせず親子関係を見つけましょう
- 部署 – 社員 が見つかっても最初から中間テーブルを考えない
- 全部洗い出してから 部署 – 所属部署 – 社員 のように考える
- Attribute は属性値
- ここでも必要な属性だけ抽出する
- 例えば 社員 テーブルで生年月日がいるのかどうかなど
- 実際に使わないデータは後回し
- 使うデータを考えている
- Cardinality は制約
- 特に見落としがちなので重要
- 例えば |部署|社員| で配属前の新入社員の場合があるとき
- null 許容するのか、 ‘部署なし’ のような部署名を作ってしまうか
- レコード数も少ないのがわかっていれば開発者は一覧画面で全部ガッと出して良いとか判断できる
命名規則
ここはセンス大事です。
また、最近は Web アプリケーションフレームワークによって、命名規約があったりするので注意です。そのルールに則るとORマッパーやフレームワークの機能が使えるので、とても楽になります。
たしかに、PHP の Laravel では User というテーブル名で定義すれば認証機能は 1 コマンドで作成できますね。
ex. 認証 5.5 Laravel
書き方 (記法) を見てみよう
リレーションシップが忘れやすいので注意です。
一方で先程の IDEF1X という記法も見てみましょう。
これは Eclipse のプラグインや現場でよく使われる A5 SQL Mk-II などでは採用されている書き方です。
ということで ER 図を書いていきましょう!
早速演習です。はやい。。。
そのまえに、ちょこっとだけ補足です。
いつどこから書くか
- 要件定義段階から書いていこう
確かに、なにはともあれ DB 設計からはじめますよね。
お題
対象はECサイト(インターネット通販)で考えます。
ER図 作成のステップ
この 5 つのステップを順番に、実際にそのとおりに手書きで書いていきます。
- エンティティを抽出
- まずはリストのように出していく
- 顧客, カート, 商品, 注文, お届け先, 請求先, 配送方法, 決済方法, サイズ, 在庫など
- 正解はありません
- エンティティをマスタデータとトランザクションデータにわける
- マスターデータ: あまり増加せず、減ることもある
- 顧客, 商品, 配送方法, 決済方法, サイズなど
- トランザクションデータ: 日々増加し続けるもの。基本減らない
- カート, 注文など
- アトリビュートを洗い出そう
- たとえば商品
- | 商品コード | 商品名 | 価格 |
- 例えば配送方法
- | 配送方法コード | 配送方法名 | 配送事業者名 | 配送事業者住所 | など
- こうやって考えるとコンビニ受取りの有無なども気になってくる
- エンドユーザーに聞くなど新たなヒアリングポイントに繋がります
- ER図を書いてみよう
(演習の過程イメージ)
また次の演習として取り組んだのが、学校向け学籍・成績管理システムです。
これはイメージがしやすい題材ながら、とても複雑になるとのことでした。
最後に冨原さんから上達するテクニックを紹介されました。
ER図を作っていくとパターンが色々作れてくるので、経験を積むことが大事です。
日常で、例えば Twitter などではツイートに hh 時間前 というタイムスタンプがでていますが、これは日本時間などを考えずに GMT 1 本でやっている工夫です。
こういうのを知ってパターンが掴めてくるとのことでした。
なるほど、そういった観点で見る習慣が無いと気づけないかも知れませんが、慣れてしまえば無限に学習材料が作れそうですね。
まとめ
3 時間という限られた時間ながら、最低限の記法だけにとどめ、それにこだわることなく、ER図をどのように作るのか、演習しながら学べるものでした。
演習デザインが上手い、冨原さん、さすがです。
共有する相手が開発者同士なので、ER図をつかって正しくコミュニケーションする、という目的に十分なコースでした。
データベース設計をこれからはじめる、という方にはとてもオススメです!
label SE カレッジの無料見学、資料請求などお問い合わせはこちらから!!
label SEカレッジを詳しく知りたいという方はこちらから !!
IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 講座をほぼ毎日開催中!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。