MySQLテーブル設計の基本!phpMyAdminで最初のテーブルを作成しよう

データベースを作成しただけでは、まだデータを保存することはできません。データベースという大きな「ファイルキャビネット」の中に、具体的な情報を整理して入れるための「仕切り付きの棚」、すなわち「テーブル」を作成する必要があります。

このテーブルをどのように作るか(テーブル設計)は、アプリケーションの性能や将来の拡張性に大きく影響する、非常に重要な工程です。

この記事では、テーブル設計の基本的な考え方を学び、phpMyAdminを使って実際にテーブルを作成し、最初のデータを登録するまでの手順を解説します。


目次

1. テーブル設計の基本概念

テーブルは、Excelなどのスプレッドシートをイメージすると理解しやすいです。

  • テーブル (Table): スプレッドシートの「シート」そのもの。特定のテーマに沿ったデータの集まりです。(例: reviewsテーブル)
  • カラム (Column): シートの「列」。テーブルにどのようなデータを保存するかの項目を定義します。(例: 書籍名, 評価
  • レコード (Record) / 行 (Row): シートの「行」。一行で一件分の具体的なデータを表します。(例: ある一冊の本に対するレビューデータ)

最初に「どのような情報を保存したいか」を考え、それに基づいて必要なカラムを洗い出すことが、テーブル設計の第一歩です。

カラムの「データ型」を決める

データベースでは、各カラムに「どのような種類のデータを入れるか」をデータ型として厳密に定義する必要があります。これにより、データの整合性を保ち、効率的にデータを管理できます。

初心者がまず覚えておきたい、代表的なデータ型は以下の通りです。

  • INT: 整数を格納します。(例: ユーザーID、商品の価格)
  • VARCHAR: 可変長の文字列を格納します。最大文字数を指定する必要があります。(例: ユーザー名、本のタイトル)
  • TEXT: 長い文章を格納します。最大文字数の指定は不要です。(例: ブログの本文、レビューの詳細)
  • TIMESTAMP: 日付と時刻を格納します。データの作成日時や更新日時によく使われます。

主キーとオートインクリメント

テーブル設計において、特に重要なのが「主キー(Primary Key)」です。

  • 主キー: 各レコードを一意に識別するためのカラムです。学籍番号や社員番号のように、絶対に重複しない値が入るカラムを主キーに指定します。これにより、データの重複を防ぎ、特定のレコードを高速に検索できます。

通常、主キーにはidという名前のINT型のカラムを用意し、「オートインクリメント(Auto Increment)」という設定を施します。これは、新しいレコードが追加されるたびに、データベースが自動で「1, 2, 3…」と連番を振ってくれる便利な機能です。


2. 実践!phpMyAdminでテーブルを作成する

それでは、「読書記録」を保存するためのreviewsテーブルを設計し、phpMyAdminで作成してみましょう。

reviewsテーブルの設計図:

カラム名データ型特徴
idINT主キー、オートインクリメント
book_titleVARCHAR(255)書籍名(最大255文字)
ratingINT評価(1〜5の数字)
review_textTEXT感想文
created_atTIMESTAMP登録日時(自動で現在日時が入る)

作成手順:

  1. データベースを選択: phpMyAdminの左側メニューから、前回作成したmy_first_dbをクリックします。
  2. テーブル作成画面を開く: 「テーブルを作成」という画面で、名前の欄に「reviews」と入力し、「作成」ボタン(または「実行」ボタン)をクリックします。
  3. カラムを定義する:
    • idカラム:
      • 名前: id
      • 型: INT
      • 右の方にある「A_I」のチェックボックスをオンにします。(これがオートインクリメントの設定です)
      • インデックス: PRIMARYを選択します。(これが主キーの設定です)
    • book_titleカラム:
      • 名前: book_title
      • 型: VARCHAR
      • 長さ/値: 255
    • ratingカラム:
      • 名前: rating
      • 型: INT
      • 長さ/値: 1
    • review_textカラム:
      • 名前: review_text
      • 型: TEXT
    • created_atカラム:
      • 名前: created_at
      • 型: TIMESTAMP
      • デフォルト: CURRENT_TIMESTAMP を選択します。(これにより、データ登録時に自動で現在日時が記録されます)
  4. 保存する: 全てのカラムを定義したら、画面下部の「保存する」ボタンをクリックします。テーブルが正常に作成されると、構造が表示されます。

3. テーブルに最初のデータを追加しよう

テーブルという器ができたので、手動で最初のレコードを追加してみましょう。

  1. 作成したreviewsテーブルを選択した状態で、上部メニューの「挿入」タブをクリックします。
  2. value(値)の列に、登録したいデータを入力します。idcreated_atは自動で入力されるため、空のままでOKです。
    • book_title: PHP入門
    • rating: 5
    • review_text: とても分かりやすかった。
  3. 画面下部の「実行」ボタンをクリックします。「1行挿入されました」と表示されれば成功です。
  4. 表示」タブをクリックすると、今登録したデータがテーブルに保存されていることを確認できます。

(予告) PHPでデータをテーブルに保存する

最終的な目標は、HTMLフォームから送信されたデータを、PHPプログラムを使ってこのテーブルに保存することです。PHP 8とPDOを使ったデータベースへのデータ挿入は、以下のようなコードになります。

insert.phpのサンプルコード:

<?php
// (データベースへの接続処理は省略)
// $pdo = new PDO(...);

// フォームから送信されたデータ(仮)
$title = "新しいWebデザインの本";
$rating = 4;
$review = "写真が多くて見やすい。";

// SQLインジェクション対策として、プリペアドステートメントを使用する
$sql = "INSERT INTO reviews (book_title, rating, review_text) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$title, $rating, $review]);

echo "新しいレビューを保存しました。";
?>

このように、PHPからSQL文を実行することで、動的にデータをテーブルに保存していきます。

まとめ

  • テーブル設計は、アプリケーションのデータの骨格を決める重要な工程。
  • 各カラムには、保存するデータに合わせたデータ型を指定する。
  • 各レコードを一位に特定するため、主キー(通常はオートインクリメントのidカラム)を設定する。
  • phpMyAdminを使えば、これらの作業を画面上で直感的に行うことができる。

これで、PHPアプリケーションのバックエンドを支える、しっかりとしたデータの基盤が完成しました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次