データベース設計入門#2 正規化|無駄のないテーブル設計とは?【日本一わかりやすくDB正規化を解説します】

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

Summary

TLDRこのビデオスクリプトでは、データベースの正規化について解説しています。正規化とは、データの繰り返しをなくすことを意味し、データベース設計の基本的な考え方です。スクリプトでは、購入履歴テーブルの例を使って、横方向の繰り返しをなくし、データを縦に並べる正規化のステップを説明しています。さらに、縦方向の繰り返しをなくすために、1対nの関係を持つテーブルにデータを切り出す方法も紹介されています。学術的な用語に煩わされる代わりに、シンプルに2つのステップを覚えることで、データベースの正規化を理解し、実践することができると示しています。

Takeaways

  • 📘 データベースの正規化とは、データの繰り返しをなくすことを意味します。
  • 🎓 このビデオは、プログラマー養成講座シリーズの一部として、データベース設計の基礎を解説しています。
  • 🔍 正規化の目的は、データの重複を減らし、データの整合性と管理の効率性を高めることにあります。
  • 👉 正規化の基本手順は、横方向の繰り返しをなくし、縦方向の繰り返しをなくすことです。
  • 💼 実際のシステムデータベース設計では、専門用語を熟知する必要はなく、シンプルに理解することが大切です。
  • 🛍️ 購入履歴テーブルの例を使って、横方向の繰り返しをなくす正規化の過程を説明しています。
  • 📊 縦方向の繰り返しをなくすために、1対nの関係を持つデータを別テーブルに切り出す方法が紹介されています。
  • 🔑 注文番号をキーにして、購入履歴テーブルと紐付けることで、データの整合性を保ちます。
  • 📝 正規化の過程で、ユーザー情報や商品情報はそれぞれ独立したテーブルに移動し、1対nの関係を形成します。
  • 🔄 第一正規形、第二正規形、第三正規形までのレベルに応じて、繰り返しをなくす範囲が広がることを示します。
  • 📚 学術的な分類ではなく、実務レベルで必要なのは縦横の繰り返しをなくすシンプルな2ステップです。

Q & A

  • データベースの正規化とは何ですか?

    -データベースの正規化とは、データの繰り返しをなくすことです。これは、データの重複を避け、データの整合性と効率を高めることを目的としています。

  • なぜデータベース設計で正規化が重要なのですか?

    -正規化はデータの重複を減らし、データの整合性を保ち、データベースのメンテナンスを容易にします。また、データの更新や取り扱いにおいても効率的です。

  • 正規化のステップを教えてください。

    -正規化のステップは、主に横方向の繰り返しをなくすことと、縦方向の繰り返しをなくすことの2つです。

  • 横方向の繰り返しをなくす方法を教えてください。

    -横方向の繰り返しをなくすには、テーブルの行を増やして、繰り返すデータを縦に並べ替えます。

  • 縦方向の繰り返しをなくす方法は何ですか?

    -縦方向の繰り返しをなくすには、1対nの関係にあるデータを別のテーブルに切り出し、主キーを使って関連付けます。

  • 正規化の過程で使われる「1対nの関係」とは何を指しますか?

    -「1対nの関係」とは、1つのレコードが複数のレコードに関連する関係を指します。例えば、1つのユーザーが複数の注文を持つ場合です。

  • データベース設計における「正規化」の利点は何ですか?

    -正規化はデータの重複を減らし、データの整合性を保ち、更新や追加のコストを削減することができます。

  • このビデオではなぜ「see 従属」や「完全従属」などの専門用語を避けるよう言及していますか?

    -専門用語は難解で不必要に複雑に感じるため、このビデオではより分かりやすくシンプルに説明することを目的としています。

  • 第一正規形、第二正規形、第三正規形の違いは何ですか?

    -第一正規形は基本的な正規化のステップで、重複をなくすものです。第二正規形では、1対多の関係を分割し、第三正規形では、転置依存を解決するために更に分割します。

  • このビデオで紹介されたデータベース設計の手法は実務でどの程度役立つでしょうか?

    -ビデオで紹介された手法は、実務でも広く適用されており、データベース設計の基礎となる重要な概念です。

  • このビデオではなぜ「縦横の繰り返しをなくす」というシンプルな手順を強調していますか?

    -複雑な専門用語や概念ではなく、分かりやすいシンプルな手順を紹介することで、より多くの人々にデータベース設計の基礎を理解しやすくすることを目的としています。

Outlines

00:00

📚 データベースの正規化とは

