phpMyAdminでのテーブル作成と外部キー制約(FOREIGN KEY)設定

カテゴリ:データベース編

実際のレンタルサーバーではテーブルの作成や外部キー制約などのすべての設定をphpMyAdminで実施することになります。そのためこの記事ではphpMyAdminによるテーブル作成、制約(PRIMARY KEY、FOREIGN KEY、AUTO_INCREMENT)設定の手順について解説いたします。

Noteレンタルサーバーのプラン(データベース1つのプラン)によっては最初からデータベースが作成されているものもありますが、もし作成されていない場合は作成し、phpMyAdminにログインしましょう。
ロリポップの場合

今回はSQLの副問合せとは?でサンプルとして作成したテーブル(メインとなるblogテーブルと、カテゴリーリストのcategory_listテーブルを作成し、category_idを参照キーに設定)をphpMyAdminで作成したいと思います。

今回phpMyAdminで作成するテーブル:

CREATE TABLE category_list (
    id INT PRIMARY KEY AUTO_INCREMENT,
    category VARCHAR(100) UNIQUE KEY NOT NULL
);

CREATE TABLE blog (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    text TEXT NOT NULL,
    date DATETIME,
    category_id INT NOT NULL,
    FOREIGN KEY (category_id) REFERENCES category_list(id) ON DELETE RESTRICT ON UPDATE CASCADE
);

テーブルの作成

phpMyAdminにログインし左ペインでデータベースを選択すると [構造] タブ内に [テーブルを作成] という項目があります。category_listテーブルから作成するため、名前にcategory_list、カラム数に2を指定して [実行] をクリックします。

category_listテーブルはカテゴリーの参照先となるテーブルであるため、カラムはシンプルにidcategoryのみです。以下のようにデータ型を設定します。

照合順序は恐らくレンタルサーバー側の初期設定でutf8_general_ciになっていると思いますが、念のため文字列型であるcategoryカラムでutf8_general_ciを選択しておきます。

idは主キーになるため、インデックス欄でPRIMARYを選択します。また自動インクリメントさせるため、A I欄もチェックを入れておきます。 これで [保存する] をクリックして作成しましょう。

次はメインとなるblogテーブルの作成です。 先程と同様に [構造] タブ内の [テーブルを作成] からblogテーブルを作成します。カラム数は5つです。

以下のようにカラムを設定します。

idは主キー、category_idはcategory_listテーブルのidを参照させます。titleはブログの件名、textはブログ本文、dateは登録日時用のカラムです。 category_listテーブルと同様にidはインデックスでPRIMARYを選択し、A I欄をチェックします。

また、文字列型であるtitleとtextカラムの照合順序はutf8_general_ciに指定しておきます。

これで、2つのテーブルが作成されました。

外部キー制約の作成

今度は外部キー制約(FOREIGN KEY)を設定します。

まず、blogテーブルの [構造] で参照元となるcategory_idカラムを選択して [インデックス] をクリックし、インデックスを作成します。

次に [テーブルの構造] の隣りにある [Relation view] をクリックし、[Foreign key constraints] 欄で参照元カラムにcategory_id、参照先データベース(対象のデータベースを選択)、参照先テーブルにcategory_list、参照先カラムにidを指定します。

ON DELETEは初期設定のRESTRICT(削除を許可しない場合)、ON UPDATEはCASCADE(値の変更を参照元に同期させる場合)を選択します。

Note整合性を保つため、参照先テーブルの削除は許可しないが、参照先が更新される場合は参照元も連動して更新させる動作となります。これにより整合性を保ったままカテゴリー名を一括で変更できるようになります。

この状態で [保存する] をクリックすると外部キー制約が作成されます。

実行されたSQL文、作成された外部キー制約の内容を確認しておきましょう。

以上、phpMyAdminでのテーブル作成、制約(PRIMARY KEY、FOREIGN KEY、AUTO_INCREMENT)設定の手順でした。

公開日時:2020年05月05日 10:07:22

なお、レンタルサーバー選びで迷ったらこちらの記事で主要レンタルサーバーのプランと料金を比較していますので、是非参考にしてみてください。

データベース編に戻る

このページのトップに戻る