SlideShare a Scribd company logo
DXを進めるためにも
『データモデリング入門』
-astah*を使って、TMの手法を使う-
2021年1月11日
稲見 浩一
Agenda
◼ はじめに
⚫ 「DXレポート」の発行以来
⚫ 問題の原因と対策
⚫ データマネジメント
⚫ システム開発の経緯を振り返る
◼ モデルの変遷
◼ 標準記法とツール利用
◼ モデリング手法詳細
◼ 実践と補助資料
◼ おさらい
◆ おまけ
◆ 参考資料
◆ 仲間を見つける
◆ 本書のTMに関する注意
2
はじめに
◼ 本書について(対象者と目的)
◼ 2014年に公開した「データモデリング入門-astah*を使って、TMの手法を使う-」の
焼き直し版です。
◼ DXが何かと話題になる中、データマネジメントの重要性が高まり、その中でも
重要な役割を持つデータモデリングとして改めて紹介し、手が動く人が少しでも
増えればと思い、加筆、修正したものです。
◼ 自社の業務を情報の視点から可視化し、データを利用・活用できるように
整えたい、あるいはそういったお客様を支援するベンダーの方を対象としています。
◼ 始めるには
◼ 道具(astah*Professional)を手に入れてください。
◼ 必ず、既に実践的に使える人を見つけて習ってください。
◼ 本書を使えば、astah*を使って、TMの手法でデータモデルを書いてみることが
できますが、それ以上のことは期待できません。
◼ 一度書いてみれれば、自分の課題について書き始めることができるでしょう。
◼ その先は、良き先導者を見つけるのが問題解決の近道だと思います。
3
「DXレポート」の発行以来
日本でも「DX」が大きく着目されるようになり、「データ駆動型経営」や、
「データドリブン」という言葉を目にする、耳にする機会が増えました。
本書では、次の2つの視点で「データモデリング」を紹介していきます。
4
2025年の崖問題 データ利活用での課題
⚫ 企業の情報システムが老朽化し、これまでの
経緯により肥大化、複雑化している
⚫ 特に複数のシステムが乱立し、サイロ化している
⚫ 維持費ばかりかかって、新たな投資への抑制と
なってしまっている
⚫ 改修も難しく、経営のアジリティを阻害している
⚫ 分析に使おうとしても、準備に8割の時間や
労力が必要となっている
⚫ 見たいデータがどこにあるのか、または無いのか
わからない
⚫ 欲しいデータが探せない
⚫ フォーマットがバラバラで、すぐに利用できない
⚫ 項目の意味が不明だったり、似たもの、重複、
多義などがあり、すぐに使えない
⚫ データの正確性が不明
問題の原因と対策
5
2025年の崖問題 データ利活用での課題
⚫ 単純な計算の繰り返しなど、情報システムの
黎明期から「給与計算」といった一つの業務を
単位として自動化や機械化を実現してきた
⚫ 需要が一気に増え、開発者も賄えない中で、
この「業務」を単位として「機能」を作成する
形態でのシステム開発が続いた
⚫ その際に「データ」が付属物のように扱われ、
機能を実現する以上に重視されて来なかった
⚫ 左記のような開発の経緯の中で、利用、活用の
視点が持たれず、「業務を回す」ことが重視
される中で、個々に蓄積された「データ」が保存
されてきたこと
⚫ その中で、個々のシステムに最適化した形で
データ項目が設定され、アプリケーションの都合で
意味が変えられることも起きていた
⚫ 統合されず、重複が放置されてきた
対策:
⚫ 情報の構造から分析、設計し直すことから
始める→データモデリングを行う
⚫ 社内の各システムごとではなく、エンタープライズ
モデルを作成する
⚫ 統合されたデータ環境を念頭に開発し直す
対策:
⚫ メタデータ、特にビジネスメタデータを定義し、
各項目の意味を明らかにする→データモデリング
⚫ 統合されたデータ基盤を構築する
⚫ メタデータを検索し、統合されたデータ基盤が
アクセスできるデータカタログを整備する
データマネジメント
業務上のデータ構造を分析したり、それを用いて統合データ基盤を作り、
更にはデータを高品質な状態に維持するためには、データマネジメントが
必要です。
6
データ
モデリングと
デザイン
DAMA International という団体に
よって、既に知識体系がまとめられ、
DMBOKという書籍が出版されています
左図の通り、日本語版も出ています。
データガバナンスを中心に、
11の知識領域が設けられ、その中に
「データモデリングとデザイン」という
知識領域があります
詳しくは、こちらへ。
システム開発の経緯を振り返る
7
データはプログラム中に
混在していた
データは比較的単純であり、
現在に比べれば少量
経理、販売管理、生産
管理などと部門単位で
システム導入が行われた
対象業務が増え、
データ量も増大した
情報自体が企業の
存亡を左右するように
なってきた
情報量は比較にならない
程に増大した
バッチ オンライン
インターネット
クラウド
マシン語 COBOL 4GL Java、Pythonなどなど
ISAM RDBMS
NoSQL
構造化
データ中心(旧:DOA)
オブジェクト指向
データ駆動
モデルの変遷
⚫ モデルの変遷
⚫ リレーショナルモデル
⚫ ChenのERモデル
⚫ その後の拡張ERモデル
⚫ そしてUML
8
モデルの変遷
データを扱うために、これまで様々に工夫され、使われてきたモデルの
変遷を見てみましょう。
9
E.F.Codd博士の
リレーショナルモデル
P.P.Chen博士の
ERモデル
その後の拡張ERモデル
さらにUML
少し異なる流れのものですが
このモデルを基に
RDBMSが
作られました。
時を同じく、
TH法が
発表されました。
リレーショナルモデル
10
⚫ RDBMSの基になったことで知られています
⚫ 複雑化し、データ量が飛躍的に増え、それまでのファイルシステムで扱うことが困難になったことで提唱されました
⚫ 1970年に当時IBM社のE.F.Codd博士により、A Relational Model of Large Shared Data Banks と
いう論文で発表されました
⚫ 行(row)と列(column)により「表(table)」の形で表されることで知られています
その行と列については、次の考え方で示されました
社員番号
882201 882305
882412
氏名
鈴木次郎 田中太郎
伊藤三郎
本籍地
神奈川県
北海道 石川県
882412 伊藤三郎 石川県
タプル:tuple
属性値の集合(値域:Domain)から、それぞれ値を持ってきて組(タプル:tuple)を作る。
11
社員番号
882201 882305
882412
氏名
鈴木次郎 田中太郎
伊藤三郎
本籍地
神奈川県
北海道 石川県
882412 伊藤三郎 石川県
タプル:tuple
⚫ 「社員番号」という属性値の集合( 𝑋1)に含まれる値(s1)である「882412」
⚫ 「氏名」という属性値の集合( 𝑋2)に含まれる値(s2)である「伊藤三郎」
⚫ 「本籍地」という属性値の集合(𝑋3)に含まれる値(s3)である「石川県」
⚫ これらが、属性値集合の並びのとおりに取り出されたものがタプルであり、その状態を「関係Rにある」と示しています
⚫ この属性値の集合は、Domain(ドメイン)と呼ばれ、DDDという開発方法論やRDBを扱う方なら、
Data Domainとしてお馴染みかと思います
図を式で表すと、次のように書けます。
関係:R={(s1 , s2, …, sn) | s1 ∈ 𝑋1, s2∈ 𝑋2,…, sn∈ 𝑋n}
12
関係:R={(s1 , s2, …, sn) | s1 ∈ 𝑋1, s2∈ 𝑋2,…, sn∈ 𝑋n}
式とともに、次の規則を覚えておいてください。
① 各行(row)は関係Rのn個の組(n-tuple)を表す
② 行(row)の順序は、重要ではない
③ すべての列が異なっている(識別できる)
④ 列(column)の順序には意味がある
関係Rの定義された各属性値集合の並び{𝑋1, 𝑋2, …, 𝑋n}と一致する
(その並び順の意味ではなく、どの行も同じということ)
⑤ それぞれの列(column)の意味は、対応する領域(domain)の名前でそれを標識付けすることに
よって、部分的に表わされる
ここから、次のことがわかるはずです。
⚫ あるドメインに異種のものを入れてはいけない。
⚫ 同種の情報を異なるドメインに分けてはいけない。
⚫ ある要素snに勝手に意味付け(そのドメインの意味)を変えてはいけない。
ChenのERモデル
Coddは、リレーショナルモデルを示した際に、そのデータを整理するための手法として、正規化を用いる
こと(正規形)を提唱しました。並べたタプルの項目を第一正規形に整理し、それを第二、第三と順に
正規化する方法です。
しかしながら、それは面倒で、もっと良い方法があると、P.P.Chen博士が1976年のVLDB学会で
「The Entity Relationship Model – Toward A Unified View of Data」という論文を発表しました。
そこで示されたのは、次の図で表したモデルです。
13
PROJECT
PROJECT-
WORKER
EMPLOYEE
WORKER PROJECT
M N
ENTITY SET ENTITY SETRELATIONSHIP SET
図の表記は、次の通りです。
• ENTITYは、モノ(thing)であり、この集合を矩形で表す
• RELATIONSHIPは、モノとモノの関係であり、この集合を、
ENTITY間をつなぐ線の上に菱形で表す
その後の拡張ERモデル
P.P.Chen博士のERモデルは、Chen博士の努力もあり、普及は非常に進みました。
しかしながら、表現力が不足しているとして、様々な拡張が行われてきました。
主な特長として、次のようなものが見られます。
◼ ChenのERモデルでの関連型(菱形で示す)を廃し、基本的には、
エンティティを1対1、あるいは1対多のみで表現する。
14
従業員 部署
従業員 部署
配属
交差エンティティ
多対多のままの表記
複数の1対多に展開した表記
サブセット(タイプ)の表記
営業所
営業所コード
直営店
営業所コード
特約店
営業所コード
汎化・特化
そしてUML
ここまでは「データ」に関する構造に着目してきましたが、仕様や設計を表すには他の表現力も必要です。
そこで、UMLの登場です。
15
⚫ UMLは、Unified Modeling Language(統一モデリング言語)の略で、オブジェクト指向技術の標準化
団体であるOMG(Object Management Group)によって仕様が策定されたモデル表記法の定義です
⚫ Booch法のGrady Booch、OMT法のJames Rambaugh、後に加わったOOSE法のIvar Jacobsonの
3氏が、各々の方法論と表記法を統一しようと試み、表記法のみの統一に成功したものです。
⚫ 現在は、2017年12月にリリースされた 2.5.1 が最新版です。
◼ 使い分けと併用
⚫ データモデルとしては、次の用法があります
• データモデルとしてはER図を用い、他の表現にはUMLを用いる
• データモデルとしてクラス図を用い、ER図は使用しない
⚫ クラス図以外で主に併用される図としては、ユースケース図、ステートマシン図、
シーケンス図、アクティビティ図が有用です
表記法と方法論(分析手法)
UMLの説明で、表記法としてのみ統一に成功したとあったように、その分析の進め方である分析手法に
ついては、統一されませんでした。
データモデリングとしても、その方法論には様々なものが見られ、かつては多数の図書が書店に並んで
いたものです。
• データモデリングの手法として最も知られているものに、THモデル(TH法)があります。椿博士と
穂高氏によって考案され、ChenのERモデルと同じ1976年のVLDB学会で発表されたものです
• 一方、ERモデルを考案したChenの論文時点で、その過程が無駄だからとされた正規化を1NF、
2NF、3NFと行った結果をER図で表現するなどというトンデモないものまで、図書として見られるの
が実情です
前述したように、構造化からデータ中心、そしてオブジェクト指向へと技術は継承してきました。
このオブジェクト指向を踏まえ、しかしデータに特に着目した業務分析を行うのに都合の良いER図を
用いる手法があります。
本書では、「TM」と呼ばれるその手法について解説していきます。
私は、このTMと呼ばれる手法で業務分析を行い、そこで見出した情報の構造とユースケースから
設計を行うということで、ICONIXプロセスを流用していました。
16
標準記法と
ツール利用
⚫ 標準記法と ツール利用
⚫ 表記法紹介
⚫ IE法の表記
⚫ モデリングツール
⚫ astah*Professionalを起動する
⚫ 矩形の色分け
⚫ 書き始めてみる
⚫ 作図練習1
⚫ 知っておいて欲しいこと
⚫ モデルと図
17
表記法紹介
拡張されたER表記には、いくつか代表的な表記法があるので、ここで紹介します。
18
IE法 IDEF1X Barker-ER
最も一般的なデータモデリング作図スタイル
が、「インフォメーションエンジニアリング」
(IE)の表記法である。
James MartinがIEについての彼の有名な
著作や、IEについての教育を行っていく中で、
一般に普及するようになったために、この名
前がついた。
IE記法では、三叉の槍または「烏の足」の
形をした線と、○や|の記号を使ってカーディ
ナリティを表現する。
別のデータモデリング表記法で、元々は
米国空軍のために開発されたものである。
「烏の足」にかわって丸(黒と白)と線
(実線と点線)を使い、IEと同様の意味を
伝達している。
米国標準技術研究所(NIST)が規格化
したもの。
IDEF0のプロセス図では、IDEF1X記法を
用いることが多い。
Richard Barkerらがイギリスのコンサル
ティングファームであるCACIにて1981年頃
開発した表記方である。BarkerのOracle
への入社で採択され、Case Methodシリー
ズの一部として定義されている。
「烏の足」表記のバリエーションでもあり、
ネストされたボックスでの抽象化表記と、
排他的弧や、ロールアップエンティティなどが
特長的である。
IE法の表記
◼ エンティティ
⚫ 矩形の上にエンティティ名
⚫ 矩形の上部にキー項目
⚫ 矩形の下部にキー項目以外の属性
◼ リレーションシップ
① 1対0以上Nまで
② 1対1以上Nまで
③ 0または1対0以上Nまで
④ 0または1対1以上Nまで
◼ 依存関係
A)強い関係(依存)
• 矩形の角が丸い
B)弱い関係(非依存)
• 矩形のまま
19
①
②
③
④
A)
B)
モデリングツール
データモデルを書くにも、専用の道具が必要です。
20
打合せの場などで、話をするのに
ホワイトボードに手書きするような
こともありますが、それでも後で使う
のなら、いずれ何らかの形でPCで
モデルとして書くことになります。
モデル図を書くからとVisioを使う人
や、何でもかんでもExcelで書く人も
いますが、それは単なる図に過ぎま
せん。
作成や修正の効率を考えても、メタ
データとしての定義のことからも、そう
いった図だけ書くのではなく、必ず
専用のツールを使ってください。
どのツールを使うか?
いくつか良く知られているものがあるので、紹介しておきましょう。
Erwin Data Modeler /
Embacadero ER/Studio
Oracle SQL Developer /
SI Object Browser ER
ChangeVision社
astah*Professional
物理モデルと、RDBMS間の連携など、
多機能ですが、高価です
左記に比べ、比較的に安価であったり、
無償のものも幾つか見られる
Erwinなどより1桁は安価で、かつ
UMLを書くことができる
⚫ 本書では、このastah*Professionalを使用します(参考:astah*を使いこなそう ライセンス案内)
実際のプロジェクトでは、お客様の指定のツールを使うこともあるので、できるだけ色んなツールを触っておきましょう。
astah*Professionalを起動する
astah*Professionalを起動してください。
◼ 様々な種類の図が書けます。ER図を選んでみましょう。
21
ER図を書く画面が開きました。各部の名称を覚えてください。
22
ツールパレットプロジェクトビュー
プロパティビュー
ダイアグラムエディタ「表記」は、「IE」を
選択しておいてください
矩形の色分け
本書で採用しているTMという手法では、エンティティなどの矩形に様々な意味付けをしています。
astah*Professionalには、この分類表記が無いため、色分けでその分類を示します。
システムプロパティの設定で、「新規ERエンティティの型の色」を下図のように設定してください。
23
◼ 左図は、ツール→システムプロパティ
→新規ERエンティティの型の色、で設定している例です
◼ 複数人でモデルを書く場合には、あらかじめ設定を
共有しておきましょう
書き始めてみる
では、指示に従って、下の図を書いてみましょう。
24
① ツールパレットからエンティティのアイコンからResorceエンティティを選び、
ダイアグラムエディタ上に置く
② 名称を「従業員」に変更する
③ 右クリックメニューから主キーの追加、或いはShift+CTRL+Kキーで、
「従業員番号」を入力する(◆をクリックでも可)
④ 右クリックメニューから属性の追加、或いはCTRL+Rキーで、
「従業員名」を入力する(◆をクリックでも可)
⑤ 「部門」も同様に作成する
⑥ エンティティのアイコンから対照表エンティティを選んで1つ置き、名称を
「従業員.部門.対照表」とする
⑦ 依存型リレーションシップを従業員から引く
⑧ 依存型リレーションシップを部門から引く
※ リレーションシップは、ツールパレットからの選択でも、エンティティに
マウスを重ねて出てくるガイドからも引くことができます。
作図練習1
エンティティを書いてみる
25
リレーションシップを書いてみる
26
知っておいて欲しいこと
◼ モデルと図
◼ エンティティを作成すると、プロジェクトビューに作成したエンティティが現れていることに注意する
◼ 「図から削除」と「モデルから削除」は違う
⚫ ダイアグラムエディタ上のエンティティを単純にDELキーで消してもプロジェクトビュー上の定義には
変化がない(モデルは削除されていない)
⚫ モデルをドラッグして、ダイアグラム上にドロップすると、リレーションシップを含めて再現される
⚫ 右クリックメニューから「モデルから削除」すれば、プロジェクトビューからも削除される
図の削除ではない、モデル自体の削除である
◼ プロパティビューの活用
◼ 先ず、エンティティにしろ、リレーションシップにしろ、各属性にしろ、「定義」が書けるので活用すること
これがないと、メタデータとして活用できるようにならない
◼ エンティティの型であったり、多重度であったり、依存と非依存の切り替えなども、ここでもできる
図上での操作と、プロパティ上での操作が可能なことがある
27
モデルと図
28
①こちらがモデル
②こちらは、単に
図に過ぎない
③図から、単純にDeleteしても、
モデルからは削除されない
プロジェクトビューから「従業員」を
選んで、ダイアグラムエディタに
ドラッグ&ドロップすると、きちんと甦
る
モデリング手法詳細
⚫ TM(T字形ER手法)とは/特長
⚫ 本書のベースとなっているサイト、書籍
⚫ モデルの構成要件
⚫ モデル作成の手続きの流れ
⚫ TMで作成するドキュメント
⚫ TMのオリジナル表記
⚫ astah*で書くと?
⚫ IE法によるリレーションシップ表記
⚫ エンティティを構成/類別する
⚫ 関係を構成する
⚫ エンティティ間の関係
⚫ エンティティが集合として正しいか調べる
⚫ エンティティが事実として正しいか調べる
⚫ 作図演習
29
TM(T字形ER手法)とは
TM は佐藤正美氏が開発したデータモデリング手法です。
「DOA(Data Oriented Approach)」と呼ばれているデータ設計手法の範疇に含められて語られる
こともありますが、単にデータ設計を行うのではなく、データから業務分析を行う手法です。
(佐藤正美氏本人はDOAの範疇に含められることは否定しており、 成り立ち的にはオブジェクト指向の
方が馴染みが良いでしょう)
本来は、IEの手法に近い独自の記法が用意されていますが、本書ではIEの記法で説明します。
購買管理、販売管理、生産管理などのいわゆる基幹系システムの業務分析・データ設計に適して
います。DMBOK2の「第5章 データモデリングとデザイン」を参考にするならば、「リレーショナル」という
スキームに属しているものです。
30
TMの特長
31
事業を解析しながら、データ構造を作る手法です。
ルールに従って作成します。
⚫ ルールによりある程度機械的に作成できるので素早く作成できます。
⚫ 正規化を意識しなくても正規化されたデータモデルが作成できます。
⚫ 漏れ・抜けがないことを検証できます。
データモデルで業務の流れがわかります。
⚫ タイムスタンプを使ったルールにより実現します。
⚫ DFDや業務フローは外部システムとの関係を表すもの、個別に流れを説明するものなど、
用途に応じて必要最小限の記述で済みます。
このモデルをベースに開発を行うことで、生産性とパフォーマンスを高めます。
⚫ プログラムが単純(分岐が少)になります。
⚫ RDBMSでは、Index-only、Null-keyといったテクニックにより高パフォーマンスを実現します。
本書のベースとなっているサイト、書籍
本書は「TM」という手法を扱っており、以下のサイトと書籍をベースとして
います。(最終ページも御覧ください)
◼ サイト
◼佐藤正美の問わず語り
◼ TM の最新 バージョン (TM3.0)
◼ 書籍
◼データベース設計論―T字形ER 関係モデルとオブジェクト指向の統合をめざして
ほぼほぼ、本書の内容をベースとしています。
◼T字形ER データベース設計技法
既に販売されていませんが、私のベースは今でも、こちらの本のままです。
32
モデルの構成要件
事実(現実的事態)を正確に記述するために以下の点に従いってください。
ユーザー言語を変形しない
◼ 顧客が使用している名前、用語を勝手に変更したり、属性(項目)を勝手に追加しないで
ください。(必要な場合は顧客の合意の下で行います)
できる限り機械的に構成する
◼ 後述するTMの文法(ルール)に従って構成します。
◼ ルール(構文)を外すと、他の人が同じように読めないものができてしまいます。
33
モデル作成の手続きの流れ
下記を左から順に実行する
34
エンティティを
構成する
⚫ 項目の洗い出し
⚫ 個体指定子を見つける
⚫ エンティティの作成
エンティティを
仕分けする
⚫ イベントとリソースの区別
関係を構成する
⚫ イベント:リソース
⚫ リソース:リソース
⚫ イベント:イベント
⚫ 再帰
エンティティが集合と
して正しいか調べる
⚫ 部分集合(サブセット)
⚫ 多値
エンティティが事実と
して正しいか調べる
⚫ みなしエンティティ
⚫ スーパーセット
(クラス概念)※
TMの基本 TMの拡張
※本資料では説明を割愛します
TMで作成するドキュメント
TMによるデータモデリングでは、ダイアグラムの他に補助資料として
以下のものを作成します。
35
補助資料 作成する単位
分析時
作成
設計時
作成
①アトリビュートリスト
アトリビュート(属性)ごとに作る
エンティティ、属性ともにプロパティで定義を記述する
○ ○
②リレーションシップの 検証表 情報(画面、帳票)ごとに作る ○
③キー(index-key)の定義書 テーブルごとに作る ○
④アルゴリズムの指示書 プログラムごとに作る ○
TMのオリジナル表記
本書ではastah*を使ってIE法で表記していますが、オリジナルの記法に
ついても紹介しておきます
36
従業員番号 従業員氏名
・
・
従業員 R
AttributesIdentifier
Entity名称
Entity種別
R:Resource
E:Event
エンティティの形が
「Tの字形」になっている。
仕訳帳の概念から応用
◼Eventエンティティを時系列に左から右に並べて配置します。
◼箱を線で結んで関係を示します。
(TMの結線はIE 表記を使用しています)
◼オリジナル記法に対応したツールには、以下があります。
⚫ ITS社のTER-MINE2
ルールに準拠したモデルを書くには最適です。
楽々Framawork連携バージョンもあります。
astah*で書くと?
表記が異なるため、次の違いが生じます。
37
エンティティ名
◆ 箱(矩形)の形が異なる
◆ Identifierの(R)が、(FK)になってしまう
◆ IE法では、リレーションシップに依存型と
非依存型が有って、使い分けが必要になる
◆ EとかRとか種別が表記できない
(種別毎の色分けだけはできる様になって
いるため、それを利用するとともに、
エンティティ名の横に記載することもある)
◼ オリジナル表記
◼ IE表記
IE法によるリレーションシップ表記
前述の通り、リレーションシップでは、次のような表現が可能です。
38
親が必須で
親が1つに対し、
子は任意
子はN個
顧客から請求への関係で、一つの顧客に対して、複数の請求が存在し、
一つも存在しないこともある。
2つの表記での作図例①
オリジナルのTM表記(TER-MINE2で作図したもの)
39
2つの表記での作図例②
astah*によるIE表記(astah*Professionalで作図したもの)
40
最初に行うのは、まず対象領域のインプットから項目を洗い出すことです。
そして、その中から個体指定子を見つけて、エンティティを捕捉します。
◼ エンティティとは
⚫ TMでは、事業を行なっている者が、それを識別するために付与した何らかの「個体指定子」を持ったモノの集まりを
「エンティティ」として捕捉する
⚫ 個体指定子(認知番号と呼ぶことも)とは、 「xx番号」、「xxコード」、「xxID」といった管理番号のことで、事業を
管理するために事業に携わった人々の間で合意して使われているものである。SEが顧客と合意せずに勝手に作っては
いけない。これを疎かにされると、後に事実との照合が難しくなってしまう
◼ エンティティの捕捉
⚫ 例えば、「顧客コード」を用いた「顧客」エンティティ
⚫ 「商品番号」を用いた「商品」エンティティ など
○○伝票
注文番号:0001
顧客番号:1150
商品番号:AA11
注文日 :12/12/12
数量 : 50
エンティティを構成する
41
商品
商品番号
注文
注文番号
顧客
顧客番号
エンティティを類別する
エンティティは、固定指定子を持ったものの集まりですが、TMでは次の2つに類別して扱います。
◼ イベントエンティティ
⚫ タイムスタンプ(受注日、出荷日など)を持つもの
⚫ つまり、時系列に並べられる
◼ リソースエンティティ
⚫ イベントでないエンティティ
⚫ 並び順に意味が無い
時系列に並びを問うということは、業務上で順序となります。このため、イベントエンティティの並びを
追えば、業務フローを書かなくても、基本的な業務の流れを追うことができます。
一般的にはマスタデータとトランザクションデータといった言い方をされますが、通常その区別は感覚的に
行われています。 TMでは日付が「帰属する / 帰属しない」でイベントとリソースを区別することで、
恣意的な判断を排除しています。 ただし、作成したモデルを「事実として正しいか」顧客と確認する中で、
イベントとリソースの区別を変更する場合があります。
42
受注 E
受注日
受注数
受注NO
出荷 E
出荷日
出荷数
出荷NO
請求 E
請求日
請求金額
請求書NO
イベントエンティティを時系列に配置する。
関係を構成する
エンティティとエンティティは関係を結ぶことができます。
一般的にエンティティ間の関係は「リレーションシップ(関連)」と呼ばれています。
またastah*でもリレーションシップと呼んでいますが、ここでは「関係」という言葉を使って説明します。
エンティティの関係には以下の種類があります。
① リソース:リソース
② リソース:イベント
③ イベント:イベント(先行イベントが多になる)
④ イベント:イベント(先行イベントが多にならない)
⑤ 再帰
順に見てみましょう。
43
エンティティ間の関係(リソース:リソース、リソース:イベント)
44
◼ リソース:リソース
対照表(交差エンティティ)を作る
◼ リソース:イベント
イベント側に引き込む
両方のリソースから
対照表を作る
リソースの個体指定子を
イベント側に引き込む
エンティティ間の関係(イベント:イベント 2種)
45
◼ イベント:イベント
先行イベントが多(N)になる
対応表(交差エンティティ)を作る
◼ イベント:イベント
先行イベントが多(N)にならない
後続側に引き込む
両方のリソースから
対照表を作る
リソースの個体指定子を
後続側に引き込む
エンティティ間の関係(再帰)
46
◼ 再帰(リソースを使った)
一つの部品に対し、部品の構成要素と
して使われるような場合。
◼ 再帰(イベントを使った)
受注伝票に対する赤電のように、
同じエンティティの別な個体が当て
られるような場合。
2本目のリレーションシップを引く。
それぞれの個体指定子の名称を変更する。
残念ながら、astah*には、1アクションで再帰を書く機能が無い
エンティティが集合として正しいか調べる
サブセット(真部分集合)を見つけます。
47
真部分集合なので、このサブセット間の
関係は、常にORでなければならない
◆ 「○○区分コード」などにより見つかる場合が多い
◆ 必ずOR (排他的選言)の関係でなければならない
◆ サブセット間の属性の構成が異なる場合には、
その可能性が高い
◆ 階層化することも有る。ものによっては、かなり深い
(10階層とか)ことも有る
◆ 階層の順序を入れ替えても成立する場合、部分集合
ではなく、別な視点の分類にすぎない可能性が高い
1対多の関係は、多値と多義の2種類が有ります。
48
◼ 多値
⚫ 同時に複数発生する
⚫ 例:1つの受注と受注明細
◼ 多義
⚫ 同時に成立せず、利用時に選択するもの
⚫ 例:商品の或る種類の価格
エンティティが事実として正しいか調べる
TMの手法では、個体指定子が付与されたものだけをエンティティと定義しています。
49
しかしながら、個体指定子を持っていないが、エンティティとして認識できるものがあります。
このエンティティを検証する手続きが「みなし概念」です。
実業務では識別子の流用が見られる。例えば、注文番号をそのまま使った出荷など
特に業務上「それ」として認識
すべきと考えたものには、「それ」
として認識するための記号が与え
られていると考えるからである
「それ」としての識別子を持たな
いものは、識別子を与えられて
いる別なものに関連した何かで
あると考える
エンティティとして捕捉したもの
の属性に着目し、本当にその
「属性」なのか、関連した何かが
混入しているのかを見分ける
必要がある
見た目には、
独自の識別子の無い
エンティティのようである
みなしエンティティは、以下のような場合に作成します。
50
一つのresourceの中に
event的な属性が混入している
一つのresourceの中に
他のresource的な属性が混入している
一つのeventの中に
resource的な属性が混入している
一つのeventの中に
他のevent的な属性が混入している
作図演習1
次の画面からデータモデルを作成してください。
51
受注入力画面
品目コード 品目名称 受注数品目単価 受注金額
XXXXXX ×××××××××× 9999,999 9,999,999
受注№:9999 受注日:9999-99-99
顧客№: 999999 顧客区分:×× 顧客名称:××××××
◆ 書き方や意味については、(更に自分で学習できる様に)佐藤正美氏の
「データベース設計論ーT字形ER」の実践編に有る例題を題材にしています。
◆ 詳しくは、図書を参照下さい。
先ずは、仕分けを行います。
52
受注入力画面
顧客№
受注№
品目コード
顧客区分
顧客名称
受注日
品目名称
品目単価
受注数
受注金額
これは、TMの手法で良く使われる仕訳表です。
Tの字の上側に入力ソース、左下には個体指定子の
候補となる項目、右下にはその他の項目を並べます。
入力ソースの複雑度によっては、仕訳表を介さず、
直接ダイアグラム上にエンティティと作成しても良いです。
TMの手法では、未仕分けの
項目を「ラピュタ」という箱に
入れておき、それをそれぞれの
器に移していくというやり方を
することがあります。
53
要確認
更に分解し、ラピュタの中から属性を割り振っていきます。
入力ソースから
当たりをつけ、
それぞれのエンティティに
振り分けます。
後に、その妥当性の
確認を行います。
エンティティを類別し、関係を作成します。
54
②タイムスタンプがないので、
リソースエンティティである
③ 入力ソース内の関係から
リレーションシップを作成する
①タイムスタンプがあるので、
イベントエンティティとする
作図演習2
もう一問、こちらは過程を一通り追う問題です。
次の画面からデータモデルを作成してください。
55
申請情報
品目コード:XXXXXX 品目名称: ××××××××××
申請日:9999-99-99申請番号: 999999
購入先コード:XXXXXX 購入先名称: ××××××××××
数量:999 単価種別コード:XXX 単価:99,999
希望納期:9999-99-99
あり なし付属品: あり なし添付資料:
部門コード:XXXXXX 部門名称: ××××××××××
使用者氏名:××××× 使用者電話番号: 9999999999
配送場所コード:XXXXXX 代替配送場所コード:XXXXXX
以下を前提条件とします。
①単価は、品目単価のことである
• 単価には、「正価格(種別コード=1)」と、「割引価格(種別コード=2)」が有る
②付属品が「あり」について、資料添付が対象となる
• 付属品が「なし」については、資料添付が対象にならない
③使用者は「社員」に限らないので、「社員番号」を使わないで、氏名を記述する
④配送場所は、申請した品目を配送して貰う場所のことである
• 配送場所には、それぞれに代替場所の指定が可能で、代替場所コードには、
配送場所コードを使う
⑤品目毎に購入先が決められている
56
では、画面と前提条件を基に書いてみましょう。
◼ まず、情報を仕分けし、エンティティを捕捉する
◼ 属性をわかる範囲で、エンティティに割り当てていく
⚫ 配置先が明らかでないものは、ラピュタに置いておく
◼ エンティティを類別する
⚫ タイムスタンプが置ければイベント、でなければリソース
◼ 関係を考え、リレーションシップを引いていく
⚫ リソースとリソースの関係の場合は、対照表を置く
◼ 多値と多義を考える
◼ 部分集合や構造を検討する
⚫ サブセットになるものを検討する
⚫ みなしに該当するものを探す
57
仕分けます。
58
申請
申請番号
品目コード
購入先コード
部門コード
配送場所コード
代替配送場所コード
申請日
品目名称
購入先名称
数量
単価種別コード
単価
希望納期
付属品(あり/なし)
添付資料(あり/なし)
部門名称
使用者氏名
使用者電話番号
「○○コード」なので個体識別子の
候補になりそうですが、前提条件①で、
値が1と2の2種類しかないことから、
ここでは個体指定子とみなさない
そのまま図にしましょう。
◼ 仕訳表の左側からエンティティに
59
◼ 属性を割り当て、エンティティを類別する
60
タイムスタンプが有るのは、「申請」エンティティだけ。
他は、リソースとする
取り敢えず、関連する項目は全て配置してみた
61
◼ 関係を考え、リレーションシップを引く
前提条件⑤より
前提条件④より、
再帰の構造が読み取れる
◼ 部分集合や構造を検討する
62
前提条件③より
前提条件②より
希望納期が無い場合を認めるなら
外に出す(候補は1つ?)
検証と考察を行いましょう。
◼練習問題だから、事実に対する検証はできないので、形式的なものである
◼考察すべき点や疑問点は、次の通り
⚫ その時点の単価を申請に記録しないか?
⚫ リソース間の関係を点検する
• 購入先と配送場所に関係は無いか?
• 品目と配送場所に関係は無いか?
⚫ 各リソースエンティティと申請への関係が、非依存か依存か?
• TMには無い考え方、ルールであるため規定しにくい
◼結果的に、イベント1つだけなので、配置に関する言及はできない。
複数のイベントが有るなら、時系列に並べる
63
作図演習3
次のテーブル定義を基にデータモデルを作成してください。
64
取引番号
注文番号
注文日
顧客番号
顧客名
商品番号1
商品名1
商品単価1
注文数量1
注文金額1
出荷番号
出荷日
請求番号
請求日
請求金額
商品番号2
商品名2
商品単価2
注文数量2
注文金額2
商品番号3
商品名3
商品単価3
注文数量3
注文金額3
注文金額計
続く
続き
◆前提条件:
① 注文番号、出荷番号、請求番号は、取引番号とは別に、
独自に裁番されている
② 注文については、同時に3つまでの商品が注文可能である
③ 注文ごとに出荷する
④ 注文ごとに請求する
バラしてみましょう。
65
取引番号
注文番号
注文日
顧客番号
顧客名
商品番号1
商品名1
商品単価1
注文数量1
注文金額1
出荷番号
出荷日
請求番号
請求日
請求金額
商品番号2
商品名2
商品単価2
注文数量2
注文金額2
商品番号3
商品名3
商品単価3
注文数量3
注文金額3
注文金額計
商品番号
商品名
商品単価
ルール通りに書いてみましょう。
◼ こんな感じになりましたか?
66
少し前提を変えてみる
①いくつかの注文をまとめて出荷したい
②月毎にまとめて請求したい
◼ 考慮すべき点は何か?
67
取引番号で一連に括っていることで、
逆にまとめて扱うことができなくなっている
①取引番号を廃止してみる
②注文に対する出荷である
③注文に対する請求である
モデルを変更してみよう!
◼ 例えば、こんな図にして検討する
68
まとめ出荷に対応
3つまで、という制限は不要にできる
器(テーブル)による制約なのか?
業務による制約なのか?
どうしても、これらが一連の「取引」と示したい
場合には、概念的なスーパーセットとして置く
こともできる
まとめ請求に対応
という様な「検討にも、モデルが使える可能性がある」という演習問題
実践と補助資料
⚫ レビューのポイント
⚫ モデルを読む
⚫ 検証にも分析にも
⚫ アトリビュートリスト
⚫ データモデリングと組織のお話
69
レビューのポイント
データモデルのレビューを実施する際のポイントを以下に示します。
70
正しく書けたか モデルは事実を示しているか
◼ 個体指定子は実在しているものか
⚫ 勝手に作成していないか?実在するものか?
◼ リソースとイベントは類別できているか
⚫ タイムスタンプが置け、順序が問われるか?
◼ NULLが発生する属性はないか
⚫ 場合分けが必要ならサブセット化を検討する
◼ 区分コードが放置されていないか
◼ サブセット間に同じ情報が存在していないか
◼ みなしエンティティとなる属性を見逃していないか
◼ エンティティ間の関係は正しいか
◼ イベントエンティティの順序(業務の順序)は
正しいか、例外はないか
◼ エンティティの属性(項目)はそのエンティティに
あるのは正しいか
◼ モデルに示されていない業務(抜け・漏れ)は
ないか
モデルを読む
書いたモデルは文に直して読むことができます。
以下のような「受注」エンティティと「出荷」エンティティの関係がデータモデルで表されているとき、
それぞれの業務は図上の説明の業務になっていることがわかります。
レビューではこのようにモデルを読み、実際の業務と食い違っていないかを確認します。
71
(FK)顧客番号
受注日
受注番号
受注HDR[E]
受注明細番号
(FK)商品番号
(FK)受注番号
受注DTL[MA]
(FK)顧客番号
出荷日
(FK)受注番号
出荷番号
出荷[E]
(FK)顧客番号
受注日
受注番号
受注HDR[E]
受注明細番号
(FK)商品番号
(FK)受注番号
受注DTL[MA]
(FK)顧客番号
出荷日
出荷番号
出荷[E]
(FK)受注番号
(FK)出荷番号
受注HDR.出荷.対応表
①1件の受注に対して出荷する ②複数件の受注に対してまとめて出荷する
(FK)顧客番号
受注日
受注番号
受注HDR[E]
受注明細番号
(FK)商品番号
(FK)受注番号
受注DTL[MA]
(FK)受注明細番号
(FK)受注番号
(FK)顧客番号
出荷日
出荷番号
出荷[E]
(FK)顧客番号
受注日
受注番号
受注HDR[E]
受注明細番号
(FK)商品番号
(FK)受注番号
受注DTL[MA]
(FK)顧客番号
出荷日
出荷番号
出荷[E]
(FK)受注明細番号
(FK)受注番号
(FK)出荷番号
受注DTL.出荷.対応表
③1件の受注明細に対して出荷する ④複数件の受注明細に対してまとめて出荷する
イベントの順序についてもモデルを読んで業務と同じか確認します。
特に、「通常はモデルどおりの業務の順序だが、まれに異なる順序となるケースもある」ということが
ないかを確認する必要があります。もしそのようなケースがあれば、対応可能なモデルに変更します。
72
受注日
受注番号
受注[E]
(FK)受注番号
請求日
請求番号
請求[E]
(FK)請求番号
入金日
入金番号
入金[E]
(FK)入金番号
出荷日
出荷番号
出荷[E]
受注日
受注番号
受注[E]
(FK)出荷番号
請求日
請求番号
請求[E]
(FK)請求番号
入金日
入金番号
入金[E]
(FK)受注番号
出荷日
出荷番号
出荷[E]
受注日
受注番号
受注[E]
(FK)受注番号
請求日
請求番号
請求[E]
(FK)請求番号
入金日
入金番号
入金[E]
(FK)受注番号
出荷日
出荷番号
出荷[E]
①受注の後に請求、請求の後に入金、入金の後に出荷がある
②受注の後に出荷、出荷の後に請求、請求の後に入金がある(①と順序が異なる)
③受注の後に出荷と請求があり、請求の後に入金がある(出荷と請求・入金の間に順序はない)
属性がどのエンティティにあるかによっても業務が異なることが読めます。
単価の例を示します。
73
受注明細番号
(FK)商品番号
(FK)受注番号
受注DTL[MA]
単価
商品名
商品番号
商品[R]
単価
受注明細番号
(FK)商品番号
(FK)受注番号
受注DTL[MA]
商品名
商品番号
商品[R]
単価
受注明細番号
(FK)商品番号
(FK)受注番号
受注DTL[MA]
単価
商品名
商品番号
商品[R]
①単価は「商品」にある
→正価を使っている可能性が高い
②単価は「受注DTL」にある
→単価が日々変る可能性が高い
④単価は「商品」と「受注DTL」両方にある
→何らかの条件で割引を行っている可能性が高い
受注明細番号
(FK)商品番号
(FK)受注番号
受注DTL[MA]
商品名
商品番号
商品[R]
単価適用日
(FK)商品番号
単価
商品.単価[VE]
③単価は「商品」のみなしエンティティに
あり、単価適用日を持っている
→単価が適用日ごとに変わる
検証にも分析にも
リソースエンティティ間の関係を検証しましょう。
◼ 全てのリソースエンティティ間の検証というのは現実的で無いため、例えばある入力画面で
使われているものとか、一連の業務のイベントに関連するものに対して実施する
◼ エンティティの関係があるものに○を付ける
◼ 既に確立しているはずの関係の見落としを検証する
◼ 未だ確立していない関係の成否を検証する
◼ 関係があればデータモデルに記入する
74
顧客 受注 商品
顧客
受注
商品
○
○
持っているのに活用されていないデータを
発見し、他のデータとの関係を考えることに
よって、新たなビジネスモデルの発見に
つなげられる可能性が有る
75
左の図の例で見てみる
◼ 現に成立している関係を○印を付けて記述する
⚫ 顧客と受注は成立している
⚫ 受注と商品は成立している
◼ 成立していない関係を(成立するか否か)検証する
⚫ 顧客と顧客の再帰は可能か?
⚫ 顧客と商品は関係しているか?
⚫ 受注と受注の再帰は可能か?
⚫ 商品と商品の再帰は可能か?
顧客 受注 商品
顧客
受注
商品
○
○
更にビジネスの可能性を検討してみましょう
◼ 3つのentity間に成立する「関係」の可能態は6つである
◼ 現実に成立している関係は、2つである(1/3の成立)
◼ 関係(ビジネス・ルール)の可能性として、2/3の余地がある
⚫ 顧客-商品に関係はないか?
「特定顧客にのみ販売する(または販売しない)商品がある」、「欲しいものリスト」 など
⚫ 顧客-顧客に関係はないか?
「紹介した顧客と紹介された顧客」 など
⚫ 商品-商品に関係はないか?
「セット商品」 、「代替商品」など
アトリビュートリスト
データ項目ごとに以下の内容を記述したリストを作成します。
モデル図では表現できない制約などを記述します。
個々のデータのメタデータの定義ということです。情報の構造定義とともに、個々の詳細を定義します。
データモデリングツールでは、データ項目ごとにこの内容を設定し、一覧出力できるようになっています。
76
1. 項目名
項目の名前を記述する。必要により論理名と物理名
(データベースに実装する名前)
2. データ定義
データ型、桁数や精度、値の範囲
3. 制約・束縛
他のデータ項目から影響を受ける場合や他のデータ項目に
影響を与えている場合は、その内容を記述する
4. 機密性
機密に該当するデータかを記述する
5. 導出手順や計算式
計算項目の場合はその計算式を記述する
アトリビュートリストの例
論理エンティティ名 受注
物理エンティティ名 ORDER
論理名 値引き金額(D)
物理名 ORDER_NEBIKI_KINGAKU
データ定義 NUMBER(10)
制約・束縛 顧客エンティティの顧客区分がゴールドの場合、システムパラメータ
で指定された「値引き率」と計算し、値引き金額を設定する
機密性 なし
導出手順 顧客区分が一般の場合:
 0固定
