Q1予約の記録をファイルではなくデータベースに置く理由として、この記事で挙げた違いはどれですか。
データベースとは何か — ファイルとの違い・テーブルと SQL
この記事は、プログラミングやバイブコーディングをする上で最低限身につけたほうがよい IT の実践的な知識を 1 から身につける「IT 基礎知識講座の一部」です。
探す・同時に書く・形を決めるの 3 つを引き受けるのがデータベースです。行と列でできたテーブルと、読み書きを指示する SQL を図解で確かめます。
この記事は、データベース層、つまりデータベースを扱います。
データベースは、データを検索・更新できる形で保存するソフトウェアです。
ファイルとの違いは記録を置く場所ではなく、探す処理と書き込みの整理まで引き受けていることです。
データベースは、ファイルと何が違うか — 探す・同時に書く・形を決める
データベースは、記録を保存するだけの入れ物ではありません。
条件に合う行を探すこと、同時に届いた書き込みを順番に処理すること、記録の形をそろえることの 3 つを引き受けます。
同じ時刻に届いても、書き込みは 1 件ずつ順番に処理されます。
ファイルに直接書く場合は、この順番を自分のプログラムで決めることになります。
よく使われるデータベースは PostgreSQL・MySQL・SQLite です。
設定のように 1 人で書き換える記録は、ファイルのままで問題ありません。
複数の人が同時に読み書きし、条件で探し出す記録が、データベースに置くものです。
データベースは 3 つの作業を引き受ける
ファイルもデータベースも記録はストレージに残り、違うのは探す作業と、同時に書かれたときの順番と、記録の形をそろえることを誰がやるかです。
ファイルなら自分のプログラムが全部やり、データベースならこういう記録が欲しいと伝えるだけで済んで、形の合わない行は断ってもらえます。
テーブルは、行と列の表の形で記録を保存する
データベースの中で記録を保存する単位がテーブル(table。行と列でできた表の形で、同じ種類の記録をまとめたもの)です。
| 予約 ID | 会員 ID | 日付 | 人数 |
|---|---|---|---|
| 1 | 12 | 2026-10-03 | 2 |
| 2 | 7 | 2026-10-03 | 4 |
| 3 | 12 | 2026-10-10 | 3 |
見出しの 1 つ 1 つが列(column。記録の 1 項目)、その下の横 1 本が行(row。1 件分の記録。レコードとも呼びます)です。
行を 1 件に特定するための列が主キー(primary key。同じ値の行を 2 つ作れない列)です。
列は先に決めておき、記録が 1 件増えるたびに行が 1 本ずつ増えます。
- 列: 予約 ID・会員 ID・日付・人数
- 1 行 = 予約 1 件
- 予約が入るたびに行が増える
- 列: 会員 ID・名前・メールアドレス
- 1 行 = 会員 1 人
- 会員が登録するたびに行が増える
予約テーブルには会員の名前を書かず、会員 ID だけを置きます。
名前は会員テーブルの 1 か所にだけあるので、変わっても直す行は 1 つです。
行と列の表の形でデータを持つのがリレーショナルデータベース(relational database。RDB とも書きます)で、共通の列でテーブルどうしを結び付けて使えます。
テーブルを作る前に決めておくものがスキーマ(schema。テーブルの名前、列の名前、各列に入る値の種類を決めたもの)で、値の種類は数値・文字・日付のような区別を指し、型(type)とも書かれます。
テーブルは、列を先に決めて行を増やす表
テーブルは、縦の列と横の行でできた表です。
列の名前は先に決めておき、記録が 1 件増えるたびに行が 1 本増え、1 件を見分けるための主キーの値を別のテーブルにも置くと、2 つがつながります。
SQL は、アプリケーションサーバー層がデータベースに送る読み書きの指示の書き方
テーブルへの読み書きを指示する書き方がSQL(Structured Query Language。行の読み出し・追加・書き換え・削除を指示する言語)で、1 つの指示をクエリ(query)と呼びます。
入門書には次の形で出てきます。
SELECT date, guests
FROM reservations
WHERE member_id = 12;
SELECT の後ろが取り出す列、FROM の後ろがテーブル、WHERE の後ろが条件です。
この 3 行は、予約テーブルから会員 ID が 12 の行の日付と人数を取り出す指示です。
先頭の語を見れば、読み出し・追加・書き換え・削除のどれかが分かります。
行を探すのはデータベースで、アプリケーションサーバー層はどの行が欲しいかを伝えるだけです。
書き換えと削除では、返る行ではなくテーブルに残る行が変わります。
SQL を書かずに言語の書き方でテーブルを扱えるようにする部品がORM(Object-Relational Mapping。言語の書き方でテーブルの行を扱い、SQL に変換して送る部品)です。
ORM を使っていても、届いているのは SQL のクエリです。
SQL を自分で書いて動かすのは、SQL 入門講座の SELECT の記事で扱います。
SQL は、欲しい行を伝える書き方
SQL は、データベースに読み書きを頼むときの書き方です。
先頭の語で読み出す・足す・書き換える・消すのどれかが決まり、どの行が対象かは条件で伝えて、探す作業はデータベースがやります。
理解度チェック
まずは1問ずつ答えてみましょう。
Q2SELECT date, guests FROM reservations WHERE member_id = 12; というクエリは、何を指示していますか。
Q3予約テーブルに会員の名前ではなく会員 ID を入れるのは、なぜですか。