リレーショナルデータベース(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を紐づけることができます。