顧客区分がゴールドの場合:
 受注金額(受注明細の1明細 「単価×数量」を計算しその明
細のすべての合計) * 値引率 / 100
 小数点以下は切り捨てる
astah*では、表や属性ごとに定義を記述する欄が用意されているので、
その欄に記述しておくことができます。
77
◼モデルの定義 ◼エンティの定義◼図の定義 ◼属性の定義
他に、リレーションシップについても定義が可能である。
データモデリングと組織のお話
データモデリングを行う際に必要となるスキルは何でしょうか?もちろんモデリングできないことには話に
なりません。もう一方では、対象の業務に詳しい人が必要です。ドメインスペシャリストなどとも呼ばれたり
しますが、実際のデータを生成、また利用する部門の人です。モデラーとドメインスペシャリストが揃って
始めて優位なモデルが作成できます。
多くの企業で、情報システムの開発には、下図のように情報システム部門の人が、業務部門の人から
要望を受け、それをまとめてITベンダーに発注するという形態を見かけます。
78
アーキテクチャは、都度個別にITベンダーが
決めており、その際にデータ構造に着目される
ことは少ないです。
今後自社でデータの定義を見直し、統合データ基盤やデータカタログを構築していきたいという場合には、
自社内に何らかの形でデータマネジメント組織を持つことが必要になります。
79
組織の持ち方は、ワークグループのようなもの
から始まったり、トップダウンでCDOを立てたよう
な組織まで様々かと思います。
しかし、業務部門の方と情報システム部門の
方を繋いで、データマネジメントを実践する組織
作りが必要です。
全てのシステムを一気に作り直すことは殆ど
不可能なので、ODSにデータを集約して扱うと
いったアークテクチャの確立などが必要です。
そのための組織の立ち上げから、外部コンサル
に支援を受けて始めることが有効でしょう。
データモデリングだけとっても、モデルを書いて
管理するのは業務側の方の責任になることが
多いです。
おさらい
⚫ データモデリング手順
⚫ モデルは文だ!(モデルを読む)
⚫ モデルは文だ!(書いてあること)
⚫ モデルは文だ!(実際のシーン)
⚫ モデリングする意味(要するに)
⚫ モデリングする意味(開発に際して)
⚫ データモデリングについて
80
データモデリング手順
実例で、データモデリングの手順を振り返ってみましょう。
手順としては、以下の通りです。
81
①エンティティを構成する ②エンティティを仕訳ける ③関係を構成する
④エンティティが集合として
正しいか調べる
残りのエンティティを
リソースエンティティに
仕分ける
入力ソース(画面など)
ごとに項目を洗い出し、
個体指定子を見つける
タイムスタンプのある
エンティティを
イベントエンティティに
ルールに従って
リレーションシップ結ぶ
サブセットや多値、多義
を構成する
個体指定子ごとに
エンティティを作る
必要に応じて対照表、
対応表、再帰を置く
別のエンティティとなりうる
属性があれば、みなし
エンティティを作成する
モデルは文だ!(モデルを読む)
◼ 次のようなモデルの部分図があります。
⚫ 何が書かれていますか?
82
モデルは文だ!(書いてあること)
次のように読めるはずです。
⚫ 従業員は、従業員番号で識別され、
氏名、かな氏名と生年月日を持っている。
⚫ 部署は、部署コードで識別され、部署名を
持っている。
⚫ 従業員は、いずれかの部署に所属することがある。
⚫ 部署には、何人かの従業員が所属することがある。
⚫ 従業員は、どの部署にも所属しないことがあり、
複数の部署に所属することもある。
83
モデルは文だ!(実際のシーン)
実際の出現順は逆で、文章が最初にあります。
84
②モデルで書く
モデルで
表現する
①話を聞く
文章で
伝える
モデルを見て、文
章として読む
モデルを見て、
文章として読む
③モデルで意味を共有する
モデリングする意味(要するに)
85
業務の世界で使われている文を分解、
整理して一定の表記で表したもの
文はもともと命題なので、分解して
解明すれば、そこに論理を働かせる
ことができる
文のままより、
「色々と扱える文」ということ
モデルは「文」なので
モデルが使えるということは、
次の3つができるということ
聞いたことを分解して、
モデルとして表現できる
モデルを文として読める
聞いたことと合っているか
確かめられる
結果として、メタデータの整備ができ、業務を可視化できる。
モデリングする意味(開発に際して)
◼ 一部のアルゴリズム以外の要件や仕様は、モデルで示せます。
⚫業務を語る文を分解し、エンティティ(クラス)とリレーションシップで表す
⚫「かつ」は多重度で表し、「もし」や「または」は部分集合(サブセット/サブクラス)
で表現できる
⚫例えば料金計算や、入金時の明細への按分などの一部のアルゴリズムを除き、
7割方の業務はER図(クラス図)で表せる
⚫その他のアルゴリズムや状態、動作の説明は、他のUMLの図で表現可能
◼ オブジェクトをコードのまま理解し合う人とだけ共有するのでなければ、
モデルが有った方が、理解しやすいです。
86
誰の DXの為には高品質なデータが必要だと気付いた人の
何を 自社ビジネスにおける情報構造の分析を
何で 精緻なデータモデリングを実施することで
どうする
自社ビジネスにおける情報を認知、或いは再設計し、
活用可能な情報基盤の基礎となるメタデータを確立する
そしてどうなる
レガシー化した情報システムを変更が容易なシステムとして再構築したり、
利活用可能なデータとしてカタログ化や統合を推進する
データモデリングについて
87
おまけ
◼ 決して、安易にこうしないでください。
⚫兼務(ある従業員と複数の部署の関係)の可能性を否定して
しまっています(兼務が発生した際に変更?)。
⚫分析時点で兼務が無いからといって、このモデルにしてしまうと、
可能性を殺してしまいます。
88
(FK)DEPTNO
COM
SAL
HIREDATE
MGR
JOB
ENAME
EMPNO
EMP
DEPTNO
LOC
DNAME
DEPT
【安易な設計の構造】 【本来の業務の構造】
おまけ2
データモデリングの使い所として、私の同僚に数々の遅いシステムを速くしてきた人が
居ます。「夜間バッチが朝までに終わらない」みたいな声を受け、RDBMSのアクセスを
速くしてきました。(要望があれば、紹介します。或いは、育成もできます。)
過去には、100倍程度速くなったりしています。本人に言わせると、10倍程度では
負けた気分だと。勿論、元が真っ当に作られ、ハードウェアの限界の場合があります。
手順を示しておきます。
89
リバースモデリング アクセスパス確認 インデックス修正 SQL文修正 結果確認
現行システムの関連
テーブルを対象に、
リバースして、不足を
補ってデータモデルを
作成する。
画面等の入力ソース
から、或いはヒアリング
することで、アクセス
パスを確認する。
アクセスパスを基に、
必要なインデックスを
作成する。或いは、
既存インデックスを
修正する。
アクセスに沿い、
インデックスを有効に
使えるようにSQL文を
修正する。
結果を確認し、
必要に応じて調整を
行う。
参考資料
◼ 本書は、以下を参考にしています。
⚫DAMA/DMBOK
• DAMA日本支部 http://www.dama-japan.org/
• 書籍「データマネジメント知識体系ガイド 第二版」
https://www.nikkeibp.co.jp/atclpubmkt/book/18/270160/
⚫TM(旧:T字形ERデータベース設計技法)
• 佐藤正美の問わず語り http://www.sdi-net.co.jp/
• データベース設計論―T字形ER 関係モデルとオブジェクト指向の統合をめざして
⚫ウィトゲンシュタイン『論理哲学論考』を読む
野矢茂樹 著 ちくま書房」の前半
http://www.chikumashobo.co.jp/product/9784480089816/
90
仲間を見つける
モデリングなどの技術習得では、図書を読むなど独学やセミナー受講でも
基本的な内容がわかるようにはなれますが、問題なく使えるようになるには
壁があります。そこで、仲間、特に既に実践でモデリングをしている人を
見つけて、見て貰えるのが理想です。
91
仲間を見つけるには、
一つにはDAMAに入会
して、データモデリングの
分科会に参加してみる
というのがあります。
k.inami@dama-japan.org
【入会案内】
本書のTMに関する注意
本書は、TMの手法を用いながら、TMの記法ではなく、ツールとして
astah*Professionalを使ってIE法を記法として採用しています。
私の場合、TMの手法を使っていると言いながらも、勝手に省略したり、
厳密なルールに関しては若干の違反があります。
TMの考案者である佐藤正美さんからは、教えても構わないと言って
頂いていますが、本家本元の佐藤さんのセミナーが開催されているので、
そのお知らせを置いておきます。
COVID-19の影響もあり、開催時期についてはサイトで確認してください。
⚫ 佐藤正美のデータモデリング講座 「ビジネス分析=設計モデル / モデル作成の手続き」
⚫ 記事:~佐藤正美氏、若手エンジニアにデータモデリングを語る~
92

