データモデリング入門
-astah*を使って、TMの手法を使う-
【実習編】
2013年 1月 7日(初版)
2014年 7月12日(微妙に修正入れた版)
稲見 浩一
astah*を使って、TMの手法を使う Koichi Inami 2013 1
astah*を使って、TMの手法を使う Koichi Inami 2013 2
はじめに
本書は、「データモデリング入門」の実習編です。
TMの文法などは、本編を御覧ください。
書く道具として、チェンジビジョン社のastah*
Professinalを使います。
Community版ではER図が書けないので、必ず
Professional版を使ってください
ダウンロードし、起動後50日までは、試用版として利用可
能です
最も理想的な実習は、既に書ける誰かに相談しながら
実際の業務を書いてみることです
演習では、架空のお話にしかできません。事実なのか検証
できないし、可能性の検討にも意味を持ちません
本書を使えば、astah*Professionalを使って、
TMの手法でER図を書いてみることができます。
それ以上のことは期待できません
一度書いてみれれば、自分の課題について書き始める
ことができるでしょう
その先は、良き先導者を見つけるのが問題解決の近
道だと思います
astah*の使い方自体は、チェンジビジョン社のサイ
トを見てください。
チュートリアルのページ データモデリング編
或いは、リファレンスマニュアルをご覧ください
astah*を使って、TMの手法を使う Koichi Inami 2013 3
astah*を使って、TMの手法を使う Koichi Inami 2013 4
ともかく書き始めよう(準備)
astah*を起動して、図→ER図で始める。
ダイアグラムエディタ
プロジェクトビュー
プロパティビュー
ツールパレット
表記は、IEを選択
しておいてください
エンティティの色分け
TMの手法では、箱に色々と意味を持たせていま
す。astah*では、エンティティの色を使います
astah*を使って、TMの手法を使う Koichi Inami 2013 5
 左図は、ツール→プロジェクト
設定→プロジェクトのプロパ
ティ設定→新規ERエンティ
ティの型の色、で設定してい
る例です
 ツール→システムプロパティ→
新規ERエンティティの型の色
での設定も有ります
 複数人でモデルを書く場合に
