1.
データベース設計
DDL
はじめに
本チュートリアルをはじめる前に、MySQL超入門 でMySQLの基本を学習する必要があります。
DDLとは
DDL(Data Definition Language) は、データベースの操作言語の一つで、データベースの構造を定義するためのSQLです。DDLは主に、テーブルの作成、変更、削除など、データベーススキーマを操作します。
CREATE
テーブルやデータベースを作成します。
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
ALTER
テーブルの構造を変更します。
ALTER TABLE users ADD COLUMN email VARCHAR(100);
DROP
テーブルやデータベースを削除します。
DROP TABLE users;
TRUNCATE
テーブルのデータを削除しますが、テーブル自体は削除しません。
TRUNCATE TABLE users;
テーブル設計
データベースのDDL(テーブル定義) をします。データベース php_sns
の DDL
は以下のとおりです。
ER図

users
項目 | カラム名 | データ型 | オプション | 外部キー |
---|---|---|---|---|
ID | id | bigint | Primary Key, auto_increment | |
varchar(255) | NOT NULL, UNIQUE | |||
パスワード | password | varchar(255) | NOT NULL | |
アカウント名 | account_name | varchar(255) | NOT NULL, UNIQUE | |
ディスプレイ名 | display_name | varchar(255) | NOT NULL | |
自己紹介 | profile | TEXT | DEFAULT NULL | |
作成日 | created_at | datetime | DEFAULT CURRENT_TIMESTAMP | |
更新日 | updated_at | datetime | NULL |
tweets
項目 | カラム名 | データ型 | オプション | 外部キー |
---|---|---|---|---|
ID | id | bigint | Primary Key, auto_increment | |
メッセージ | message | TEXT | NOT NULL | |
ユーザID | user_id | bigint | NOT NULL | user_id -> users.id |
作成日 | created_at | datetime | DEFAULT CURRENT_TIMESTAMP | |
更新日 | updated_at | datetime | NULL |
likes
項目 | カラム名 | データ型 | オプション | 外部キー |
---|---|---|---|---|
ID | id | bigint | Primary Key, auto_increment | |
ユーザID | user_id | bigint | NOT NULL | |
投稿ID | tweet_id | bigint | NOT NULL | |
作成日 | created_at | datetime | DEFAULT CURRENT_TIMESTAMP | |
更新日 | updated_at | datetime | NULL |
データベースクライアント
データベースクライアントは、データベースを管理・操作するためのクライアントツールで、各OSのスタンドアローンアプリやブラウザなどで利用できます。MySQLで利用できるクライアントツールは以下の通りです。
phpMyAdmin
phpMyAdminは、PHPで動作するMySQL専用クライアントツールです。 ブラウザ上でデータベース管理・操作できるのが特徴です。今回は phpMyAdmin
で説明します。

公式サイト
DBeaver
DBeaver はMySQLだけでなく一般的なDBに対応したデータベースクライアントツールです。 エンタープライズ版は NoSQL にも対応しています。

公式サイト
MySQLWorkBench
MySQLWorkBenchは、MySQL公式で公開される無償のMySQL専用クライアントツールです。

公式サイト
データベース作成
phpMyAdmin へのアクセス
phpMyAdmin
を開きます。
XAMPP
XAMPPは「MySQL > Admin」でアクセスします。
MAMP
MAMPは「WebStart」でブラウザを開き、「Tools > phpMyAdmin」でアクセスします。


新規データベース
MySQLデータベースを新規作成します。phpMyAdminのメニューから「新規作成」を選択します。

php_sns
データベースを作成します。
テーブル作成
テーブルインポート
php_sns
のDDLファイルを準備をします。
schema.sql
CREATE TABLE users (
id bigint PRIMARY KEY AUTO_INCREMENT,
account_name varchar(255) UNIQUE NOT NULL,
email varchar(255) UNIQUE NOT NULL,
password varchar(255) NOT NULL,
display_name varchar(255) NOT NULL,
profile text DEFAULT NULL,
created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at datetime NULL DEFAULT NULL
);
CREATE TABLE tweets (
id bigint Primary KEY AUTO_INCREMENT,
message text NOT NULL,
user_id bigint NOT NULL,
image_path text DEFAULT NULL,
created_at timestamp NULL DEFAULT current_timestamp(),
updated_at timestamp NULL DEFAULT NULL
);
CREATE TABLE likes (
id bigint Primary KEY AUTO_INCREMENT,
user_id bigint NOT NULL,
tweet_id bigint NOT NULL,
created_at timestamp NULL DEFAULT current_timestamp(),
updated_at timestamp NULL DEFAULT NULL
);
ALTER TABLE likes ADD CONSTRAINT likes_user_id_fk FOREIGN KEY (user_id)
REFERENCES users(id)
ON DELETE CASCADE
ON UPDATE CASCADE;
ALTER TABLE likes ADD CONSTRAINT likes_tweet_id_fk FOREIGN KEY (tweet_id)
REFERENCES tweets(id)
ON DELETE CASCADE
ON UPDATE CASCADE;
テーブルインポート
php_sns
データベースにSQLファイルをインポートします。
データベース一覧から php_sns
を選択します。

「インポート」タブから【ファイルを選択...】します。

インポートする SQL ファイルを schema.sql
を選択します。

ファイルを選択したら画面下の【実行】または【インポート】ボタンをクリックします。


テーブルの確認
データベース一覧にテーブルが作成されたかを確認します。

レコード作成
ユーザレコードインポート
users
テーブルにレコードをインポートします。
「インポート」タブから【ファイルを選択...】します。

インポートする SQL ファイルを選択します。

mysqlコマンドでインポートする場合
mysqlコマンド
でDDLファイルをインポートすることもできます。
ターミナル
mysql -u root -p php_sns < database/sql/schema.sql
ユーザデータ確認
users
テーブルを選択して「表示」でデータを確認してみましょう。
