リレーショナルデータベース(RDB)とは、「テーブル」という表形式の構造で管理するエクセルの表のイメージです。行をレコードと呼び、列をフィールドと呼びます。1行に1件のデータが格納され、1レコードとなります。が、各レコードのデータは必ず”一意”であることが条件となります。データの重複を避けることで、検索スピードを上げることができるのです。ここでは、複数のテーブルにリレーションを貼り、リレーショナルデータベースを実践してみます。

所属の追加
現在、データベース(jinji)のテーブル(staff_list)では、所属という項目がない為、どこの部署なのかを識別することができません。そこで、所属という項目を追加して、それが識別できるようにしてみます。
Xamppの起動
ApacheとMySQLの起動
MySQLを使うためには、Apacheも必要となりますので、両方起動します。

MySQLのAdminの起動
Adminをクリックすると、phpMyAdminというツールが開きます。このphpMyAdminを通してMySQL(MariaDB)にアクセスすることとなります。

対象ファイルの選択
データベース(jinji)の選択

テーブル(staff_list)の選択

所属カラムの追加
ここでテーブル(staff_list)に、どこの部署なのかを識別するための「所属」という項目を追加します。
「構造」タブをクリック

カラムの追加
staff_nameの後に、「syozoku」という名前でカラムを1つ追加します。

「所属データ」の入力

所属カラムを追加したことで、どこの部署なのかを識別することができるようになりました。ここでは、相田さんと山内さんが同じ1号館の所属であることがわかります。そこで、さらに1号館等の所属の電話番号も一緒に管理したい等という場合は、カラムを追加しなければなりません。すると、どんどんとテーブルが肥大化してしまいます。また、相田さんが異動で1号館から2号館に移動した場合には、syozokuの項目を変更しなければならなくなり、非常に効率がわるくなります。そこで、このような場合は、テーブルを分けることをします。折角、部署カラムを追加したのですが、この方法ではメンテナンスも大変ですので、staff_listとは別に、新たな所属テーブルを作成して、2つのテーブルを関連付けて管理することとします。
所属カラムの削除
そこで、テーブルを分ければ、syozokuのカラムは不要となりますので削除しておきます。
カラムの削除

syozokuにチェックを入れて、「削除」をクリックします。

カラム削除結果

所属テーブルの作成
Xamppの起動
ApacheとMySQLの起動
MySQLを使うためには、Apacheも必要となりますので、両方起動します。

MySQLのAdminの起動
Adminをクリックすると、phpMyAdminというツールが開きます。このphpMyAdminを通してMySQL(MariaDB)にアクセスすることとなります。

テーブルの作成
所属を管理する新たなテーブル(syozoku)を作成します。
データベース(jinji)の選択

テーブル(syozoku)の作成
①テーブル名、カラム数の入力
テーブル名、カラム数を入力して「実行」をクリックします。

②カラム名、データ型の入力
名前は、id,name,tel、データ型は、INT,TEXT,TEXTとします。

③プライマリーキーの設定
idのカラムをプライマリーキーに設定します。

④オートインクリメントの設定

これでテーブルの設定が終わりましたので、「保存」をクリックします。
テーブル作成完了

データの入力
「挿入」タブのクリック
作成したテーブル(syozoku)にデータを入力します。

同様にして、以下を追加します。

「表示」タブのクリック
入力された内容を確認します。

これで、syozokuというテーブルには3つの部署の情報が格納されました。
staff_listと、syozokuの結びつけ
作成した所属テーブル(syozoku)と、スタッフリスト(staff_list)テーブルを結びつける為、スタッフリスト(staff_list)に、所属コード(syozoku_id)を設定するカラムを追加します。
カラムの追加
staff_listにカラムを追加します。
①「構造」タブのクリック

②カラムの設定
名前を「syozoku_id」、データ型を「INT」として、「保存」をクリックします。

③追加の確認
syozoku_idのカラムが追加されました。

このsyozoku_idに、syozokuテーブルのidを入力することで、結びつけることができます。
カラムへのデータの挿入
追加したカラム(syozoku_id)ヘ、所属コードを入力します。


このままでは、syozoku_idはセットされましたが、syozoku_id=11が1号館であるという事は、syozokuテーブルを検索しなければわかりません。データベースでは、リレーションを使って2つのデータベースがあたかも1つのデータベースであるかの如くふるまうことができます。
SQLの入力
①特定レコードのみ紐づけ

「実行」をクリックすると

staff_listのid=1の相田さんの情報が表示されますが、その前にsyozokuの情報が付属して表示されます。
②全レコードの紐づけ
WHERE句を無くして、「実行」をクリックすると、全てに対してsyozokuを紐づけることができます。
