複数テーブルの連携 (2/5)
作成:2015-10-24 09:13
更新:2015-10-24 09:13
更新:2015-10-24 09:13
■2つのテーブルを用意する
では、簡単なサンプルを作成して、実際に関連付けを行ってみましょう。まずは、テーブルを用意して置かなければいけませんね。ここでは、「members」と「messages」という2つのテーブルを作成しておくことにしましょう。
下のリスト欄に2つのテーブルの生成SQLクエリーを掲載しておきました。サンプルプロジェクトではSQLiteをデータベースに設定していましたから、これで利用できるクエリー文になっています。
この2つのテーブルは、menbersとmessagesが「1対多」の関係で関連付けられるようになっています。membersのレコード1つに、messagesの複数のレコードが関連付けられる、というわけです。
●外部IDについて
ここでのポイントは、messagesテーブルにある項目です。ここには「members_id」という名前の項目が用意されていますね。これは「外部ID(外部キー)」と呼ばれる働きをするものです。
外部IDは、関連付けられるテーブルのIDを保管するものです。ここでは、messagesテーブルに、関連するmembersのレコードのIDを保管するために用意してあります。外部IDは、このように「テーブル名_id」という名前で付けられるのが一般的です。
テーブル作成は、コマンドラインからSQLiteで行ってもいいですが、前に紹介したSQLite Database Browserを使えばマウス操作で作成することもできます。
※SQLite Database Browserのサイト
下のリスト欄に2つのテーブルの生成SQLクエリーを掲載しておきました。サンプルプロジェクトではSQLiteをデータベースに設定していましたから、これで利用できるクエリー文になっています。
この2つのテーブルは、menbersとmessagesが「1対多」の関係で関連付けられるようになっています。membersのレコード1つに、messagesの複数のレコードが関連付けられる、というわけです。
●外部IDについて
ここでのポイントは、messagesテーブルにある項目です。ここには「members_id」という名前の項目が用意されていますね。これは「外部ID(外部キー)」と呼ばれる働きをするものです。
外部IDは、関連付けられるテーブルのIDを保管するものです。ここでは、messagesテーブルに、関連するmembersのレコードのIDを保管するために用意してあります。外部IDは、このように「テーブル名_id」という名前で付けられるのが一般的です。
テーブル作成は、コマンドラインからSQLiteで行ってもいいですが、前に紹介したSQLite Database Browserを使えばマウス操作で作成することもできます。
※SQLite Database Browserのサイト
http://sqlitebrowser.org/
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
CREATE TABLE `members` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `name` TEXT NOT NULL, `mail` TEXT ) CREATE TABLE `messages` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `members_id` INTEGER NOT NULL, `title` TEXT NOT NULL, `comment` TEXT )
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る