Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LT_2022.02.26_TM_intro01_yet103.pdf

Avatar for Yutaka Eto Yutaka Eto
February 27, 2022

 LT_2022.02.26_TM_intro01_yet103.pdf

TM法/T字形モデル入門 #1 だれでもできる! 正規化とか知らなくても大丈夫なDB設計手法

株式会社SDI http://www.sdi-net.co.jp/
モデル作成の手続き(TM3.0) http://www.sdi-net.co.jp/tm3-1.pdf
モデル図作成ツール「MODEBI」https://github.com/yet103/MODEBI2
@yet103 https://twitter.com/yet103

Avatar for Yutaka Eto

Yutaka Eto

February 27, 2022

More Decks by Yutaka Eto

Other Decks in Technology

Transcript

  1. 4 正規化?正規化をしないと・・・ だいたい第3正規形まででよい!? 更新時異常が! データの冗長!! 排他処理! 分散トランザクションとか!! 関数従属!推移的関数従属! 主キー!候補キー! プライマリーキ―!?

    外部キー?? パフォーマンスのために「非正規化!」? 第4?第5?ボイス・コッド正規形? モノ? リレーションシップ!? サブタイプ!? サブストラクチャ? 参照整合性制約? 多値従属?
  2. 9 手続きの流れ モノ イベント/ リソース 関係 サブセット 多値 クラス F真の検証

    NO・コードを固体指示子として 抽出し、モノとする モノを分類する。 タイムスタンプを構成要素 とするものはイベント、 それ以外をリソース 4つの文法規則 1) R-E型 2) E-E型 3) R-R型 4) 再帰 ・セット(集合)を整える ・区分コード、または 相違(NULL排除)で切断 ・MA( HDR-DTL) ・MO ・業務との完全一致 ・実データチェック ・システム都合の NO・コード排除 ・VE (みなしモノ) ・概念的スーパーセット 個体指定子とモノ 定義 リソースとイベント 公理 ルール ①R-R ・・・リソース – リソース関係 ②R-E ・・・リソース – イベント関係 ③E-E ・・・イベント – イベント関係 ④再帰 ・・・再帰関係 step1 step2 step3 step4 step5 step6 step7
  3. 10 手続きの流れ •対象システム画面例 注文番号 注文日 会員番号 会員氏名 会員区分 商品コード 商品名称

    商品単価 受注数 システムの画面や帳票からの項目を情報として抽出する。 DB項目定義などからの抽出もNGではないが、システム都合のNO/コードなどが 混入するため、あくまでもエンドユーザが認知している項目に絞って抽出を行うこと。 モノ イベント/ リソース 関係 サブセット 多値 クラス F真の検証 情報を抽出する 「ユーザー言語」のみを用いる! 思い込み、先入観で勝手な言葉を持ち込まない!
  4. 13 手続きの流れ R-E(リソース対イベント)の関係 1:1 = 一つのレコードに対して必ず一つ (例.企業と工事の請負関係が1度限り) 1:m = 一つのレコードに対して1件~複数件

    (例.ある企業は工事を複数請負う) R-Eが1:1のケースは一般的な事業では通常あり得ない 関係を構成する モノ イベント/ リソース 関係 サブセット 多値 クラス F真の検証
  5. 14 手続きの流れ E-E (イベント対イベント)の関係 1:1 = 一つのレコードに対して必ず一つ (例.ある注文はかならず1度出荷される) 1:m =

    一つのレコードに1件~複数件 (例.ある注文は複数に分けて出荷される) m:1 = 複数件のレコードに1件の (例.複数の注文がまとめて1回のみ出荷される) m:m = 複数件のレコードに複数件 (例.複数の注文が複数の出荷に割り当てられる) 1:mの場合は関数ではない。制約・束縛の内容確認が必要 モノ イベント/ リソース 関係 サブセット 多値 クラス F真の検証 基本的に対応表は単なる「mapping-list」(「全射」の関数)である 関係を構成する
  6. 15 手続きの流れ 1:1 = 一つのレコードに対して必ず一つ (例.ある商品はかならず一人の会員からのみ注文可能) 1:m = 一つのレコードに1件~複数件 (例.ある商品は複数の会員から注文可能。且つ、一人の会員は一つの商品のみしか注文できない)

    m:1 = 複数件のレコードに1件の (例.複数の商品が一人の会員からのみ注文可能) R-R (リソース対リソース)の関係 リソース 対 対照表 = 対照表 対照表 対 対照表 = 対照表 モノ イベント/ リソース 関係 サブセット 多値 クラス F真の検証 14 関係を構成する m:m = 複数件のレコードに複数
  7. 18 手続きの流れ モノ イベント/ リソース 関係 サブセット 多値 クラス F真の検証

    状態遷移を表すサブセットの例 例① 区分で切断、同一のサブセットを作成 例②相違で切断、かつ相違のサブセットを作成 例③三つのサブセットを作成 「切断」とは「セットに対して”真部分集合”となっていること、及びサブセット間が”排他的OR関係”となっていること」を意味します サブセット 切断する!
  8. 19 手続きの流れ モノ イベント/ リソース 関係 サブセット 多値 クラス F真の検証

    多値 MA、MOは構文論上は同じ。意味論上で違いがある MAはペア以上が必ず揃っていなければならない。MOは複数の中から一つだけが特定される 開始日、終了日などもMAだが、そうすると事業が読めなくなってしまうため、通例として右に2項目個 別におくことも黙認している。 合成関数 g・f MO MA/Functor 商品マスタ・正価/時価 注文明細
  9. 20 手続きの流れ モノ イベント/ リソース 関係 サブセット 多値 クラス F真の検証

    クラス 右側のクラス適用例 ①ひとつのリソースの中に、イベント的性質が混入している ②ひとつのリソースの中に、他のリソース的性質が混入している ③ひとつのイベントの中に、リソース的性質が混入している ④ひとつのイベントの中に、他のイベント的性質が混入している クラスは自由に柔軟に適用できるが、安易に使用してはならない 必ず先にセットで整理して、その後でクラスを適用する
  10. 21 手続きの流れ モノ イベント/ リソース 関係 サブセット 多値 クラス F真の検証

    F-真の検証 モデルの構成要件 「事実」を正確に記述する = 矛盾が無い ①L-真・・・論理的に真である = 文法違反が 無い ②F-真・・・意味的に真である = 事実と一致 する。 ※事実 = 業務実態、及び実データ内容 まず先にL-真のモデルが作成されます。その上でユーザーや仕様担当者との質疑を行い、F-真の状態になるまでモデルの修正を行います。 NULL値を取り得る項目が残っている場合、L-真ではありません 一つの箱に5つ以上の右側属性が存在する場合、F-真ではない可能性が大きいです 短期的な視点ではなく、長期的に見てもその構造で事業の変化に耐えられるか、の観点での確認が必要です
  11. 23 ・NULLが存在しない ・ADD ONLY (※データは追記のみ) ・INDEX ONLY (※高パフォーマンスはINDEX設計により実現) ・現実事業と完全一致している! →

    事業分析/事業戦略に活用することができる! モデル図サンプルイメージ 完成したモデル=DB論理/物理設計の特徴
  12. 25 TM = Theory of Models 数学基礎論を元に定義されたモデル手法 佐藤正美氏によるTM確立までの道のり(超抜粋) (コッド正規形) ・文法は縦、意味は横、それをつなぐのがプライマリーキー

    ・前期ヴィトゲンシュタイン(論理哲学論考) ・レーベンハイムスコーレム ・記号と解釈 ・モデルの存在性 ・「~の条件を満たす」こと、即ち「モデル」である ・真とは?(2つの理論) ・タルスキー(モデル論の創始者) ・ゲーデルの完全性定理=意味論としての真 →1年後? 対照表=不完全性定理(イベントともリソースとも解釈できる) →チューリングマシン →フォンノイマン 1.セットとクラス (集める) 2.関係と関数 (並べる) 3.L-真とF-真 xxxx xxxxNO 条件 条件 ・・・ xxxx xxxxNO 条件1 条件2 ・・・ コッド関係モデル TM
  13. 28 DDL DDL DDL SQL出力、CREATE TABLE DDL DDL FD ローコード開発フレームワーク連携

    (楽々Framework対応) https://github.com/yet103/MODEBI2 MODEBI 直感的な操作でモデル図作成 TM/T字形モデル図作成ツールの紹介