データベース設計入門#1 リレーションとER図【11分でマスター!DB設計】

せお丸のプログラマー養成講座【サイバーフリークス株式会社】
15 May 202011:21

Summary

TLDRこのビデオスクリプトでは、データベース設計に関するシリーズの第1回として、リレーションとER図について解説しています。リレーションは1対n、n対n、1対1の3種類があり、ER図はこれらの関係を図式で表現する方法を示します。また、データベース設計におけるアンチパターンを避けるための中間テーブルの重要性や、ツールの使い方についても触れています。シリーズの次回ではデータベースの正規化について解説される予定です。

Takeaways

  • 📚 このシリーズはデータベース設計に関する4回に分けた講座で、第1回はリレーションとER図についての解説です。
  • 🔗 リレーションはテーブル同士の関係を表し、主なものは1対n、n対n、1対1の3種類があります。
  • 🏢 1対nの例として、一つの会社に複数の社員が存在するという関係が挙げられます。
  • 🤝 n対nの例は、社員が複数のサークルに所属できるという双方向の関係です。
  • 🔑 1対1の関係は、社員とその個人情報テーブルの関係のように、一対一の対応があることを表します。
  • 💡 n対nの関係では、中間テーブルを用いてリレーションを表現することが推奨されます。
  • 📈 ER図はリレーションを図式化したもので、丸、縦棒、鳥の足の3つの記号が使われます。
  • 🚫 ゼロの存在有無はER図設計では重要ではありませんが、設計の柔軟性には影響があります。
  • 🛠️ データベース設計の現場では、専門用語は使われず、テーブルや属性などの一般的な言葉が用いられます。
  • 🛑 SQLアンチパターンは初学者がよく犯すテーブル設計の誤りを指し、改善策が提供されています。
  • 🔧 中間テーブルはn対nのリレーションを表現する際に重要で、余計なカラムを持たせるべきではありません。
  • 🔗 ER図作成ツールとしては、新しく設計する場合は特定のツール、既存データベースからER図を作成する場合はMySQL Workbenchが推奨されます。

Q & A

  • データベース設計のシリーズは何回に分かれていますか?

    -データベース設計のシリーズは全部で4回に分かれています。

  • relationとは何を表すものですか?

    -relationとはテーブル同士の関係を表すものです。

  • relationにはどのような種類がありますか?

    -relationには1対n、n対n、1対1の3種類があります。

  • 1対nの関係はどのような状況で用いられますか?

    -1対nの関係は、例えば1つの会社に複数人の社員が存在する場合に用いられます。

  • n対nの関係が成立するためにはどのような条件が必要ですか?

    -n対nの関係が成立するためには、片方のテーブルの1レコードが他方のテーブルの複数のレコードに関連する必要があります。

  • ER図とは何ですか?

    -ER図は、エンティティ間の関係を図式化したものです。

  • ER図でリレーションを表すためにはどのような記号が使われますか?

    -ER図でリレーションを表すためには、丸記号(0)、縦棒(1)、鳥の足(n)の3つの記号が使われます。

  • n対nのリレーションを表す際に中間テーブルを使う理由は何ですか?

    -n対nのリレーションを表す際に中間テーブルを使うことで、複数の関係を柔軟に表現できます。

  • データベース設計において、アンチパターンとは何を指しますか?

    -アンチパターンとは、データベース設計においてよくある悪い設計のパターンを指します。

  • n対nのテーブル設計でよくあるアンチパターンとは何ですか?

    -n対nのテーブル設計でよくあるアンチパターンは、直接外部キーを互いに持たせてしまうことで、拡張性が失われる設計です。

  • データベース設計において、中間テーブルを使わないでn対nの関係を表現しようとするとどのような問題が発生しますか?

    -中間テーブルを使わないでn対nの関係を表現すると、拡張性が低下し、無駄な絡みや制約が発生する可能性があります。

  • データベース設計の際に、どのようなツールが推奨されますか?

    -データベース設計の際には、新しくER図を書く場合は特定のツールがおすすめで、既存のデータベースに対してER図を作りたい場合はMySQL Workbenchなどのツールが推奨されます。

  • SQLアンチパターンの本では何を学ぶことができますか?

    -SQLアンチパターンの本では、データベース設計における悪い設計パターン25種類を学ぶことができます。

Outlines

00:00

📚 データベース設計の基礎知識

この段落では、データベース設計に関するシリーズの紹介とrelation(リレーション)とER図(エンティティ・リレーションシップ図)の解説がされています。シリーズは4回に分かれており、特に第1回ではリレーションシップの3種類(1対N、N対N、1対1)について説明されています。また、ER図の記法やリレーションシップを表す際の注意点、例えば0以上を示す際のゼロの記法などについても触れられています。

