ERD作成手順と注意点

基本的な操作方法

TemPlatでのERD作成の基本的な操作方法に関しては、動画解説を作っているのでこちらも参考にしてください!

操作ボタンに関して

ERD画面での基本的な操作方法に関してお伝えします。

ボタンの説明(テーブル未選択状態)

ERD画面の右側にいくつかのフロートボタン(丸くて浮いている感じのボタン)があります。このボタンでERDを編集していくので、まずはその説明から。

これはテーブルを一つも選択していない状態でのボタンの表示です。テーブル選択するかどうかで変わるのは上2つのボタンですね。まず一番上のボタンですが、何もテーブルを選択していないと新規のTable(またはStruct)を作成するボタンが表示されます。このボタンでどんどんテーブル作りましょう。

2つ目のボタンは「ロールバック」と言って、ERDを間違えて変更してしまった時に、以前の状態に戻すためのボタンです。このボタンも何もテーブルを選択していない時だけ表示されます。ちなみにロールバックできるのは、ビルドを実施した時点のみとなります。前回のビルドから今までに編集した時点には戻れないのでそこは注意してください。

3つ目と4つ目のボタンはテーブルの選択有無に関わらず使えるボタンです。これらはERDのTable(またはStruct)間の関連線の表示・非表示を切り替えるボタンです。水色の線はTableとそのTableが持っているStruct間で引かれる線となります。また、オレンジはTableとTable間の関連線になります。DatastoreではTable間で実際に関連を定義はできませんが、ERD状はわかりやすくするために、関連を定義できるようにしています。

ボタンの説明(テーブル一つ選択状態)

テーブルを1つ選択している状態では上の3つのボタンが変わります。一番上は選択したテーブルを編集する為のボタンです。2つ目はテーブルのコピー、似たテーブルを作る時に重宝します。3つ目はテーブルを消します。間違って作っちゃったら消しましょう。でも慎重に。

ボタンの説明(テーブル複数選択状態)

テーブルを複数選択すると、更に上2つのボタンが切り替わります。これらは選択したテーブルを縦横に揃えるためのボタンです。ERDを作るメインの目的はソース(APIのソース)の自動生成にありますが、アプリケーションを設計する際に頻繁に見るのがERDです。そんなERDがきれいに揃っていたほうが頭も整理されます(人に寄りますが、、、)。そんな方はぜひ使ってください!

テーブルの設定方法

テーブル全体の設定

テーブル全体としては、名前(struct Name)とタイプ(type)、コメント(struct comment)が指定できます。typeは次に説明するとしてここでは名前のネーミングルールだけ説明しておきます。

テーブル名に関しては「パスカルケース」で書いてください。「パスカルケース」というのは、単語の先頭を大文字にするやつです。一番先頭も大文字です。
(ちなみに先頭が小文字なやつがキャメルケースって呼ばれています)

例は「Product」「Project」とかが1語のケースですね。「ProductDetail」とか「UserGroup」とかが2語のケースですね。このネーミングルールはこのあと説明する「フィールド名(テーブルの各項目名)」でも同じです。

またちょっと特殊なルールとして「省略語はすべて大文字とする」というものがあります。例えば「ID」「URL」「DB」とかですね。

typeとしてのTableとStruct

Datastoreを使う場合、ERDの構成要素としては「Table」と「Struct」があります。

※TableとStructの違いはERD設計の勘どころ【Datastore編】で説明しているので、そちらを参照してください。

ERD画面では、テーブルを新規作成する時に「Table」と「Struct」を指定できます。

また作成されたERD画面上での表示は基本色で区別できます。Tableが青で、Structが緑になります。

テーブル(TableとStruct共通)を新規追加する際の設定項目に関して説明します。

テーブルの各フィールド設定

テーブルの各項目(フィールド)の設定方法を説明します。Tableを新規作成する際に「ID」という名称のフィールドが初期で設定されています(Structにはありません)。これはKeyになるフィールドなので、名称は固定です。型は初期はnumberですが、stringにすることもできます。他の型は使えません。

それ以外のフィールドは編集画面の下の方にあるプラスボタンで追加していきます。

各フィールドの設定では「Field Name」「Type」「Comment」が基本設定が必要な項目となります。「Field Name」はプログラム上で使用する名称です。いわゆる物理名ってよく呼ばれるものです。ここはテーブル自体の「Name」と同様に「パスカルケース」で名前をつけてください。当然同じテーブル内ではユニークな名称にしてください。

続いては「Type」ですが、ここは少し複雑なのでちょっと段落を分けて説明していきます。

フィールドのType(型)

一番左側の「Type」に指定できるものには大きく3つの種類があります。1つはいわゆる「プリミティブ型」的なもので、プログラム言語で用意されている型になります。TemPlatでは以下の型が利用できます。

string文字列
number数値
boolブール値
time日付時刻

2種類目はERDで定義したStructの指定になります。StructはTableのフィールドとして使えるので、そのようなケースで指定します。Structを選んだ場合、その右側に実際にどのStructを使うかを選ぶことができるようになります。

最後の1種類が、配列(array)になります。これはここまで出てきたプリミティブ型やStructを配列として持つ場合に使用します。

テーブル間の関連線

TableおよびStruct間の関連を示す関連線を表示することができます。どのテーブルがどう関連しているかをパッと見れると設計がやりやすくなります。

関連線には以下の2種類があります。

関連の種類線の色説明
TableとStruct水色フィールドのTypeでStructを選択すると自動的に関連線が引かれます。
TableとTableオレンジ色フィールド指定時に「Related」で他のTableを指定すると線が引かれます。そのフィールドで相手テーブルのIDを保持している場合に使います。

TableとStructの関連線

TableとStructの関連線の例を見ていきましょう。以下がTableとStructの関連線になります。ここではProductDetail(商品詳細)テーブルに対して、商品の仕様を保持したSpecInfo(仕様情報)Structを配列で持っているようなケースになります。同じ商品でも色とかサイズ、重さがいくつかあり、それを購入時に選択できるようなケースです。

この関連線は以下の設定によって引かれています。基本TableがStructを持つケースは単一のStructをもつ場合と、配列として持つ場合がありますが、どちらでもこの関連線は引かれます。

TableとTableの関連線

TableとStructの関連線はERDを普通に定義していけば自動で引かれますが、TableとTableの関連線は自分で意図して設定した場合だけ引かれます。Datastoreの場合実際の実装ではTable間での連携ということはできませんので、この関連線の意味は、論理的な意味となります。ですので、この関連線を引くことは必須ではありません。ERDを見た時にTable間の関連を意識しておきたい部分にのみ引くなどみなさんの判断で設定してください。

以下、Table間の関連線の例になります。以下は商品(Product)Tableと、商品詳細(ProductDetail)Table間で関連線を引いています。この例では一つの商品に複数の商品詳細があるケースで、ProductDetailの親ProductのIDを「ProductID」というフィールドで持っています。

この場合のERDの設定は以下のようになります。ProductDetailが親ProductのIDを持っているいるのでそのフィールド定義でRelationを設定しています。

現在、Table間の関連線はERD表示上のみしか影響はありません。自動生成されるコード上は特に影響はありませんので、もし関連線を引いたTableのレコードを取得したいなどの要件がある場合には、APIのソース(Handler)をカスタマイズする必要があります。カスタマイズの方法は標準APIのカスタマイズ例で説明していますので参考にしてください。