1 Seasar Conference 2006 Spring © The Seasar Foundation and the others 2006. all rights reserved. EJB3 時代の ERD レッスン ~ Activity Based Datamodel 2006.05.14.

Slides:



Advertisements
Similar presentations
All Rights Reserved Copyright © 2004, Takashi Kobayashi 1 ロバストネス分析の演習問題 <問題1> 次の文をよんで問いに答えよ。 顧客は、 ATM により自分の口座から預金を払い出す。 顧客は、 ATM にキャッシュカードを挿入し、個人認証を行う。
Advertisements

© Copyright the Seasar Foundation and the others all rights reserved. 1 S2Axis2 による Web2.0 らくらく実践 2006/05/14 Seasar Conference 2006 Spring 鈴木 貴典.
データベース. レシートを見てみよう コンビニやスーパーで買物をするときの レシートを見てみよう – 何がかいてあるだろうか? – レジで全部打ち込んでいる? – なぜ、打ち込まないのにレシートには商品名 や価格が出てくるの?
オープン&ビッグデータ活用・地方創生推進機構 事務局 オープン&ビッグデータ活用・地方創生推進機構 評価版ツールの状況報告 平成26年度第3回 技術委員会 資料3-1.
New WorkFriend (AS版・PC版 概要説明) <New WorkFriend とは?> ・ネットワーク環境の上で、データベースを日常業務に活用す る。 ・WindowsのExcelとリンクした、照会・更新・分 析をするツール。 <New WorkFriend の機能> 1.データベースの照会機能.
データモデリング ボトムアップ分析. ボトムアップ分析の手順 トップダウン分析の結果とは別に実施 画面や帳票イメージからモデル化 ①画面や帳票を集める ② Excel などのワークシートで,エンティ ティ,データ項目名を決める ③ドメインを定義し,データ項目に割り当 てる ④正規化を実施 ⑤発生タイミングでエンティティを分離.
生産管理システム TCC 開発事例 ・業種 製造業 ( 機 械 ) ・分野 生産管理. Step by Tomorrow システム概要 工場の受注から生産、在庫、製造、原価を一括管理で きる統合生産管理システムです。 その他の機能として、社内業務を支援する機能として タイムシート、掲示板、新着情報、行動予定表などの.
S2.4 & S2EJB3Unit 中村( taedium ). Seasar 2.4 の特徴 1 Sesar 2.4 は EJB 3.0 を実 装しています。 EJB 3.0 の仕様は 5 月 12 日に Final Release されたばかりの新しい技 術です。
2007 LEAD Corporation All rights Reserved. CTI 連動システム 「与力(よりき)の電話番」 f or 商奉行ご提案書 株式会社 リード.
実践!DB逆設計 ~レシートからER図を起こす~
Windows Workflow Foundation of .NET Framework 3.0
本日のスケジュール 14:45~15:30 テキストの講義 15:30~16:15 設計レビュー 16:15~16:30 休憩
DB(データベース)のおはなし 作成者:小野正広 DBと言っても、  ドラゴンボール ではないですぞ! 3/1/2017.
ソフトウェア工学特論III 第10回 その他の図 情報通信工学専攻 GM11013 堀江 真史
リレーショナル・データベース データベース論 第10回.
JPAを利用した RESTful Webサービスの開発
Shimatterシステムの 初期モデルの正規化
Relation Mapping EJB 3.0 コース 第9回 2006年8月6日.
主キーと主要属性の定義.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
続 Entity Framework 入門 SQLWorld #8 サヴロウ.
データモデリング トップダウンモデルと ボトムアップモデルの融合
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
ユースケース図 FM12012 比嘉久登.
データモデリング CRUD分析.
会社間受注処理 SAP Best Practices.
Enterprise CALS Systemの開発
さとりすと Satori Ghost Editor 里々ゴーストの統合開発環境を作ったよ page: 1/25
データベース.
JSFによるWebアプリケーション開発 第6回
ユースケース図2-4~ FM11012 中島拓也.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
14.テーブル定義,一対多の関係,多対多の関係, 外部キー,索引(インデックス),データベース操作
マイクロソフト Access を使ってみよう 第5回
UMLとは           032234 田邊祐司.
データベース設計の基礎 HN おいろん.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
47070 オブジェクト指向モデリング [7] 2001年11月 12日.
○ ○ ○ こんな場合にお勧め 機能概要 SAP ERP伝票/マスタ入力をExcelを使って簡単に実現 Excel入力テンプレート
ERPとグローバル展開 © , all rights reserved by NetCommerce & applied marketing.
SAP CRM のクライアントとして InfoPath を活用する
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
SOA基盤製品 「見る、聞く、体験する SOAノウハウツアー」
Shimatterシステムの トップダウン分析
発注者側サイト操作説明書 作成日:2004年6月 Ver1.0 初版 改 訂:2005年9月 Ver1.2 株式会社 コニファ.
All Rights Reserved, Copyright © 2004, Kobayashi
データモデリング モデルの基本作法.
アプリケーション依存の先読みが可能なO/Rマッピングツール
3.リレーショナルデータベース,主キー, SQL
データモデリング エンティティの切り出し.
コンピュータにログイン 第1章 コンピュータにログイン 啓林館 情報A最新版 (p.6-13)
RDFの生産工程管理システムへの適用 情報処理学会 第74回全国大会 2012年3月6日 松江工業高等専門学校  情報工学科 越田 高志.
UMLの概要とオブジェクト指向の基本概念
BtoB WEB 受注システム事例・・・1 食品、名産品卸 A社での導入事例 株式会社 コニファ.
E-R図 井上卓也.
第1章 いよいよプログラミング!! ~文章の表示 printf~
ADempiere概要セミナー ※応用編※ 第1回 製品の価格と属性
EntityManager と EJB QL EJB 3.0 コース 第8回 2006年8月5日.
All Rights Reserved, Copyright © 2004, Kobayashi
Annotation EJB 3.0 コース 第3回 2006年8月4日.
@MD-NET Web-EDI導入について ~ 説明会資料 ~
リレーショナル・データベース J2EE I (データベース論) 第2回 /
情報の授業 アプリ等を活用した勉強方法の改善(計画) ・R-PDCAサイクル ・アプリを活用した勉強方法の改善 計画書
アルゴリズムとデータ構造1 2009年6月15日
磯野ー!そんなことより 正規化しようぜー!
データ中心システム設計方法論“DATARUN” 
How To WPF アプリケーション Part4 By 中博俊.
アルゴリズムとデータ構造 2010年6月17日
より分かりやすい ユースケースモデルを作る
Presentation transcript:

