FuelPHP + MySQL で PHP Webアプリケーションを作ってみる ― データベース構築
ここでは、こんな感じのエンティティ構成でデータベースを構築してみます。
ちなみに「A5:SQL Mk-2」というツールを使っています。
A5:SQL Mk-2 - フリーの汎用SQL開発ツール/ER図ツール
データベース作成
文字コード「UTF-8」を指定して「USER_MANAGEMENT」というデータベースを作成します。
$ mysql -u root mysql> CREATE DATABASE `USER_MANAGEMENT` DEFAULT CHARACTER SET UTF8; Query OK, 1 row affected (0.02 sec)
無事作成されたか確認。
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | cdcol | | mysql | | performance_schema | | phpmyadmin | | test | | user_management | | webauth | +--------------------+ 8 rows in set (0.03 sec) mysql> SHOW CREATE DATABASE USER_MANAGEMENT; +-----------------+------------------------------------------------------------- -------------+ | Database | Create Database | +-----------------+------------------------------------------------------------- -------------+ | USER_MANAGEMENT | CREATE DATABASE `USER_MANAGEMENT` /*!40100 DEFAULT CHARACTER SET utf8 */ | +-----------------+------------------------------------------------------------- -------------+ 1 row in set (0.00 sec)
テーブル作成
先ほどのER図からDDLを作成し、テーブルを作ってみます。
mysql> USE USER_MANAGEMENT; Database changed mysql> create table DEPT_MST ( -> DEPT_CD INT not null auto_increment comment '所属CD' -> , DEPT_NAME VARCHAR(50) not null comment '所属名' -> , constraint DEPT_MST_PKC primary key (DEPT_CD) -> ) comment '所属マスタ' ; Query OK, 0 rows affected (0.06 sec) mysql> create table USER_MST ( -> USER_CD CHAR(5) not null comment '社員CD' -> , DEPT_CD INT not null comment '所属CD' -> , USER_NAME VARCHAR(50) not null comment '社員名' -> , ENTER_DATE DATE not null comment '入社年月日' -> , constraint USER_MST_PKC primary key (USER_CD) -> ) comment '社員マスタ' ; Query OK, 0 rows affected (0.02 sec) mysql> SHOW TABLES; +---------------------------+ | Tables_in_user_management | +---------------------------+ | dept_mst | | user_mst | +---------------------------+ 2 rows in set (0.00 sec)
テストデータ投入
せっかくテーブルを作ったので、作成した社員マスタ、所属マスタにデータを入れてみます。
mysql> INSERT INTO DEPT_MST(DEPT_NAME) VALUES('総務部'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO DEPT_MST(DEPT_NAME) VALUES('経理部'); Query OK, 1 row affected (0.00 sec) mysql> mysql> INSERT INTO USER_MST(USER_CD, DEPT_CD, USER_NAME, ENTER_DATE) -> VALUES('00001', 1, '総務 太郎', '2005-04-01'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO USER_MST(USER_CD, DEPT_CD, USER_NAME, ENTER_DATE) -> VALUES('00002', 1, '総務 次郎', '2010-10-01'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO USER_MST(USER_CD, DEPT_CD, USER_NAME, ENTER_DATE) -> VALUES('00003', 2, '経理 雄太', '2008-04-01'); Query OK, 1 row affected (0.00 sec) mysql> SELECT USER_CD, DEPT_NAME, USER_NAME, ENTER_DATE FROM USER_MST -> INNER JOIN DEPT_MST ON USER_MST.DEPT_CD = DEPT_MST.DEPT_CD; +---------+-----------+------------+------------+ | USER_CD | DEPT_NAME | USER_NAME | ENTER_DATE | +---------+-----------+------------+------------+ | 00001 | 総務部 | 総務 太郎 | 2005-04-01 | | 00002 | 総務部 | 総務 次郎 | 2010-10-01 | | 00003 | 経理部 | 経理 雄太 | 2008-04-01 | +---------+-----------+------------+------------+ 3 rows in set (0.00 sec)
これでデータベースの構築とテーブル作成が完了です。