0
0

ER図について②

Posted at

前回の続きです。
備忘録のため、記事にします。

4.外部キーで置き換える
 以下は注文テーブルカラムになります。会員氏名というカラムがありますが、ある問題が起こる可能性があります。

order_data.png
会員氏名を name:stringというデータ型で保存しているため、同姓同名の人がいた場合に識別できなくなってしまいます。

ではどのようにすればよいでしょうか。

uniqueness.png

注文テーブルの会員氏名を会員idというカラムに変更することにより、同姓同名の場合でもidにより識別することができます。

注文id 1 の会員氏名は会員テーブルのid 14 の山田花子さん
注文id 2の会員氏名は会員テーブルのid 89 の山田花子さんになります。
外部キーで置き換えられる場合はほかのテーブルから関連付けをする必要があります。

5.マスタ項目を分割する
product_genre_data.png
上記のような商品テーブルが存在するとします。
例えば、リリース後に商品ジャンルを変更・追加する必要が発生しました。
一つ一つ変更するのはとても手間で、大変ですよね。
そこで、商品マスターテーブルを作成して、商品テーブルのジャンルカラムに外部キーとしてカラムを追加したいと思います。create_genre_table_modified_column_name.png
商品ジャンルテーブルを新たに作成し、ジャンルidを関連付けました。ジャンルidを追加したことにより、変更や追加などがあった場合、商品ジャンルテーブルを更新すればいいので、修正が簡単になりましたね。

6.多重度を考える
ER図を作成する上で一番理解が難しかった部分になります。
データベースは上記のようにほかのテーブルと関連づける場合がありますが、関連付ける際に注意するポイントがあって、「片方のカラムから見て、相手のカラムはいくつあるか」という部分を注意する必要があります。具体的にデータベースを作成しながら確認していきます。

例1 1対多の場合
あるクラスのデータベースになります。
スクリーンショット 2024-05-14 221235.png

学生が所属するクラスは1つ
そのクラスには生徒が複数いる このような関係を1対多の関係といいます。

例2 多対多の場合
次に部活動テーブルを用いて説明します。
学生は1つ以上の部活動に所属できることとします。
many_to_many_relationship.png
一つのカラムに繰り返しが発生してしまっていたり、同じカラムが増えてしまいます。ではどのように改善すればいいのでしょうか。スクリーンショット 2024-05-14 222028.png
部活動中間テーブルというテーブルを作成することにより、1対多の関係が作れるようになりました。

Railsでは1対多の関係にすることにより、テーブル間でデータの受け渡しができるようになります。この1対多という関係は非常に大切だと思ったので、理解を深めたいと思います。

エンジニアの未経験転職を目指しています。間違いなどがあればご指摘いただきたいです。拙い文章でしたが、御覧いただきましてありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0