この段落では、データベース設計における正規化の概念が紹介されています。正規化とは、データの繰り返しをなくすことを意味し、データベースの効率性と整合性を高めるために重要なステップです。例えば、商品の単価が繰り返される購入履歴テーブルを改善し、商品テーブルに単価情報を保管するようにすることで、データの重複を避けることができます。この段落では、正規化の基本的な手順と、それがシステムのデータ構造に与える影響について解説しています。

05:03

🔍 正規化のステップとその重要性

第二段落では、正規化を実行する具体的な手順が説明されています。正規化は、横方向の繰り返しをなくすことと、縦方向の繰り返しをなくすことの2つのステップから成り立ちます。横方向の繰り返しは、データが行方向に繰り返されている場合に、データを整理し、テーブルに分割することで解決できます。縦方向の繰り返しは、1対nの関係にあるデータを別々のテーブルに移動させることで解決します。この段落では、これらのステップを通じてデータ構造を改善し、データベースの正規化を進める方法について詳しく説明しています。また、正規化の学術的な分類は実務ではあまり重要でなく、シンプルなアプローチで繰り返しを排除することができると強調しています。

Mindmap

Keywords

💡正規化

正規化とは、データベース設計においてデータを整理し、重複を排除することでデータの整合性と効率を高めるプロセスです。このビデオでは、正規化がデータの繰り返しをなくすことに関連しています。例えば、商品の単価が購入履歴テーブルで繰り返されるのを避けるために、商品テーブルに単価情報を保管するように設計する必要があると説明されています。

💡データベース設計

データベース設計とは、データベースの構造やデータの保存方法を計画し、組織化するプロセスです。ビデオでは、正規化がデータベース設計の重要な概念として取り上げられており、データの重複を避け、効率的なデータ管理を実現するための方法として紹介されています。

💡重複排除

重複排除は、同じ情報を複数回繰り返さないようにデータベースを設計するプロセスです。ビデオでは、購入履歴テーブルで商品名や単価が繰り返されていないことを例に、重複排除の重要性を強調しています。

💡テーブル

テーブルは、データベースの主要な構成要素で、関連するデータを整理し保存する場所です。ビデオでは、購入履歴テーブルや商品テーブルなど、テーブルを分割してデータの繰り返しをなくす正規化の過程を説明しています。

💡1対nの関係

1対nの関係は、データベース設計において一つのレコードが複数の関連レコードを持つ関係を指します。ビデオでは、注文と商品の関係を例に、1つの注文が複数の商品に関連づけられる1対nの関係を説明しています。

💡繰り返し

繰り返しは、同じデータが複数回テーブルに現れることを指します。ビデオでは、繰り返しをなくすことが正規化の目的であるとされており、注文テーブルで商品情報が繰り返されている例が使用されています。

💡データの整合性

データの整合性とは、データベース内のデータが正確で一貫性がある状態です。ビデオでは、正規化がデータの重複を避け、データの整合性を高める方法として紹介されています。

💡正規化のステップ

正規化のステップとは、データベースを正規化するために従う一連のプロセスです。ビデオでは、横方向の繰り返しをなくし、縦方向の繰り返しをなくすことで正規化を進めるステップを説明しています。

💡第一正規形

第一正規形は、データベースの正規化レベルの一つで、各属性が原子値を持ち、重複グループが存在しない状態です。ビデオでは、第一正規形が繰り返しをなくすために必要なレベルであると説明しています。

💡第二正規形

第二正規形は、第一正規形を満たし、すべての非主キー属性が主キーに完全に機能的に依存している状態です。ビデオでは、第二正規形が縦方向の繰り返しをなくすために必要なレベルであると述べています。

💡第三正規形

第三正規形は、第二正規形を満たし、主キー以外の属性同士が依存関係にあることがない状態です。ビデオでは、第三正規形がさらにデータの繰り返しをなくすために重要なレベルであると示しています。

Highlights

突然ですがみなさんこのテーブルをきれいに設計するとどうなるかわかりますか。

データベースには正規化という考え方があるからです。

データベース設計講座第2回目の今回は、データベースの正規化について解説します。

正規化とはデータの繰り返しをなくすことです。

商品テーブルで別館にすることで、商品の単価を正規化します。

正規化を行うには正しい手順を踏む必要があります。

正規化のやり方を難しく説明すると、第1正規形、第2正規形、第3正規形などがあります。

正規化の基本は横方向の繰り返しをなくすことと縦方向の繰り返しをなくすことです。

購入履歴テーブルの例を見て、正規化の前と後の比較をします。

注文番号1番のデータが縦に3つ並べて、商品1個目から商品3個目と並べ替えます。

注文番号、注文日、ユーザー名などの縦方向の繰り返しをなくすために、別のテーブルに切り出します。