05:01

🔍 ER図の種類とデータベース設計のポイント

第2段落ではER図の種類、特にIDEF1X(アイデフワンエックス)とIDEF1(アイデフワン)の違いについて説明しています。実際のデータベース設計におけるマスターとトランザクションの概念、そしてER図を作成するツールについても触れられています。また、データベース設計におけるアンチパターン(悪い設計例)を避けるための中間テーブルの重要性についても解説されています。

10:02

🛠️ SQLアンチパターンとデータベース設計のベストプラクティス

最後の段落では、SQLアンチパターンという書籍を紹介し、データベース設計における悪い例とそれに対する解決策について解説しています。また、データベース設計のベストプラクティスとして、中間テーブルのシンプルさを強調しています。最後に、データベース設計に関するシリーズの次回予告と、チャンネル登録や評価、コメント、シェアの呼びかけがされています。

Mindmap

Keywords

💡データベース設計

データベース設計とは、データベースの構造や内容を計画することです。このビデオでは、リレーションシップやER図を通じてデータベースの設計方法について解説しています。例えば、社員とサークルの関係をどのように表すか、といった具体的な設計問題が取り上げられています。

💡リレーションシップ

リレーションシップは、データベースのテーブル同士の関係を表すものです。このビデオでは、1対多、多対多、1対1の3つの基本的なリレーションシップタイプについて説明しています。リレーションシップはデータの整合性や関連性を確保するための重要な要素であり、データベース設計の核心です。

💡ER図

ER図は、エンティティ・リレーションシップ図の略称で、データベースの構造を視覚化するための図形表現手法です。このビデオでは、ER図を使ってリレーションシップを図示し、データベースの設計をより明確にしています。ER図は設計者がデータベースのリレーションシップを理解し、設計を共有するのに役立ちます。

💡1対多リレーションシップ

1対多リレーションシップは、1つのエンティティが複数のエンティティに関連する関係を表します。ビデオでは、会社と社員の関係を例に1対多リレーションシップを説明しており、1つの会社に複数の社員が存在できるという点に着目しています。

💡多対多リレーションシップ

多対多リレーションシップは、2つのエンティティが互いに複数のエンティティに関連する関係を表します。ビデオでは、社員とサークルの関係を例に使い、1人の社員が複数のサークルに所属できるし、1つのサークルに複数の社員が所属できるという点に焦点を当てています。

💡1対1リレーションシップ

1対1リレーションシップは、1つのエンティティが他方の1つのエンティティのみに関連する関係を表します。ビデオでは、社員とその個人情報の関係を例に1対1リレーションシップを紹介しており、1人の社員が1つの個人情報にしか関連しないという点を強調しています。

💡中間テーブル

中間テーブルは、多対多リレーションシップを管理するために使用される特殊なテーブルです。ビデオでは、社員とサークルの関係を表す際に中間テーブルを用いて、リレーションシップを適切に管理する方法を説明しています。中間テーブルは、拡張性や柔軟性を確保するために重要な役割を果たします。

💡SQLアンチパターン

SQLアンチパターンとは、データベース設計やSQLプログラミングで避けるべき悪い慣行や方法論のことを指します。ビデオでは、社員とサークルのリレーションシップを設計する際にアンチパターンとして指摘され、その改善方法も提案しています。アンチパターンを理解することは、より良いデータベース設計を達成するために重要です。

💡正規化

正規化は、データベースの設計を改善し、データの重複を減らし、整合性を高めるためのプロセスです。ビデオでは、次回のトピックとしてデータベースの正規化について説明する予定であり、データの効率的な管理と設計の改善につながる技術を探求する予定です。

💡MySQL Workbench

MySQL Workbenchは、MySQLデータベースを設計、開発、管理するための統合開発環境(IDE)です。ビデオでは、既存のデータベースからER図を自動作成することができるMySQL Workbenchの機能を紹介しており、プロジェクトに参加した際にデータベースの構造を理解するのに役立つツールとして位置付けられています。

Highlights

シリーズの第1回でrelationとER図について解説します。

relationはテーブル同士の関係を表し、1対n、n対n、1対1の3種類があります。

1対nの例として、一つの会社に複数の社員が存在する場合を説明。

n対nの関係は、社員とサークルが互いに複数所属できる場合に適用。

1対1の関係は、社員とその個人情報を持つテーブルの例として紹介。

n対nの関係では中間テーブルを使用することが重要。

ER図はリレーションを図で表したもので、0、1、nを表す記号があります。

