データベース ・ Chapter 2
テーブル設計・入門
記事 ・ 冒頭を無料公開中
前の章で、データベースは「すべてを表で持つ」と学びました。では、その表は誰が決めるのか——あなたです。アプリを作るとき、開発者は最初に「どんなテーブルを、どんな列で作るか」を決めます。これを"テーブル設計"と呼びます。設計はこのコースで2回扱います。今日はその入門編——1枚のテーブルを正しく作れるようになることがゴールです。
題材: メモアプリのデータを表にする
シンプルなメモアプリを考えます。メモには、本文と、作成日時がある。まずは素朴に表にしてみます。
memosテーブル(第一案)
| body | created_at |
|---|---|
| 牛乳を買う | 2026-08-01 09:00 |
| 会議は15時から | 2026-08-01 12:30 |
列を決める——これが設計の第一歩です。「このアプリは何のデータを覚えておく必要があるか?」を列挙して、列にする。ここまでは自然にできると思います。しかし、この表にはプロの目で見ると欠けているものが2つあります。この章でそれを埋めていきます。
欠けているもの①——1行を指させる「番号」
このメモアプリで「2件目のメモを削除したい」とき、どう指定しましょうか。本文で?——同じ本文のメモが2件あったら、両方消えてしまいます。作成日時で?——同時刻に2件作られたら区別できません。どの行にも「その行だけを確実に指させる値」が必要です。
そこで、すべての行に重複しない番号を振ります。この「行を一意に特定するための列」を主キー(PRIMARY KEY)と呼びます。
memosテーブル(第二案)
| id | body | created_at |
|---|---|---|
| 1 | 牛乳を買う | 2026-08-01 09:00 |
| 2 | 会議は15時から | 2026-08-01 12:30 |
「id列を作って主キーにする」——これはほぼすべてのテーブルで行う、設計の定石です。主キーには2つの約束が課されます: 重複しない(同じidの行は作れない)、空にできない(idがNULLの行は作れない)。データベースがこの約束を自動で守ってくれるので、「idを指定すれば必ず1行だけが特定できる」と信頼してコードが書けます。
ちなみに番号を人間が手で振るのは面倒だし間違えます。データベースには「新しい行が入るたびに、自動で次の番号を振る」仕組みがあり、PostgreSQLでは列の型を serial とすることで使えます(1, 2, 3...と自動で増える整数、という意味です)。
このチャプターの続きは受講生限定です
本文の残り、図解・実行できるコードブロック・演習はプラン加入後に読めます。