More Related Content

What's hot

Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
増田 亨
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
増田 亨
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
増田 亨
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
機械学習モデルの列挙
機械学習モデルの列挙機械学習モデルの列挙
機械学習モデルの列挙
Satoshi Hara
 
実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス
増田 亨
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
torisoup
 

What's hot (20)

Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
機械学習モデルの列挙
機械学習モデルの列挙機械学習モデルの列挙
機械学習モデルの列挙
 
実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 

Similar to データモデリング入門2021

'Position Paper on 2012 Constitutional Review
'Position Paper on 2012 Constitutional Review'Position Paper on 2012 Constitutional Review
'Position Paper on 2012 Constitutional ReviewCommons Professional
 
98弘道國中升學進路輔導計畫
98弘道國中升學進路輔導計畫98弘道國中升學進路輔導計畫
98弘道國中升學進路輔導計畫
Frank Liu
 
CEO-009-張忠謀的經營哲學
CEO-009-張忠謀的經營哲學CEO-009-張忠謀的經營哲學
CEO-009-張忠謀的經營哲學handbook
 
Book1
Book1Book1
6 DOF Rigid Body Equation of Motion 1
6 DOF Rigid Body Equation of Motion 16 DOF Rigid Body Equation of Motion 1
6 DOF Rigid Body Equation of Motion 1
kouhei1970
 