ER図の書き方とその種類について解説、IDEやIE図の表現方法を紹介。

データベース設計において、マスター系とトランザクション系という言葉がよく出てくる。

ER図を作成するツールとしてMySQL Workbenchの紹介。

データベースのリレーション関係を把握することがプロジェクトについていくための前提。

n対nのテーブル設計で中間テーブルを挟むことが推奨される理由を説明。

アンチパターンと呼ばれる悪いテーブル設計の例とその解決策について解説。

SQLアンチパターンという本で25の悪いテーブル設計パターンを学べる。

データベース設計における正しい方法とアンチパターンの理解が重要であることを強調。

次回の動画ではデータベースの正規化について解説する旨を告知。

チャンネル登録や高評価、コメント、シェアを呼びかけ、視聴者の参加を促す。

Transcripts

play00:00

瀬尾丸です今回からはデータベースの設計

play00:03

シリーズをお届けします全部で4回くらい

play00:05

に分けてお届けしますが第1回目の今回は

play00:08

relation と er 図について

play00:10

解説しますよろしく頼むなおこの動画は未

play00:12

経験から年収1000万円目指す

play00:14

プログラマー養成講座シリーズとしてお

play00:16

届けしていますのでぜひ他の動画も覗いて

play00:18

みてください友達や同僚 sns への

play00:21

共有もお願いしますえっ

play00:23

relation とはテーブル同士の

play00:25

関係を表すもので全部で3種類あります

play00:29

1対 n n 対 n 1対1この3種類

play00:33

です

play00:33

読み方としてはこの n の部分は感じで

play00:37

多いと海底一対多

play00:40

方いたという読み方をする場合もあります

play00:43

それではこれらの意味を一つずつ見ていき

play00:46

ましょう

play00:47

まずは1対 n について解説します

play00:50

ここに会社テーブルと社員テーブルがあり

play00:53

ますひとつの会社に複数人の社員が存在し

play00:57

ますのでこのテーブル同士の関係は1対 n

play01:01

と言います

play01:02

実際に社員の数が0でも1でも2でもいい

play01:06

のでとにかく複数があり得る場合は n と

play01:10

なります次に n 対 n について解説

play01:13

します

play01:14

今度は社員テーブルとサークルテーブルが

play01:17

あって

play01:18

社員1人につき複数のサークルに所属

play01:21

できるとします

play01:23

この場合社員は複数のサークルに所属

play01:25

できる

play01:27

サークルは社員を複数抱えることができる

play01:30

のでテーブル同士の関係としては n 対

play01:33

n になります

play01:35

最後に1対1です

play01:37

社員テーブルと社員の個人情報テーブルが

play01:40

あります

play01:41

一つの社員につき1つの個人情報を持って

play01:44

いますのでこのテーブル同士の関係は1対

play01:48

1となりますはいということでベイビーの

play01:51

リレーションとはテーブル同士の関係を

play01:54

表すものでこの三種類があることが分かり

play01:57

ました

play01:58

津波にこれから重要なことを言いますが n

play02:01

対 n の場合は中間テーブルという特殊

play02:05

なテーブルを使うことになりますこの中間

play02:08

テーブルについては動画の最後の方で解説

play02:10

します

play02:11

[音楽]

play02:13

er 図とあこんな感じの書き方で

play02:16

リレーションを図で表したものです

play02:19

ちょうどわかりやすく解説しているサイト

play02:21

があったのでこちらを使いながら解説して

play02:23

いきますこのわかりやすいサイトの url

play02:26

は概要欄に貼っておきますそれでは er

play02:29

図の読み方について解説していきます er

play02:32

図ではこの3つの記号を使って

play02:35

リレーションを表します

play02:36

このマル記号は0

play02:39

縦棒は1

play02:41

鳥の足はたつまり n を表しています

play02:46

例えば1対1の関係の時はこのように表し

play02:49

ます二つのテーブルをまずは線で結びます

play02:53

そして一致対1ですので位置を表すこの

play02:57

縦棒で1対1とこのように表しています

play03:02

次に1対 n の場合を見てみましょう

play03:05

n は鳥の足で表現しますので

play03:08

1対 n を er 図で表現するとこの

play03:11

ようになります

play03:13

ちなみに n 対 n の場合はこんな

play03:15

感じでどちらも鳥の足になります

play03:19

最後にゼロという考え方も説明します

play03:22

例えばこのように社員テーブルとサークル

play03:24

テーブルがあったとします

play03:26

そしてサークルは作ったけども誰も参加し

play03:29

てくれない場合は0がありえるので0以上

play03:33

という意味で縦棒ではなくこのようにゼロ

play03:36