購入履歴明細テーブルと購入履歴テーブルを紐付けることで、縦方向の繰り返しをなくします。

ユーザー情報の縦方向の繰り返しをなくすために、ユーザーテーブルに切り出しを行います。

商品情報の縦方向の繰り返しも正規化し、商品テーブルに切り出します。

第1正規形、第2正規形、第3正規形の違いは、縦方向の繰り返しを別テーブルに切り出し方の違いです。

正規化の手順はシンプルに、横方向の繰り返しと縦方向の繰り返しをなくすことです。

正規化の学術的な分類は実務レベルでは重要ではありません。

正規化の方法は、横方向の繰り返しをなくし、縦方向の繰り返しを1対nの関係のテーブルに切り出すことで解決します。

この動画が役に立ったという方は、高評価のグッドボタンやSNSへの共有をお願いします。

Transcripts

play00:00

するものです

play00:01

突然ですがみなさんこのテーブルをきれい

play00:03

に設計するとどうなるかわかりますか

play00:06

正解はこうなりますなぜかというと

play00:08

データベースには正規化という考え方が

play00:11

あるからです

play00:12

データベース設計講座第2回目の今回は

play00:15

そんなデータベースの正規化について解説

play00:18

しますなおこの動画は未経験から年収

play00:20

1000万円を目指すプログラマー養成

play00:22

講座シリーズとしてお届けしていますので

play00:24

ぜひ他の動画も覗いてみてください友達や

play00:26

同僚 sns への共有もお願いします

play00:30

正規化とはデータの繰り返しをなくすこと

play00:33

です例えばこちらの購入履歴テーブルを見

play00:36

てみると商品シーは単価10円という情報

play00:40

が繰り返し登場しますですが商品の単価は

play00:43

誰が購入しても同じ単価なのでここに情報

play00:47

を持たせるのではなく商品テーブルで別館

play00:50

にした方がよい設計になります

play00:52

このようにデータの繰り返しをなくすこと

play00:55

を正規化といいます

play00:56

正規化を行うには正しい手順を踏む必要が

play00:59

ありますのでここからはそれを見ていき

play01:01

ましょうあなお今回はこの生地を使います

play01:04

url は概要欄に貼っておきます

play01:08

正規化のやり方を難しく

play01:10

説明するとこんな感じになります第1世紀

play01:13

境内に整形とこんな感じの手順で正規化を

play01:16

進めていきます

play01:18

そして see 従属や完全従属といった

play01:21

なぞの言葉も登場します

play01:23

ドラゴンボールでこんな敵が出てきたら

play01:25

ワクワクするところですがはっきり言って

play01:27

これらの言葉は無駄に難しいだけなので

play01:30

覚える必要はありませんやった実際に

play01:34

私自身数億円規模のシステムの

play01:37

データベース設計など数々の設計を行って

play01:39

きましたがこんな言葉は知りませんですの

play01:42

で皆さんもっと分かりやすくシンプルに

play01:45

これだけ覚えてください

play01:47

正規化のやり方は横方向の繰り返しを

play01:51

なくす

play01:52

縦方向の繰り返しをなくすこの2つだけ

play01:55

やれば ok です

play01:57

それでは実際にこの2ステップで正規化を

play02:00

やるとどうなるかを見ていきましょう

play02:02

ブーン

play02:05

まずは正規化する前の購入テーブルが

play02:07

こちらです

play02:08

この注文番号1番のデータを見てみると1

play02:12

回の買い物で3つの商品を購入したよう

play02:15

です

play02:16

この青色の項目の部分に注目しながら見て

play02:19

みると商品名単価数量これで1商品消費

play02:25

有名単価数量これで商品2つ目

play02:29

商品名単価数量これで3つ目の商品こんな

play02:32

感じで横方向に商品のデータが繰り返して

play02:35

います

play02:36

これは6方向に繰り返すのではなくて

play02:39

こんな感じで果て方向にデータが繰り返す

play02:42

ように修正をしましょう注文番号1番の

play02:45

データが縦に3つ並んでいて商品1個目

play02:49

商品3個目商品3個目とこのように縦に

play02:52

データが並ぶようにデータを整理します

play02:54

これで横方向の繰り返しをなくすことが

play02:57

できました

play02:58

[音楽]

play03:00

さて横方向の繰り返しを亡くしましたが

play03:03

今度は縦に情報が繰り返していますどの

play03:06

項目が縦に繰り返しているかと言うとこの

play03:09

項目がグレーになっている部分です注文

play03:12

番号注文日ユーザー名住所

play03:16

送料区分

play03:17

合計金額この部分のデータは加点繰り返し

play03:21

が発生しています

