atom.nocode-builder.design-tables-and-relations
テーブルと関連を設計する
テーブルと関連を設計する アプリを作るとき、最初に考えるのが「データをどう整理して保存するか」です。これがデータベース(=情報を整理して保存する仕組み)の設計にあたります。 難しそうに聞こえるかもしれませんが、やっ...
成果物成果物このレッスンが終わったとき、あなたの手元に残る具体的な成果物です(例: 公開済みの Web ページ、動作するフォームなど)。
証跡証跡成果物が正しく作れたことを確認するためのチェックリストです(例: ブラウザで動作する、フォーム送信で値が保存される)。
メディアメディアレッスン内に出てくる図や動画のスロットです。実際の画面やイメージで理解を補助します。
レッスン本文
テーブルと関連を設計する
アプリを作るとき、最初に考えるのが「データをどう整理して保存するか」です。これがデータベース(=情報を整理して保存する仕組み)の設計にあたります。
難しそうに聞こえるかもしれませんが、やっていることは「Excelのシートを分けて、シート同士を線でつなぐ」のと同じです。たとえば旅行の計画を立てるとき、「宿泊リスト」「交通手段リスト」「持ち物リスト」をシートごとに分けて管理しますよね。それと同じ感覚で、アプリに必要な情報の「表」を作っていきます。
このレッスンでは、AIをアシスタントとして使いながら、あなたの作りたいアプリに必要な「表(テーブル)」と「表同士のつながり(関連)」を15分で設計します。

1. 作りたいアプリの概要をAIに伝える
まずは、AIチャット(ChatGPT、Claude、Cursorなど、どれでもOK)を開いて、どんなアプリを作りたいかを伝えます。
AIに的確な提案をもらうコツは、「誰が使うか」「どんなデータを扱うか」を具体的に書くことです。
AIに送るプロンプト例
以下をコピーして、太字の部分をあなたのアプリに合わせて書き換えてください。
私は **カフェの注文管理アプリ** を作りたいです。
主な利用者は **店長とスタッフ** です。
管理したいデータは以下の通りです:
- **メニュー一覧**(商品名、価格、カテゴリ)
- **注文履歴**(どの商品がいつ何個注文されたか)
- **顧客情報**(名前、連絡先)
このアプリに必要なテーブル設計の案を、表形式で提案してください。
各テーブルのカラム(列)名、データの種類、テーブル同士の関連も含めてください。
良い例: 「カフェの注文管理アプリを作りたいです。メニュー一覧と、顧客の注文履歴を管理したいです。テーブル設計の案を表形式で出してください。」 → 誰が・何を・どう管理したいかが明確なので、AIが具体的に答えられます。
悪い例: 「アプリのデータベース設計をしてください。」 → どんなアプリかわからないので、AIも漠然とした回答しかできません。
2. AIの提案からテーブルを確認する
AIが「メニューテーブル」「注文テーブル」「顧客テーブル」のような提案を返してくれます。ここでチェックするポイントは3つです。
- テーブルの数は適切か? — 管理したいデータの種類ごとに1つのテーブルがあるか確認します
- 各テーブルのカラム(列)は揃っているか? — 必要な情報が漏れていないかチェックします
- ID列があるか? — 各テーブルに「それぞれのデータを区別するための番号(ID)」が入っているか見ます
足りない情報があったときのプロンプト例
AIの提案を見て「ここが足りない」と思ったら、すぐに追加をお願いしましょう。
ありがとうございます。以下を追加してほしいです:
- メニューテーブルに「販売中かどうか」のフラグを追加してください
- 注文テーブルに「支払い方法」の列を追加してください
修正した全テーブルを表形式で再度出力してください。
チェックのコツ: 実際にアプリを使うシーンを頭の中で再生してみてください。「お客さんが注文したとき、どの情報を記録する?」「月末の売上を見たいとき、何が必要?」と考えると、足りない列が見つかります。
3. テーブル同士の関連を理解する
テーブルが揃ったら、次は「テーブル同士のつながり(関連・リレーション)」を確認します。
リレーション(=データ同士を紐づけること)の代表的なパターンは以下の3つです。
| パターン | 意味 | 身近なたとえ |
|---|---|---|
| 1対多(いちたいた) | 1つの親に対して複数の子がある | 1人の先生に対して複数の生徒 |
| 多対多(たたいた) | 両方に複数が対応する | 生徒と部活(1人が複数の部活に入れる、1つの部活に複数の生徒がいる) |
| 1対1(いちたいいち) | 1つに対して1つだけ | 1人に1つのマイナンバー |
AIに関連を確認するプロンプト例
提案してもらったテーブル同士の関連(リレーション)を教えてください。
「1対多」「多対多」などのパターンと、
どのカラムで紐づいているかを説明してください。
AIの回答例として、「メニューテーブルと注文テーブルは1対多の関係です。1つのメニューに対して複数の注文が紐づきます。注文テーブルの menu_id がメニューテーブルの id を参照しています」のように説明されます。
ここで確認すべきこと:
- 関連が説明された内容と、あなたが想像するアプリの動きが一致しているか
- 「1人のお客さんが複数回注文できる」など、実際の使い方に合っているか
もし関連がよくわからなければ、AIに「図で示してください」とお願いするのも有効です。
4. 設計結果を成果物として保存する
設計が完成したら、成果物として保存します。以下の2つを残しましょう。
保存するもの
- テーブル設計のテキスト: AIが出力したテーブル一覧と関連の説明をコピーして、テキストファイルやメモアプリに貼り付けて保存します
- スクリーンショット: AIとのやりとりの画面をスクリーンショットで撮影して保存します(完了の証拠になります)
スクリーンショットの撮り方
- Mac:
Command + Shift + 4で範囲を選んで撮影 - Windows:
Windows + Shift + Sで範囲を選んで撮影
AIの回答画面全体が入るように撮りましょう。

5. 完成チェックリストで確認する
以下のチェック項目をすべて満たしていれば、このレッスンは完了です。
- 作りたいアプリに必要なテーブルが2つ以上設計できた
- 各テーブルにID列と必要なカラムが含まれている
- テーブル同士の関連(1対多など)を説明できる
- 設計結果のテキストを保存した
- スクリーンショットを撮影して保存した
つまずきやすいポイントと対処法
テーブルを分けすぎてしまう
最初は「テーブルを何個にすればいいかわからない」と迷うことがあります。目安は管理したいデータの種類ごとに1つです。カフェアプリなら「メニュー」「注文」「顧客」の3つで十分。細かく分けすぎると複雑になるので、まずは3〜5テーブル程度を目安にしましょう。
迷ったらAIに聞いてみましょう:
このアプリの場合、テーブルは何個くらいが適切ですか?
多すぎず少なすぎない設計にしたいです。
「外部キー」「正規化」などの用語がわからない
AIの回答に知らない用語が出てきたら、その場で聞き返せばOKです。
「外部キー」とは何ですか?
Excelのシートに例えて、初心者にもわかるように説明してください。
用語を暗記する必要はありません。意味がわかれば十分です。
どんなアプリを題材にすればいいかわからない
題材に迷ったら、以下から選んでみてください:
- 読書記録アプリ — 本の一覧と読んだ感想を管理
- タスク管理アプリ — やることリストと担当者を管理
- イベント参加管理アプリ — イベント情報と参加者を管理
どれも2〜3テーブルで始められるので、最初の練習にぴったりです。
種類: markdown_doc
検証: basic_manual_check_v1
証跡証跡成果物が正しく作れたことを確認するためのチェックリストです(例: ブラウザで動作する、フォーム送信で値が保存される)。
メディア
必須
なし
あると楽
なし