0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLの基礎について学ぶ#09

Last updated at Posted at 2021-01-20

 今回はSQLにおける複数テーブルの結合について説明していきたいと思います!!複数テーブルの結合を用いることで、複数テーブルに分けて格納したデータを同時に取り出すことができ、データベースの力を最大化することができます。

過去の関連投稿

SQLの基礎について学ぶ#01
SQLの基礎について学ぶ#02
SQLの基礎について学ぶ#03
SQLの基礎について学ぶ#04
SQLの基礎について学ぶ#05
SQLの基礎について学ぶ#06
SQLの基礎について学ぶ#07
SQLの基礎について学ぶ#08

1. 複数テーブルへのデータの格納

accountテーブル

date(日付) name(項目名) memo(メモ) price(金額)
2020-12-03  食費   カフェでランチ 800
2021-01-03  交通費   地下鉄を使用 600
2021-05-22  食費   レストランで夕食 1000
2021-03-14  日用品   トイレットペーパー、洗剤 1400
このテーブルを以下のように、複数テーブル(今回は2つのテーブル)に分けます!!
            ⬇⬇⬇
            ⬇⬇⬇

① new_accountテーブル

date(日付) name_id(項目名ID) memo(メモ) price(金額)
2020-12-03  1   カフェでランチ 800
2021-01-03  2  地下鉄を使用 600
2021-05-22  1   レストランで夕食 1000
2021-03-14  3   トイレットペーパー、洗剤 1400

② nameテーブル

id name(項目名) remarks(項目名の備考)
1  食費   食事代(交際費に関わる食事代は除く)
2  交通費   電車、バス、飛行機等
3  日用品   日常で使用する消耗品

 new_accountテーブルでは項目名がなくなり、代わりにname_id(項目名ID)が付与されました。これが何を意味するかというと、分割して新しくできたnameテーブルidに対応します。つまり、項目名IDには、nameテーブルid列のいずれかが格納されており、「項目名は別テーブルであるnameテーブルを参照して下さい」ということになります。

 new_accountテーブルで、nameテーブルidを指定することによって、nameテーブルのどの行を指しているのか明確に指定することができます。

今回のnew_accountテーブルnameテーブルのように、ある2つのテーブルの行に情報として関連性がある場合、その関連性をリレーションシップと呼びます。またnew_accountテーブルname_idのように、他のテーブルの関連する行を指定するための値を格納することで、リレーションシップの役割を担う列のことを外部キーと呼びます。

2. 複数テーブルに分けるメリット

 accountテーブルから複数テーブルであるnew_accountテーブルで、nameテーブルに分けたことで、人間にとっては見づらく、不便になったように感じます。
 しかし、コンピューターにとっては、このように複数テーブルに分割されていたほうが、データを安全確実高速にデータを取り扱えるというメリットがあります。
 また、内容に重複が多く分かりにくい表になってしまうことを防ぐメリットもあります。例えば、nameテーブルのremarksでは項目名に対しての備考が記載されています。もし、new_accoutテーブルnameテーブルを1つにまとめると以下のようになります。

date(日付) name(項目名) remarks(項目名の備考) memo(メモ) price(金額)
2020-12-03  食費   食事代(交際費に関わる食事代は除く) カフェでランチ 800
2021-01-03  交通費   電車、バス、飛行機等 地下鉄を使用 600
2021-05-22  食費   食事代(交際費に関わる食事代は除く) レストランで夕食 1000
2021-03-14  日用品   日常で使用する消耗品 トイレットペーパー、洗剤 1400

 このように、項目名が食費である行の備考が重複してしまいます。この表では、そこまで気にならないかもしれませんが。膨大なデータになると同じ備考が繰り返し記載されることになり、見づらい表になってしまします。1つのテーブルに様々な情報を盛り込むことは、データ管理を難しくしてしまいます。

3. リレーショナルデータベース

 複数テーブルを利用するこにはメリットがありますが、このままでは、人間が見づらいテーブルの構成になってしまいます。これを改善するために、私達が普段利用する多くのデータベース製品には、管理に適した構成の複数のテーブルを結合して、人間が理解しやすい構成の表を得る機能を有しています。このようなデータベースを特にリレーショナルデータベースと呼び、その機能の中枢を担うDBMSをRDBMSと呼びます。

3. まとめ

① ある2つのテーブルの行に情報として関連性がある場合、その関連性をリレーションシップと呼ぶ。
② リレーションシップの役割を担う列のことを外部キーと呼ぶ。
③ データを複数テーブルに分けることで、データを安全確実高速に取り扱うことができる。
④ RDBは、データを複数テーブル安全確実に管理する。
⑤ RDBは、必要に応じてデータを結合して、人間が理解できる表を作成する。

 今回は以上になります。次回はどのようにデータを結合するのかを学習していきたいと思います。また何か間違い等ありましたら、コメントお願いします。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?