play03:23

例えば注文番号1番のデータは1回で3つ

play03:26

の商品を購入したので産業のデータができ

play03:30

ていますと頃はこの産業のデータは

play03:32

ほとんど同じようなデータが縦に繰り返し

play03:35

になっています違うのはこの青色の部分の

play03:39

商品名とを単価と数量

play03:42

この情報だけが違いますですのでこの縦

play03:46

方向の繰り返しをなくすためには

play03:48

この青色の部分の情報だけを別のテーブル

play03:52

に切り出します

play03:54

するとこんな感じになります

play03:56

先ほどの青色の部分はこの購入履歴明細

play03:59

テーブルとして切り出しました

play04:02

そしてこの注文番号をキーにして購入履歴

play04:05

テーブルと紐付くようになっています

play04:08

このように縦方向の繰り返しをなくすため

play04:11

には

play04:12

一致たい n の関係のテーブルに

play04:14

切り出しを行います

play04:16

さてこの2つのテーブルを見てみるとまだ

play04:19

縦方向の繰り返しがたくさん隠れています

play04:22

皆さんは見つけることができるでしょうか

play04:25

縦にデータを見て繰り返しを見つけてみて

play04:28

ください一つ目の正解はこの青色の部分

play04:31

です

play04:32

ユーザーの情報が糧に繰り返していますの

play04:35

でこれは正規化しましょう

play04:37

先ほど説明しましたが縦に繰り返している

play04:40

情報正規化するにはどうしたらよかった

play04:43

でしょうが

play04:44

そうです縦方向の繰り返しをなくすには

play04:47

一致たい n の関係のテーブルに

play04:49

切り出しましょう

play04:51

この青色の部分は users テーブル

play04:53

に切り出しを行いましょう

play04:55

そしてもうひとつこの赤色の部分を見て

play04:58

ください

play04:59

商品の情報も縦に繰り返してますのでこの

play05:03

部分も同じように正規化します

play05:05

つまり商品テーブルとして切り出し

play05:08

ましょう

play05:09

その結果こんな感じのテーブル構成になり

play05:11

ます

play05:12

ユーザーの情報はユーザーテーブルに

play05:14

切り出しましたのでこんな感じで1対 n

play05:17

の関係になっていますそして商品の情報も

play05:20

商品テーブルに切り出しましたのでここも

play05:23

1対 n の関係にこんな感じになってい

play05:25

ます

play05:28

さてこの記事を見ていくと第一正規化とし

play05:31

てよこの繰り返しを亡くしています

play05:34

そして第二正規形としてたての繰り返しを

play05:37

亡くしていますそして第3正規形として

play05:41

送料区分のこの部分も縦に繰り返している

play05:44

のでこの部分も別テーブルに切り出しを

play05:47

行っています

play05:48

ここで疑問に思うのは第二正規形と第3

play05:52

正規形

play05:53

どちらも縦の繰り返しを別テーブルに

play05:55

切り出しただけなのに何が違うのという点

play05:58

です

play05:59

その答えは see 従属関係にあるか

play06:02

どうかの違いです

play06:04

ですがそんな学術的な分類なんかはどうで

play06:07

もよくて実務レベルでは縦横の繰り返しを

play06:11

ナックスシンプルにこの2ステップだけ

play06:13

です

play06:14

なので第二正規化と大産正規化の違いは何

play06:17

なのか

play06:18

スイージ風俗関係とは何なのかそこを無駄

play06:22

に突き詰めようとすると泥沼にはまるので

play06:24

やっぱり覚えなくて ok ですやった

play06:27

ここまでをまとめると正規化の手順として

play06:29

シンプルにこれだけ覚えましょう力方向の

play06:33

繰り返しは縦にデータを並べることで解決

play06:36

します

play06:37

縦方向の繰り返しは1対 n の関係の

play06:40

テーブルに切り出すことで解決します

play06:43

正規化はこれだけ覚えたら ok です

play06:46

忘れたらまたこの youtube を見

play06:48

てくださいそのためにもチャンネル登録を

play06:50

お願いしますはいこのチャンネルでは

play06:53

こんな感じでプログラマー情報をお届けし

play06:55

ていますので他の動画も覗いて見ていく

play06:57

ダサいまたこの動画が少しでも役に立った

play07:00

という方は高評価のグッドボタンや sns

play07:02

などへの共有をお願いします

play07:04

感想などのコメントもお待ちしてます

play07:07

[音楽]

Rate This

5.0 / 5 (0 votes)

Related Tags
データベース正規化設計講座プログラマー初心者年収目標情報整理テーブル管理データ構造繰り返し教育
Do you need a summary in English?