1 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. EJB3 時代の ERD レッスン ~ Activity Based Datamodel The Seasar Foundation 株式会社スターロジック 羽生 章洋

2 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 自己紹介 羽生 章洋(はぶ あきひろ)と申します。 – 昭和 43 年生まれの今年 38 歳です。 – 受託電算業務の伝票打ちから始まりました。 – プログラマ~システムエンジニアを経てコンサルタント をやってきました。 – 様々な業種・業務に関わってきました。 – 今はスターロジックという会社の経営をやっています。 –Seasar ファウンデーションの理事もやっています。 今日のお話にご興味を持たれた方は、お気軽にご 連絡くださいませ。 – – (はぶにっき)

3 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. とっても大事な DB 設計 DB 設計とは何か? – プログラムが終了したときに消えちゃうと困 るデータをどのように保存しておくか決める 作業のこと 何故 DB 設計が重要なのか? 超グローバル変数 – アプリケーション(場合によってはシステム も)をまたがる 「 超グローバル変数 」だから!

4 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 所詮は DB 設計 器だけあってもさ … – プログラムがなければ何もできないよ –SQL だってプログラムのひとつ データモデル=ビジネスモデリング? – 上流? ちゃんちゃらおかしくって。 – 事業計画書にデータモデルが書いてるのなん て見たことがない。 業務プロセス – ゼロから会社作るとわかる。 先に 業務プロセス ありき!

5 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. だけどやっぱり DB 設計 じゃあ DB がなけれ ばどうなるの? じゃあ DB がなけれ ばどうなるの? あったとしても、 でたらめな設計だっ たら? あったとしても、 でたらめな設計だっ たら?

6 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. DB って何なのさ そもそも DB って何? データって何? – 結果の記録を一箇所に集めたもの (レコードとはよく言ったもので) – 予定データとか計画データとかあるじゃん ・・・それって、 「予定を立てた」結果でしょ 「計画を立てた」結果でしょ 記録って何? 結果って何? – 何かを行ったから結果が生じる – 結果を忘れないために記録をする

7 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 業務とシステムの関係 1.注文があると・・・ 2.商品を準備して・・・ 3.商品をお届けします お客様 はぶ商店

8 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 注文がどんどん増えてきた! 1.注文があると・・・ 2.注文を受け付けて・・・ 4.商品をお届けします お客様 はぶ商店 3.商品を準備して・・・ これを出 荷してね ♪ 注文の内容 を忘れると まずいので メモしてお く

9 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. さらに注文が増えてきた!! 1.注文があると・・・ 2.注文を受け付けて・・・ 5.商品をお届けします お客様 はぶ商店 3.商品を箱詰めして・・・ これを出 荷してね ♪ 注文の内容 を忘れると まずいので メモしてお く 荷物でき たよ ♪ 4.運送屋に依頼して・・・ 配送依頼の 控えを保管 しておく

