北海道のとある企業で働くエンジニアのブログ

北海道でエンジニアとして働いています。技術的なことや感じたことを書きます。最近はブロックチェーンにハマってます。

FuelPHP + MySQL で PHP Webアプリケーションを作ってみる ― データベース構築

ここでは、こんな感じのエンティティ構成でデータベースを構築してみます。
f:id:nw_ocean:20140401001751p:plain

ちなみに「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)


これでデータベースの構築とテーブル作成が完了です。