九年一貫
九年一貫九年一貫
九年一貫clinic
 
北北基聯合入學測驗及招生試辦計畫
北北基聯合入學測驗及招生試辦計畫北北基聯合入學測驗及招生試辦計畫
北北基聯合入學測驗及招生試辦計畫
Frank Liu
 
外籍新娘.子女之問題探討
外籍新娘.子女之問題探討外籍新娘.子女之問題探討
外籍新娘.子女之問題探討
clinic
 
黃帝外經
黃帝外經黃帝外經
黃帝外經
cheinfu9527
 
phy3.004
phy3.004phy3.004
phy3.004
ContactStudya
 
Phy3.001
Phy3.001Phy3.001
Phy3.001
ContactStudya
 
Hr 027 商學院統計系進路圖
Hr 027 商學院統計系進路圖Hr 027 商學院統計系進路圖
Hr 027 商學院統計系進路圖handbook
 
Hr 016 物理系進路圖1
Hr 016 物理系進路圖1Hr 016 物理系進路圖1
Hr 016 物理系進路圖1handbook
 
自己打造金湯匙
自己打造金湯匙自己打造金湯匙
自己打造金湯匙Chui-Wen Chiu
 
Phx7
Phx7Phx7
虛擬股票選擇權辦法說明
虛擬股票選擇權辦法說明虛擬股票選擇權辦法說明
虛擬股票選擇權辦法說明
kennychiu123
 
