データベース ・ Chapter 2

テーブル設計・入門

記事 ・ 冒頭を無料公開中

前の章で、データベースは「すべてを表で持つ」と学びました。では、その表は誰が決めるのか——あなたです。アプリを作るとき、開発者は最初に「どんなテーブルを、どんな列で作るか」を決めます。これを"テーブル設計"と呼びます。設計はこのコースで2回扱います。今日はその入門編——1枚のテーブルを正しく作れるようになることがゴールです。

題材: メモアプリのデータを表にする

シンプルなメモアプリを考えます。メモには、本文と、作成日時がある。まずは素朴に表にしてみます。

memosテーブル(第一案)

bodycreated_at
牛乳を買う2026-08-01 09:00
会議は15時から2026-08-01 12:30

列を決める——これが設計の第一歩です。「このアプリは何のデータを覚えておく必要があるか?」を列挙して、列にする。ここまでは自然にできると思います。しかし、この表にはプロの目で見ると欠けているものが2つあります。この章でそれを埋めていきます。

欠けているもの①——1行を指させる「番号」

このメモアプリで「2件目のメモを削除したい」とき、どう指定しましょうか。本文で?——同じ本文のメモが2件あったら、両方消えてしまいます。作成日時で?——同時刻に2件作られたら区別できません。どの行にも「その行だけを確実に指させる値」が必要です。

そこで、すべての行に重複しない番号を振ります。この「行を一意に特定するための列」を主キー(PRIMARY KEY)と呼びます。

memosテーブル(第二案)

idbodycreated_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...と自動で増える整数、という意味です)。

このチャプターの続きは受講生限定です

本文の残り、図解・実行できるコードブロック・演習はプラン加入後に読めます。

料金プランを見る