SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Zend Framework入門

Zend Framework入門(7):抽象化レイヤによるデータベースアクセス手法 - Zend_Db(後編) -

Zend Frameworkによる実践的なPHPアプリケーション開発 7

  • X ポスト
  • このエントリーをはてなブックマークに追加

テーブル作成

 まずは、DBMS上で今回使用するテーブルを作成します。前回の記事で作成したデータベースdb_zend_tableに新たなテーブルを作成し、レコードを追加します。プログラムからデータベースにアクセスする際は、前回作成したユーザーzendを使用します。データベースとユーザーの作成を行っていない場合は、前回の記事を参照して先に作成してください。

 オフィス内の部屋に入室する権限を管理する例を想定して、4個のテーブルを作成します。作成するテーブルと内容は次のとおりです。テーブル名は複数形で頭文字のみ大文字にしています。

入室権限管理のテーブル
テーブル名内容
Officesオフィスの情報を格納します。
Rooms管理の対象となる部屋の情報を格納します。
Members管理の対象となるメンバーの情報を格納します。
Permissionsメンバーが持っている入室権限と有効期限を格納します。

 各テーブルの列は次のようになっています。

Officesテーブルの列の内容
列名キー内容
office_idPKオフィスに割り振ったユニークな番号。
office_name-オフィス名の文字列。
Roomsテーブルの列の内容
列名キー内容
room_idPK部屋に割り振った番号。オフィス内ではなく、全体で重複しない値とします。
room_name-部屋名の文字列。
office_idFKその部屋があるオフィスのoffice_id。Officeテーブルのoffice_id列を指す外部キーです。
Membersテーブルの列の内容
列名キー内容
member_idPKメンバーに割り振ったユニークな番号。
member_name-メンバーの名前の文字列。
Permissionsテーブルの列の内容
列名キー内容
member_idPK,FK「誰が」部屋に入る権限を持っているかを示す値。member_idとroom_idの組み合わせがこのテーブルの主キーになります。Membersテーブルのmember_idを指す外部キーです。
room_idPK,FK「どの部屋に」入る権限を持っているかを示す値。member_idとroom_idの組み合わせがこのテーブルの主キーになります。Roomsテーブルのroomr_idを指す外部キーです。
term-入室権限の有効期限をあらわす日付型の値。

 ER図は次のようになります。

入室権限管理のER図
入室権限管理のER図

 MySQLのコマンドラインツールから次のSQLを実行し、テーブルを作成してレコードを投入します。

make_database.sql
-- データベースdb_zend_sampleを使用します
use db_zend_sample;

-- テーブルを作ります
CREATE TABLE Offices(
  office_id int primary key,
  office_name varchar(50)
) engine = InnoDB;

CREATE TABLE Rooms(
  room_id int primary key,
  room_name varchar(50),
  office_id int,
  CONSTRAINT rooms_fk foreign key(office_id)
    REFERENCES offices(office_id)
) engine = InnoDB;

CREATE TABLE Members(
  member_id int primary key,
  member_name varchar(50)
) engine = InnoDB;

CREATE TABLE Permissions(
  member_id int,
  room_id int,
  term date,
  CONSTRAINT permissions_pk primary key(member_id, room_id),
  CONSTRAINT permissions_fk1 foreign key(member_id)
    REFERENCES members(member_id),
  CONSTRAINT permissions_fk2 foreign key(room_id) 
    REFERENCES rooms(room_id)
) engine = InnoDB;

-- レコードを追加します
INSERT INTO offices VALUES(1, '池袋本社');
INSERT INTO offices VALUES(2, '品川分室');
INSERT INTO rooms VALUES(1, 'サーバ室', 1);
INSERT INTO rooms VALUES(2, '資料室', 1);
INSERT INTO rooms VALUES(3, 'サーバ室', 2);
INSERT INTO members VALUES(1, '織田');
INSERT INTO members VALUES(2, '柴田');
INSERT INTO members VALUES(3, '前田');
INSERT INTO permissions VALUES(1, 1, '2009-03-31');
INSERT INTO permissions VALUES(1, 2, '2009-03-31');
INSERT INTO permissions VALUES(2, 3, '2009-03-31');
INSERT INTO permissions VALUES(3, 1, '2009-03-31');
INSERT INTO permissions VALUES(3, 3, '2008-09-30');

 レコードの内容を表にまとめると次のようになります。

入室権限管理のレコードの内容
office_id12
office_name池袋本社品川分室
room_id123
member_idroom_name
member_name
サーバ室資料室サーバ室
1織田2009/03/312009/03/31-
2柴田--2009/03/31
3前田2009/03/31-2008/09/30

次のページ
テーブルクラスの作成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Zend Framework入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 川北 季(カワキタ ミノル)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2536 2008/06/12 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング