リレーショナルデータベース(RDB)とは、「テーブル」という表形式の構造で管理するエクセルの表のイメージです。行をレコードと呼び、列をフィールドと呼びます。1行に1件のデータが格納され、1レコードとなります。が、各レコードのデータは必ず”一意”であることが条件となります。データの重複を避けることで、検索スピードを上げることができるのです。ここでは、複数のテーブルにリレーションを貼り、リレーショナルデータベースを実践してみます。
![リレーショナルデータベースのイメージ図](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r00a.jpg)
所属の追加
現在、データベース(jinji)のテーブル(staff_list)では、所属という項目がない為、どこの部署なのかを識別することができません。そこで、所属という項目を追加して、それが識別できるようにしてみます。
Xamppの起動
ApacheとMySQLの起動
MySQLを使うためには、Apacheも必要となりますので、両方起動します。
![xamppの起動画面](https://gungii.com/wp/wp-content/uploads/2020/09/admin-u01a.jpg)
MySQLのAdminの起動
Adminをクリックすると、phpMyAdminというツールが開きます。このphpMyAdminを通してMySQL(MariaDB)にアクセスすることとなります。
![phpMyAdminの初期画面](https://gungii.com/wp/wp-content/uploads/2020/09/admin-u02a.jpg)
対象ファイルの選択
データベース(jinji)の選択
![データベースjinjiを選択して表示されたテーブル一覧](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r01a.jpg)
テーブル(staff_list)の選択
![テーブルstaff_listを選択して表示されたスタッフ一覧](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r02a.jpg)
所属カラムの追加
ここでテーブル(staff_list)に、どこの部署なのかを識別するための「所属」という項目を追加します。
「構造」タブをクリック
![構造タブを選択されたstaff_list](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r03a.jpg)
カラムの追加
staff_nameの後に、「syozoku」という名前でカラムを1つ追加します。
![syozokuというカラムを追加したstaff_list](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r04a.jpg)
「所属データ」の入力
![syozokuを入力したstaff_list](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r05a.jpg)
所属カラムを追加したことで、どこの部署なのかを識別することができるようになりました。ここでは、相田さんと山内さんが同じ1号館の所属であることがわかります。そこで、さらに1号館等の所属の電話番号も一緒に管理したい等という場合は、カラムを追加しなければなりません。すると、どんどんとテーブルが肥大化してしまいます。また、相田さんが異動で1号館から2号館に移動した場合には、syozokuの項目を変更しなければならなくなり、非常に効率がわるくなります。そこで、このような場合は、テーブルを分けることをします。折角、部署カラムを追加したのですが、この方法ではメンテナンスも大変ですので、staff_listとは別に、新たな所属テーブルを作成して、2つのテーブルを関連付けて管理することとします。
所属カラムの削除
そこで、テーブルを分ければ、syozokuのカラムは不要となりますので削除しておきます。
カラムの削除
![構造タブからsyozokuカラムの削除を選択したstaff_list](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r06a.jpg)
syozokuにチェックを入れて、「削除」をクリックします。
![カラム削除の実行確認画面](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r07a.jpg)
カラム削除結果
![syozokuカラムを削除したstaff_list](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r08a.jpg)
所属テーブルの作成
Xamppの起動
ApacheとMySQLの起動
MySQLを使うためには、Apacheも必要となりますので、両方起動します。
![xamppの起動画面](https://gungii.com/wp/wp-content/uploads/2020/09/admin-u01a.jpg)
MySQLのAdminの起動
Adminをクリックすると、phpMyAdminというツールが開きます。このphpMyAdminを通してMySQL(MariaDB)にアクセスすることとなります。
![phpMyAdminの初期画面](https://gungii.com/wp/wp-content/uploads/2020/09/admin-u02a.jpg)
テーブルの作成
所属を管理する新たなテーブル(syozoku)を作成します。
データベース(jinji)の選択
![データベースjinjiを選択して表示されたテーブル一覧](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r01a.jpg)
テーブル(syozoku)の作成
①テーブル名、カラム数の入力
テーブル名、カラム数を入力して「実行」をクリックします。
![テーブルsyozokuの追加画面](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r11a.jpg)
②カラム名、データ型の入力
名前は、id,name,tel、データ型は、INT,TEXT,TEXTとします。
![カラム名、データ型の入力画面](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r12a.jpg)
③プライマリーキーの設定
idのカラムをプライマリーキーに設定します。
![プマリーキーの設定画面](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r13a.jpg)
④オートインクリメントの設定
![オートインクリメントの設定画面](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r14a.jpg)
これでテーブルの設定が終わりましたので、「保存」をクリックします。
テーブル作成完了
![テーブルsyozokuの設定完了画面](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r15a.jpg)
データの入力
「挿入」タブのクリック
作成したテーブル(syozoku)にデータを入力します。
![テーブルsyozokuのデータ入力画面](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r16a.jpg)
同様にして、以下を追加します。
![テーブルsyozokuに入力する項目表](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r17a.jpg)
「表示」タブのクリック
入力された内容を確認します。
![表示タブで表示されたsyozokuの入力データ](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r18a.jpg)
これで、syozokuというテーブルには3つの部署の情報が格納されました。
staff_listと、syozokuの結びつけ
作成した所属テーブル(syozoku)と、スタッフリスト(staff_list)テーブルを結びつける為、スタッフリスト(staff_list)に、所属コード(syozoku_id)を設定するカラムを追加します。
カラムの追加
staff_listにカラムを追加します。
①「構造」タブのクリック
![構造タブで表示されたsyozokuのテーブル構造](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r19a.jpg)
②カラムの設定
名前を「syozoku_id」、データ型を「INT」として、「保存」をクリックします。
![カラムの設定画面](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r20a.jpg)
③追加の確認
syozoku_idのカラムが追加されました。
![syozoku-idというカラムを追加したstaff_list](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r21a.jpg)
このsyozoku_idに、syozokuテーブルのidを入力することで、結びつけることができます。
カラムへのデータの挿入
追加したカラム(syozoku_id)ヘ、所属コードを入力します。
![テーブルsyozokuに入力する項目表](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r22a.jpg)
![syozoku-idの入力されたstaff_list](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r23a.jpg)
このままでは、syozoku_idはセットされましたが、syozoku_id=11が1号館であるという事は、syozokuテーブルを検索しなければわかりません。データベースでは、リレーションを使って2つのデータベースがあたかも1つのデータベースであるかの如くふるまうことができます。
SQLの入力
①特定レコードのみ紐づけ
![所属レコードを追加するSQLと実行画面](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r24a.jpg)
「実行」をクリックすると
![所属レコードが追加されたSQL実行結果](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r25a.jpg)
staff_listのid=1の相田さんの情報が表示されますが、その前にsyozokuの情報が付属して表示されます。
②全レコードの紐づけ
WHERE句を無くして、「実行」をクリックすると、全てに対してsyozokuを紐づけることができます。
![syozokuテーブルとstaff_listの紐づけのSQL](https://gungii.com/wp/wp-content/uploads/2020/07/admin-r26a.jpg)