10 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. トラブル続出! 1.注文があると・・・ お客様 はぶ商店 注文したのが届かない! 違うものが届けられた! ちゃんと 出荷した の? 配送っていつ 依頼したの? そもそも注文 どうなってる の? 箱詰めしたの あってるの?

11 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 口頭をやめよう! お客様 はぶ商店 受注記録 梱包記録 梱包依頼 出荷記録 出荷依頼

12 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 紙が溢れて大変!⇒ IT 化! お客様 はぶ商店 ビジネスプロセス

13 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 改めてよく見てみると・・・ 保存するデータには 2 種類ある – 行為の記録 受注記録 梱包記録 出荷記録 – 行為の際の参照用 梱包依頼:梱包作業の際に参照する 出荷依頼:配送作業の際に参照する

14 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. さらに参照用には別のものが 受注記録について・・・ – 誰からの注文?: 顧客情報 – 何を注文された?: 商品情報 ⇒ 俗に言う「マスタ系」というもの お客様からの注文 顧客 情報 商品 情報 受注 記録

15 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. プロセス間の参照 受注記録を梱包時に参照する お客様からの注文 顧客 情報 商品 情報 受注 記録 梱包 記録 梱包がまだのもの 実はフラグ だったり・・・ 受注とい う「業 務」 梱包とい う「業 務」

16 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. DLC あるいは CRUD ということ 顧客情報の保守も業務のひとつ 顧客 情報 誰が記 録する の? 何を元 に記録 する の? いつ記 録する の? データライフサイクル Create, Reference, Update, Drop

17 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. モデルに溺れない! DB は所詮システムの一部 ユーザにとって大切なのは UI !

18 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. UI も業務フローの一部 UI の操作にもシナリオがある シナリオに沿った動きが必要 動きの「結果」が DB に入る 顧客 情報 商品 情報 受注 記録 お客様からの注文 受注業務 受注画面 R R C

19 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. UI も業務フローの一部 (2) 業務の流れに沿って、前工程の結果を参照す ることもある 受注 記録 受注 記録 あるタイミングで・・・ 梱包業務 梱包結果 登録画面 R U 梱包 記録 C

20 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. テーブルの見分け方 業務と対になるのが「イベント系」 – 行為の記録 それ以外は「リソース系」(入力支援系ともいえるかも) イベントは – 「xxする」といえる。「xx日」といえる – 受注する、受注日= OK – 顧客する、顧客日= NG リソースは – 「xx名」といえる。 – 顧客名= OK – 受注名= NG (案件名ならわかるけどさ⇒「案件」というリソース) 「xxする」「xx名」両方いえないと? – それは属性 – 「数量する」「数量名」= NG 乱暴にいうと 「xx別」という風 に 集計したくなるのは リソース系 「案件」を「受注」する、だよね。

21 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. UI はアウトプットから攻める! 業務フローの後ろから順番に攻める! – 実は業務フローそのものもゴールからさかのぼっ て作成するほうが良い 帳票から順番に攻める! ① 出力に必要な 項目が DB にないと駄目! ② 出力に必要な 項目を埋めないと駄目!

22 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 楽々 ERD レッスンのポイント ・・・と、ここまでの話を踏まえて IDID の導入 業務の視点に基づく正規化 イベント系 イベント系 エンティティ こそが重要 交差エンティティ イベント系とは 交差エンティティ である

23 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 交差エンティティとビジネスモデル イベント系だと・・・ 交差エンティティも ID 必須! – 交差エンティティを参照するものもある 例えば、出会い系の例とか・・・

24 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 1: Codd のリレーショナルモデル A B C ポチ タマ ペロ \300 \90 ♀ ♂ 商品コード 商品名 単価 性別 Table ( Relation) Column ( Domain) 値の重複は存在しない!

25 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 1: Codd のリレーショナルモデル A ポチ \300 ♂ 商品コード 商品名 単価 性別 B タマ \300 ♀ C ペロ \90 ♂ 敢えて言えば Class ( Tuple : Domain の 組み合わせ ) Instance ( Record)

26 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 1: Codd のリレーショナルモデル A ポチ \300 ♂ B タマ \300 ♀ C ペロ \90 ♂ ID を主キーにするというのは・・・ Instance に連番を 振るということ! 1 2 3

27 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 1: Codd のリレーショナルモデル 商品コード 商品名 単価 性別 1. 各 Domain は集合である。 2.Table も Record の集合である。 3. では、 Domain も Table であるとすれば!? RDB の R は Relationship(FK) の ことではない! One Fact “IN” One Place

28 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 2: Chen の ER モデル Codd さんは図表現には反対だった そこに出てきたのが、 Chen の ER モデル ER モデルとは 「世の中に存在するあらゆるものは、 具象的なものであれ抽象的なものであれ、 実体と関連という 2 つの概念で表現可能である」 という考え方 実体 ( Entity ) 関連 ( Relationship ) 実体 ( Entity ) 属性 ( Attribute ) 属性 ( Attribute )