は、あらかじめ設定を共有し
ておきましょう
astah*を使って、TMの手法を使う Koichi Inami 2013 6
作図操作
次の図を書いてみる。
① ツールパレットからエンティティのアイコンを選
び、ダイアグラムエディタ上に置く
② 名称を「従業員」に変更する
③ 右クリックメニューから主キーの追加、或い
はCTRL+Kキーで、「従業員番号」を入
力する
④ 右クリックメニューから属性の追加、或いは
CTRL+Rキーで、「従業員名」を入力する
⑤ 「部門」も同様に作成する
⑥ エンティティを1つ置き名称を「従業員.部
門.対照表」とする
⑦ 依存型リレーションシップを従業員から引く
⑧ 依存型リレーションシップを部門から引く
astah*を使って、TMの手法を使う Koichi Inami 2013 7
知っておくべきこと
モデルと図
エンティティを作成すると、プロジェクトビューに作成したもの
が現れていることに注意する
図から削除とモデルから削除は違う
ダイアグラムエディタ上のエンティティを単純にDELキーで消して
もプロジェクトビュー上の定義は変わらない
右クリックメニューから「モデルから削除」すれば、プロジェクト
ビューからも削除される
プロパティビューの活用
先ず、エンティティにしろ、リレーションシップにしろ、各属性
にしろ、「定義」が書けるので活用すること
エンティティの型であったり、多重度であったり、依存と非依
存の切り替えなども、ここでもできる
オンラインマニュアル参照
モデルと図
astah*を使って、TMの手法を使う Koichi Inami 2013 8
①こっちがモデル
②こっちは、単に
図に過ぎない
③図から、単純に
Deleteしても、モデル
からは削除されない
プロジェクトビューから
「従業員」を選んで、ダ
イアグラムエディタにド
ラッグ&ドロップすると、き
ちんと甦る
astah*を使って、TMの手法を使う Koichi Inami 2013 9
演習1
まずは、作図の練習です
次の画面からデータモデルを作成せよ
受注入力画面
品目コード 品目名称 受注数品目単価 受注金額
XXXXXX ×××××××××× 9999,999 9,999,999
受注№:9999 受注日:9999-99-99
顧客№: 999999 顧客区分:×× 顧客名称:××××××
書き方や意味については、(更に自分で学習できる様に)
佐藤正美氏の「データベース設計論ーT字形ER」の実践編に
有る例題を題材にしています。詳しくは、図書を参照下さい。
astah*を使って、TMの手法を使う Koichi Inami 2013 10
先ずは、仕分ける
受注入力画面
顧客№
受注№
品目コード
顧客区分
顧客名称
受注日
品目名称
品目単価
受注数
受注金額
入力の複雑度合いに
よっては、この段階を省
き、直接エンティティを
作っていっても良い
astah*を使って、TMの手法を使う Koichi Inami 2013 11
更に分解する
ラピュタの中から属性を割り振っていく
要確認
astah*を使って、TMの手法を使う Koichi Inami 2013 12
エンティティの類別と関係の作成
日付を持つのは受注のみで、イベントエンティティである
顧客と品目はイベントでないので、リソースエンティティ
受注入力画面で、顧客№と品目コードを入力している
単価の置き場所以外
には、基本的に事実と
の確認のみである。
astah*を使って、TMの手法を使う Koichi Inami 2013 13
演習2
もう一問、こちらは過程を一通り追う問題です
次の画面からデータモデルを作成せよ
申請情報
品目コード:XXXXXX 品目名称: ××××××××××
申請日:9999-99-99申請番号: 999999
購入先コード:XXXXXX 購入先名称: ××××××××××
数量:999 単価種別コード:XXX 単価:99,999
希望納期:9999-99-99
あり なし付属品: あり なし添付資料:
部門コード:XXXXXX 部門名称: ××××××××××
使用者氏名:××××× 使用者電話番号: 9999999999
配送場所コード:XXXXXX 代替配送場所コード:XXXXXX
astah*を使って、TMの手法を使う Koichi Inami 2013 14
以下を前提条件とする
①単価は、品目単価のことである
• 単価には、「正価格(種別コード=1)」と、「割引価格(種
別コード=2)」が有る
②付属品が「あり」について、資料添付が対象となる
• 付属品が「なし」については、資料添付が対象にならない
③使用者は「社員」に限らないので、「社員番号」を使わな
いで、氏名を記述する
④配送場所は、申請した品目を配送して貰う場所のことで
ある
• 配送場所には、それぞれに代替場所の指定が可能で、代替
場所コードには、配送場所コードを使う
⑤品目毎に購入先が決められている
astah*を使って、TMの手法を使う Koichi Inami 2013 15
書いてみよう
では、画面と前提条件を基に書いてみましょう
まず、情報を仕分けし、エンティティを捕捉する
属性をわかる範囲で、エンティティに割り当てていく
配置先が明らかでないものは、ラピュタに置いておく
エンティティを類別する
タイムスタンプが置ければイベント、でなければリソース
関係を考え、リレーションシップを引いていく
リソースとリソースの関係の場合は、対照表を置く
多値と多義を考える
部分集合や構造を検討する
サブセットになるものを検討する
みなしに該当するものを探す
astah*を使って、TMの手法を使う Koichi Inami 2013 16
仕分ける
申請
申請番号
品目コード
購入先コード
部門コード
配送場所コード
代替配送場所コード
申請日
品目名称
購入先名称
数量
単価種別コード
単価
希望納期
付属品(あり/なし)
添付資料(あり/なし)
部門名称
使用者氏名
使用者電話番号
※ 前提条件の①で、単価種別コードの値が1か2しかないこと
から、敢えて一つの識別子と考える必要は無いと考える
astah*を使って、TMの手法を使う Koichi Inami 2013 17
そのまま図にする
仕分け表の左側からエンティティに
astah*を使って、TMの手法を使う Koichi Inami 2013 18
属性を割り当て、エンティティを類別する
タイムスタンプが有るのは、「申
請」エンティティだけ。
他は、リソースとする
取り敢えず、関連する項目は全
て配置してみた
astah*を使って、TMの手法を使う Koichi Inami 2013 19
関係を考え、リレーションシップを引く
前提条件④より、
再帰の構造が読
み取れる
前提条件⑤より
astah*を使って、TMの手法を使う Koichi Inami 2013 20
単価の多義を解消する
astah*を使って、TMの手法を使う Koichi Inami 2013 21
部分集合や構造を検討する。
前提条件②より
前提条件③より
希望納期が無い場
合を認めるなら外に
出す(候補は1
つ?)
astah*を使って、TMの手法を使う Koichi Inami 2013 22
検証と考察
練習問題だから、事実に対する検証はできないので、形
式的なものである
考察すべき点や疑問点は、次の通り
その時点の単価を申請に記録しないか?
リソース間の関係を点検する
購入先と配送場所に関係は無いか?
品目と配送場所に関係は無いか?
各リソースエンティティと申請への関係が、非依存か依存か?
TMには無い考え方、ルールであるため規定しにくい
結果的に、イベント1つだけなので、配置に関する言及は
できない。複数のイベントが有るなら、時系列に並べる
astah*を使って、TMの手法を使う Koichi Inami 2013 23
演習3
次のテーブル定義を基にデータモデルを作成せよ
取引番号
注文番号
注文日
顧客番号
顧客名
商品番号1
商品名1
商品単価1
注文数量1
注文金額1
出荷番号
出荷日
請求番号
請求日
請求金額
商品番号2
商品名2
商品単価2
注文数量2
注文金額2
商品番号3
商品名3
商品単価3
注文数量3
注文金額3
注文金額計
前提:
① 注文番号、出荷番号、請求番号は、
取引番号とは別に、独自に裁番さ
れている
② 注文については、同時に3つまで
の商品が注文可能である
③ 注文ごとに出荷する
④ 注文ごとに請求する
続く
続き
astah*を使って、TMの手法を使う Koichi Inami 2013 24
ルール通り書けば、こんな感じかな
少し前提を変えてみる
①いくつかの注文をまとめて
出荷したい
②月毎にまとめて請求したい
astah*を使って、TMの手法を使う Koichi Inami 2013 25
考慮すべき点は何か?
取引番号で一連に括っているこ
とで、逆にまとめて扱うことがで
きなくなっている
① 取引番号を廃止してみる
② 注文に対する出荷である
③ 注文に対する請求である
モデルを変更してみよう!
astah*を使って、TMの手法を使う Koichi Inami 2013 26
例えば、こんな図にして検討する
まとめ出荷に対応
まとめ請求に対応
どうしても、これらが一連の
「取引」と示したい場合に
概念的なスーパーセットと
して置くこともできる
という様な「検討にも、モデルが使える
可能性がある」という演習問題でした
既に3つまでと
いう制限は不
要にできる
「TM」って何?
ちょっと考察してみましょう
TMでは、「対象表」「対応表」や「みなしエンティティ」と名前
を付けていますが、astah*で書くと、どれも同様にエンティ
ティに見えます(TMとして使うには色分け必須)
TMでは、関係の仕方に名前を付けることで、整理、分析し
やすくなっているのだと思います
TMという手法は、非常に独自なものに見えるけど、表記と
しては標準的なものでも使えるのです
手順としてわかりやすく、間違いなくできるようにルールを作り、
示したものと考えることができます
正美さんの図書などの解説には何やら難しい言葉が出てき
ますが、実際にモデルを書いてみると、どんなに実践的な手
法なのかわかることと思います
astah*を使って、TMの手法を使う Koichi Inami 2013 27
astah*を使って、TMの手法を使う Koichi Inami 2013 28
ご参考:関連図書
どちらも、是非ご一読ください
データベース設計論 T字形ER
関係モデルとオジブェクト指向の統合をめざして
佐藤正美 著
出版社: ソフトリサーチセンター (2005/09)
ウィトゲンシュタイン『論理哲学論考』を読む
野矢茂樹 著
出版社: 筑摩書房 (2006/04)
佐藤正美さんが言う「f-真」とか「l-真」って何だよ?と
思った方、是非こちらの本の前から1/3位を読んでみ
てください。
何故モデルを書くのか、一発で納得できるはずです。
最後に
本編の「最後に」でも書きましたが、独自に始めるより、
既に実践できる人と一緒に始めることが肝心です。
本書は、あくまでも書き方、及びastah*の使い方の練
習です。できるだけ早く、自分が課題としている実際の
業務を一部でも書いてみましょう
その際に、支援してくれる人を見つけてください
最も良い選択肢は、佐藤正美さんに相談することです
そこは何となく敷居が高いかもと思った方は、私にでもご
連絡ください
データマネジメントの一環として始めるなら、DAMA日
本支部にコンタクトする方法も有ります
astah*を使って、TMの手法を使う Koichi Inami 2013 29
astah*を使って、TMの手法を使う Koichi Inami 2013 30
おまけ
現行システムの良し悪しを見極める一つの基準
夜間バッチが朝までに終わらないとか以外にも・・・
• OLTP系のシステムに関し、
RDBMSを使っている場合の判
断基準と考えて下さい
• データベース設計書の各テーブル
定義の列数を見てみる
• 特殊な例を除き、20列を超える
様なテーブルが有るのは、危険な
兆候!(更新日など、どのテーブ
ルにも設けてある固定的な列は
除く)
• 100列以上のテーブルが幾つも
有るのは、残念としか言えません

データモデリング入門【実習編】-astah*を使って、TMの手法を使う-