の記号をつけます

play03:38

しかしみなさんに覚えておいてもらいたい

play03:40

のはゼロがあり得るかどうかというのは

play03:42

設計する上ではあまり重要ではありません

play03:46

大抵の場合はこの3つのうちのどれなのか

play03:49

さえわかれば ok です

play03:51

ですので er 図を書くときにもこの

play03:53

ように曖昧な書き方をする場合が多いです

play03:57

0があり得るかどうかは考えずに

play03:59

とりあえず1対 n とこのように表し

play04:02

ます

play04:04

さてデータベースの勉強していると実際の

play04:07

現場では使わない言葉がたくさん出てき

play04:10

ます

play04:10

ですので皆さんの頭を整理するためにこれ

play04:14

は覚えてくださいこれは覚えなくても良い

play04:16

ですという言葉を紹介していきます

play04:19

引き続きこのサイトを使ってみていき

play04:21

ましょう一つは er 図という言葉は

play04:24

絶対に覚えてください次にリレーションと

play04:27

いう言葉も覚えてくださいあとは全部覚え

play04:30

なくていいです

play04:31

例えばテーブルのことを別名で

play04:33

エンティティーと言ったりするのですが

play04:35

実際の現場ではエンティティー何て呼ぶ人

play04:38

はいませんみんなテーブルと言いますです

play04:40

のでこのエンティティという言葉は覚え

play04:42

なくていいです次に絡むのことを

play04:44

アトリビュートと言いますがこれも

play04:47

アトリビュート何て呼ぶ人はいないので

play04:48

これも覚えなくていいですみんな絡むと

play04:51

いいます次にこの位置なのかゼロなのか n

play04:54

なのかといった部分をカーディナリティと

play04:57

呼びます

play04:58

これも実際にはあんまり使わないので覚え

play05:00

なくていいです

play05:01

覚えなくても良いとは言えそんなものが

play05:04

あるのかふーんぐらいな感じで一度この

play05:06

サイトを上から下まで読んでみることをお

play05:09

勧めしますでは続いて見ていくとer 図

play05:12

の種類について解説しています ie 貴方

play05:15

という先ほど見た書き方と ide なん

play05:18

ちゃら貴方と言って鳥の足ではなくこの

play05:21

ようなまるで表現する貴方もあるようです

play05:24

実際の現場ではこちらの書き方をよく目に

play05:27

します

play05:28

ですのでしたのこちらの書き方はふーん

play05:30

そんなものがあるのかぐらいな感じで覚え

play05:32

ておくと良いでしょう

play05:33

もちろんこの愛生き方とか id なん

play05:36

ちゃら貴方というのは覚えなくていいです

play05:38

後はデータベース設計をしていると

play05:40

マスターという言葉とトランザクションと

play05:42

いう言葉がよく出てきますたとえば

play05:44

アマゾンのような ec サイトの場合

play05:46

商品テーブルのような主要なテーブルの

play05:49

ことをマスター系と言いますそして購入

play05:52

履歴テーブルのような流れる系の情報を

play05:56

トランザクション系と言います実際に

play05:58

デイビー設計をしたりする上ではこれは

play06:01

マスター系だよなぁとかこれは

play06:02

トランザクション系だよなぁということは

play06:04

実際にはあまり考えないのでこれも

play06:07

あんまり意識しなくてはいうのではないか

play06:09

なと思います

play06:11

次に er 図を書くツールについて解説

play06:13

します新しく er 図を書くという場合

play06:16

はこの書くというツールがおすすめです

play06:20

またはすでに存在しているデータベースに

play06:22

対して er 図を作りたいという場合は

play06:25

この mysql

play06:26

workbench というツールがお

play06:28

薦めですこれは既存のテーブルからer 図

play06:32

を自動で作成してくれる機能がついてい

play06:34

ます

play06:35

どういう時にこれを使うのかというと

play06:37

例えば仕事の現場で途中からその

play06:40

プロジェクトに参加してもうデータベース

play06:42

は出来上がっているんだけれども er 図

play06:44

が存在しないという場合はこのツールを

play06:47

使って er 図を自動作成します

play06:49

システムにおいてデータベースというのは

play06:52

とても重要でまずはそのシステムのデータ

play06:55

ベースのリレーション関係を把握しないと

play06:57

そのプロジェクトにはついていけませんの

play06:59

でまずはプロジェクトにジョインしたら

play07:02

データベースの構造を理解するという

play07:04

ところから始めましょう

play07:06

そのベイビー構造を理解するためのツール

play07:08

がこの er 図なのです

play07:12

さてここに社員テーブルとサークル

play07:15

テーブルがあります

