Data Modeling Markup

  • 12
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

UMLは開発のデザインでプロダクトマネージャとエンジニアがコンテキストを共有するのに有効なツールです。
そのUMLを軽量マークアップ言語で記述できるPlantUMLはテキストエディタを選ばないのでとても便利です。

しかし、UMLのダイアグラム以外にもプロダクトマネージャとエンジニアで共有したいダイアグラムがあります。
それはデータの構造と意味です。これがおたがいに正確に共有されていると開発がスムーズに進みます。

モデリングの手法は多数ありますが、佐藤正美氏のT字形ER手法(TM)を軽量マークアップ言語で表現しました。
個人的に軽量マークアップ言語したもので、公式に認められたものではありません。

T字形ER手法(TM)

TMはデータ構造を作りながら同時に事業を解析し、実装の生産性向上を実現する目的で作られました。
(この手法は理論に基づいたルールがあります。そのルールを理解してご利用ください。)

Entity(個体)

  • entity(個体)は認知された事実的対象のことで、identifier(認知番号)が付与される。
  • entityはevent(出来事・行為)とresource(行為に関与するもの)の2種類に分類される。
    • eventは関係は非対称性で、性質として日付が帰属する。
    • resourceは関係は対称性で、event以外のentityである。

記法

  • 簿記の T字勘定 と同じように、entityの仕訳をする。
  • 左側には認知番号(主語)が記入され、右側には性質(述語)が記入される。
    • 性質は名称や日・数量、および区分コードなど
  • 個体名称の右側に分類のeventならE、resourcenならRが記入される。
個体名称 | 分類
---------------
認知番号 | 性質

        顧客    | R
-------------------
顧客番号 | 顧客名称
        受注  | E
-----------------
受注番号 | 受注日
         | 受注数

軽量マークアップ

  • Markdown記法の拡張テーブル のマークアップで表現する。
  • 分類はeventならEvent、resourcenならResourceが記入される。
個体名称 分類
認知番号 性質

顧客 Resource
顧客番号 顧客名称
受注 Event
受注番号 受注日
受注数

Relation(関係)

  • entity(個体)の間には関係が成立する。
  • 関連には4種の対応性がある。
    • One-to-one(1 対 1)
    • One-to-many(1 対 複数)
    • Many-to-one(複数 対 1)
    • Many-to-many(複数 対 複数)

記法

1

one

複数

many

One-to-one

one-to-one

One-to-many

one-to-many

Many-to-many

many-to-many

Recursive

recursive

軽量マークアップ

  • PlantUMLUse Case に似たマークアップで表現する。

1

 |

複数

 <

Entity

 [ ]
  • event
 [ :E]
  • resourcen
 [ :R]

One-to-one
  • [顧客] has one [住所]
  • [住所] belongs to [顧客]
[顧客:R] -|-|- [住所:VE]
One-to-many
  • [顧客] has many [受注]
  • [受注] belongs to [顧客]
[顧客:R] -|-<- [受注:E]
  • [顧客] has many [商品] through [対照表]
  • [商品] has many [顧客] through [対照表]
Many-to-many
[顧客:R] ->+<- [商品:R]
          |
       [対照表]
Recursive
  • [受注] has many [再帰表]
  • [再帰表] belongs to [受注]
[受注:E] =|+<- [再帰表]

Tips

ケーキを生地(batter)から作るのに、大きさ(size)を決めたり、クリーム(cream)でデコレーションをします。
Entityの構造はホールケーキやロールケーキなど作り方の工程でいくつも存在します。
こんな構造の違いをプロダクトマネージャとエンジニアが認識して正確に共有することが大切です。

  • ホールケーキ
[batter:R] ->+|- [size:R]
             |
  [batter,size] ->+|- [cream:R]
                  |
            [batter,size,cream]
  • ロールケーキ
[batter:R] ->+|- [cream:R]
             |
  [batter,cream] ->+|- [size:R]
                   |
            [batter,cream,size]

ドキュメントはGit Serverで管理され、会話はSlackなどのチャットが使われるようになりました。
そこで軽量マークアップ言語はプレーンテキストで記述できるのでコミュニケーションに役立ちます。