LoginSignup
17
16

More than 3 years have passed since last update.

Data Modeling Markup

Last updated at Posted at 2015-09-19

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

image.png

複数

image.png

One-to-one

image.png

One-to-many

image.png

Many-to-many

image.png

Recursive

image.png

軽量マークアップ

  • 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などのチャットが使われるようになりました。
そこで軽量マークアップ言語はプレーンテキストで記述できるのでコミュニケーションに役立ちます。

17
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16