29 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 2: Chen の ER モデル いつの間にか、関連が FK だけで表現される ようになってしまった だから、m:mだけ特殊になってしまう。 実体 ( Entity ) 関連 ( Relationship ) 実体 ( Entity ) 実体 ( Entity ) 実体 ( Entity ) 1:m 実体 ( Entity ) 実体 ( Entity ) 1:m 実体 ( Entity ) m:1 m:m

30 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 2: Chen の ER モデル 抜け落ちた関連とは一体何か? 顧客 販売 商品 よくある例:「顧客」と「商品」の間には「販売」という関係が成立する 顧客 販売商品 単なる1:mには決してしない。つまり・・・ 業務システムにおいて、単なる1:mの議論など本来はあり得ない!

31 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 2: Chen の ER モデル ということは、よくある売上伝票も・・・ 本来はこうなるのでは?

32 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 1.と2.を改めて統合してみると・・・ 3:そして ABD FK のあり方が変わる! つまり DB 設計の 難易度が変わる!

33 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 3:そして ABD 商品企画生産計画資材購買製造営業出荷配送納品 売上 回収 ・・・ 業務プロセスとデータモデルの連携 活動( Activity )の 存在を示す 活動で発生した 事実( Fact )を 記録する

34 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. ABD 的 DB 設計とは 業務単位で行う –UI 最重要! おしごとマジカ – 業務の洗い出しには「 おしごとマジカ 」を是 非! Activity と Fact を分けて考える –Fact は UI に現れる 必要なテーブルをバラバラに定義する –FK で悩まない! 「同じタイミング」で使うものを IRE ( Inter Relation Entity )に対して、 FK 指定する イメージとしては、各テーブルがコンポーネント で、 IRE が設定ファイル( DI をイメージする)

35 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. 必ず出てくる実装問題 実装が不便なのでは? –SQL 書き方ドリルをまずはクリアしてね – 設計と実装のどちらのほうがスキルアップが簡 単か とはいえ面倒なのは嫌 そこで JPA

36 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. JPA と ABD JPA : Java Persistence API EJB3 の一番のセールスポイント 次世代の JDBC 的な位置づけと捉えられる 実は ABD と相性の良い JPA とか・・・ とか・・・ ABD の一番面倒な「リレーションシップの 解決」を自動的にやってくれる WEB+DB PRESS Vol.28 を参照

37 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights アノテーション プライマリキーとなるフィールドを指定する。 generate 属性において、列挙子である TABLE,SEQUENCE,IDENTITY,AUTO,NONE から指定する。 次の例は RDBMS 上のシーケンスを使用する場合です。シーケンス名は public class Hoge implements Serializable { private Long generator="SEQ_HOGE") public Long getId() { return id; } public setId(Long id) { this.id = id; }... }

38 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights アノテーション テーブル間の多 : 多の関係を表す。 このアノテーションを使う場合は、組み合わせを管理するいわゆる交差エンティティとしてのテーブルが必要になる。 そのため登場するのはふたつのクラスだがテーブル自体は 3 つ必要になる。 次の例では、クラス名とテーブル名が一致している Employee,Task というふたつが記載されていますが、 更に EMPLOYEE_TASK public class Employee implements Serializable targetEntity=Task.class, targetEntity=Task.class, cascade={CascadeType.CREATE, CascadeType.MERGE} cascade={CascadeType.CREATE, ) public Collection getTasks() { return tasks; }... public class Task implements Serializable cascade={CascadeType.CREATE, CascadeType.MERGE}, cascade={CascadeType.CREATE, CascadeType.MERGE}, mappedBy="employees" mappedBy="employees" targetEntity=Employee.class targetEntity=Employee.class ) public Collection getEmployees() { return employees; }... }

39 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. でも JPA ってさ・・・ 結局、 JPA の不自由さに振り回されるんじゃ ないの? SQL をガリガリ書きたいシチュエーションっ てあるよね。 JPA のメリットと SQL のメリットの両立を! – それが・・・

40 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. Kuina 襲来 S2JDBC S2Dao S2Hibernate-JPA KuinaDao S2Hibernate-JPA KuinaDao KuinaCore 現在近未来未来

41 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. Summary ABD は DB 設計の難易度を変える – 最終的には難易度は下がる – 但し、まだまだ列の横持ちテーブル設計がはびこってい るように、パラダイムシフトはなかなか進まないだろう ABD は JPA との相性がいい! – つまりインピーダンスミスマッチ問題を低減する ゼロにはならない – アプリケーション生産性に影響を与える となると JPA の出来が重要 – まだまだ不自由な面はある – そこで次世代 S2Dao である Kuina ですよ!

42 Seasar Conference 2006 Spring © The Seasar Foundation and the others all rights reserved. Thank you!! ありがとう ございまし た