play07:16

この2つは n 対 n の関係です

play07:20

さてそれでは実際にテーブル設計をしてみ

play07:23

ましょう一人の社員は複数のサークルに

play07:26

所属できますそしてサークルは複数の社員

play07:30

を抱えることができますさてそのためには

play07:34

どんなカラムを追加すればよいでしょうか

play07:37

初心者がやりがちなミスとしてはこのよう

play07:40

な設計をしてしまうことです社員テーブル

play07:43

の方にサークル id 1サークル id

play07:46

ニートこのようにサークルテーブルの id

play07:50

すなわち外部キーをを出せます

play07:53

そしてサークルテーブルの方にも社員 id

play07:56

1社員 id にとこのように外部キーを

play08:00

持たせます

play08:01

これは sql アンチパターンと言って

play08:04

やってはいけないテーブル設計の悪いお

play08:08

手本です

play08:09

ではこのテーブル設計のどこが良くないの

play08:12

かというとこの設計だと2つまでしか

play08:16

サークルに所属できません

play08:18

そしてサークルがーも2人までしか社員を

play08:21

抱えることができませんですので拡張性が

play08:25

悪いという面でよくないテーブル設計に

play08:28

なりますまたサークル活動をしていない

play08:32

社員にとってはサークルからも使いません

play08:35

ので無駄な絡むということになります

play08:38

そういった面でもこの設計はよろしくあり

play08:40

ません

play08:42

ではどうするのが正解なのかというとこの

play08:45

ように中間にテーブルを挟みます

play08:48

社員 id とサークル id だけを

play08:51

持ったシンプルなテーブルです

play08:54

この設計であれば誰かがサークルに入る

play08:57

ときにこの社員サークルテーブルに1件の

play09:01

データを追加するだけで良いので社員は

play09:04

サークルにいくつでも所属できますし

play09:07

サークル側も何人でも社員を抱えることが

play09:10

できますまた無駄な絡むも発生しないので

play09:13

綺麗な体得る設計となりました

play09:16

このように n 対 n のテーブル設計

play09:19

をするときには中韓にテーブルを挟むのが

play09:22

セオリーです

play09:24

そしてこの中間のテーブルのことを中間艇

play09:27

ブルー

play09:28

または黄砂テーブルと呼びます重要なこと

play09:32

なのでもう一度言いますが n 対 n の

play09:35

テーブル設計をするときは間に中間

play09:37

テーブルを挟みましょうそして中間

play09:41

テーブルには余計なカラムを持たせない

play09:43

ようにしましょう

play09:45

中間テーブルに何かカラムを持たせるとし

play09:47

ても優先度や作成日更新日

play09:51

くらいになるかと思います

play09:53

この中間テーブルの役割としては n 対

play09:56

n のリレーションの橋渡しをすること

play09:59

ですので例えば

play10:01

サークルの活動記録とか余計な情報を中丸

play10:05

テーブルに持たせるのは設計的におかしい

play10:07

ことになってきます

play10:09

えっ

play10:10

こんな感じでデービー設計にはアンチ

play10:13

パターンと呼ばれる初心者が行ってしまい

play10:16

月な悪いお手本とそれに対する解決策の

play10:20

パターンが存在しますそのパターンを

play10:23

学べるのがこの sql アンチパターン

play10:25

という本です

play10:27

この本ではこのようなパターンを25

play10:30

パターン学ぶことができます

play10:32

人類がこれまでを科してきた悪いテーブル

play10:36

設計の悪行の数々が25パターンもこの本

play10:40

にはぎっしりと詰まっていてそれをバッサ

play10:42

バッサと斬り咲いて政界へと導いてくれる

play10:46

読みやすい内容となるています私はこれ

play10:49

まで読んできたシステム関係の本で一番

play10:51

勉強になった本なので必ず読むことをお

play10:55

勧めしますこの本のリンクは動画の概要欄

play10:58

に貼っておくのでそちらから是非読んでみ

play11:00

てくださいはいということで今回は

play11:02

relation と er 図について

play11:04

解説しました次回はデイビーの正規化に

play11:06

ついて解説しますのでチャンネル登録をお

play11:09

願いしますまたこの動画が役に立ったと

play11:11

いう方は高評価のグッドボタンやコメント

play11:14

を頂けたら嬉しくて泣きますまた sns

play11:17

や友達へのシェアもぜひ宜しくお願いし

play11:19

ますそれではまた

Rate This

5.0 / 5 (0 votes)

Related Tags
データベース設計リレーションER図シリーズ初心者向けプログラマー年薪1000万テーブル設計アンチパターンSQLツール
Do you need a summary in English?