Livre dri
Livre driLivre dri
Livre dri
Jamaity
 

Similar to データモデリング入門2021 (20)

'Position Paper on 2012 Constitutional Review
'Position Paper on 2012 Constitutional Review'Position Paper on 2012 Constitutional Review
'Position Paper on 2012 Constitutional Review
 
98弘道國中升學進路輔導計畫
98弘道國中升學進路輔導計畫98弘道國中升學進路輔導計畫
98弘道國中升學進路輔導計畫
 
CEO-009-張忠謀的經營哲學
CEO-009-張忠謀的經營哲學CEO-009-張忠謀的經營哲學
CEO-009-張忠謀的經營哲學
 
Book1
Book1Book1
Book1
 
6 DOF Rigid Body Equation of Motion 1
6 DOF Rigid Body Equation of Motion 16 DOF Rigid Body Equation of Motion 1
6 DOF Rigid Body Equation of Motion 1
 
九年一貫
九年一貫九年一貫
九年一貫
 
北北基聯合入學測驗及招生試辦計畫
北北基聯合入學測驗及招生試辦計畫北北基聯合入學測驗及招生試辦計畫
北北基聯合入學測驗及招生試辦計畫
 
外籍新娘.子女之問題探討
外籍新娘.子女之問題探討外籍新娘.子女之問題探討
外籍新娘.子女之問題探討
 
孫子兵法
孫子兵法孫子兵法
孫子兵法
 
黃帝外經
黃帝外經黃帝外經
黃帝外經
 
phy3.004
phy3.004phy3.004
phy3.004
 
Phy3.001
Phy3.001Phy3.001
Phy3.001
 
Hr 027 商學院統計系進路圖
Hr 027 商學院統計系進路圖Hr 027 商學院統計系進路圖
Hr 027 商學院統計系進路圖
 
Hr 016 物理系進路圖1
Hr 016 物理系進路圖1Hr 016 物理系進路圖1
Hr 016 物理系進路圖1
 
自己打造金湯匙
自己打造金湯匙自己打造金湯匙
自己打造金湯匙
 
Phx7
Phx7Phx7
Phx7
 
虛擬股票選擇權辦法說明
虛擬股票選擇權辦法說明虛擬股票選擇權辦法說明
虛擬股票選擇權辦法說明
 
Rezome
RezomeRezome
Rezome
 
Livre dri
Livre driLivre dri
Livre dri
 
Phx23
Phx23Phx23
Phx23
 

データモデリング入門2021