データベース設計入門#2 正規化|無駄のないテーブル設計とは?【日本一わかりやすくDB正規化を解説します】
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
📚 データベースの正規化とは
この段落では、データベース設計における正規化の概念が紹介されています。正規化とは、データの繰り返しをなくすことを意味し、データベースの効率性と整合性を高めるために重要なステップです。例えば、商品の単価が繰り返される購入履歴テーブルを改善し、商品テーブルに単価情報を保管するようにすることで、データの重複を避けることができます。この段落では、正規化の基本的な手順と、それがシステムのデータ構造に与える影響について解説しています。
🔍 正規化のステップとその重要性
第二段落では、正規化を実行する具体的な手順が説明されています。正規化は、横方向の繰り返しをなくすことと、縦方向の繰り返しをなくすことの2つのステップから成り立ちます。横方向の繰り返しは、データが行方向に繰り返されている場合に、データを整理し、テーブルに分割することで解決できます。縦方向の繰り返しは、1対nの関係にあるデータを別々のテーブルに移動させることで解決します。この段落では、これらのステップを通じてデータ構造を改善し、データベースの正規化を進める方法について詳しく説明しています。また、正規化の学術的な分類は実務ではあまり重要でなく、シンプルなアプローチで繰り返しを排除することができると強調しています。
Mindmap
Keywords
💡正規化
💡データベース設計
💡重複排除
💡テーブル
💡1対nの関係
💡繰り返し
💡データの整合性
💡正規化のステップ
💡第一正規形
💡第二正規形
💡第三正規形
Highlights
突然ですがみなさんこのテーブルをきれいに設計するとどうなるかわかりますか。
データベースには正規化という考え方があるからです。
データベース設計講座第2回目の今回は、データベースの正規化について解説します。
正規化とはデータの繰り返しをなくすことです。
商品テーブルで別館にすることで、商品の単価を正規化します。
正規化を行うには正しい手順を踏む必要があります。
正規化のやり方を難しく説明すると、第1正規形、第2正規形、第3正規形などがあります。
正規化の基本は横方向の繰り返しをなくすことと縦方向の繰り返しをなくすことです。
購入履歴テーブルの例を見て、正規化の前と後の比較をします。
注文番号1番のデータが縦に3つ並べて、商品1個目から商品3個目と並べ替えます。
注文番号、注文日、ユーザー名などの縦方向の繰り返しをなくすために、別のテーブルに切り出します。
購入履歴明細テーブルと購入履歴テーブルを紐付けることで、縦方向の繰り返しをなくします。
ユーザー情報の縦方向の繰り返しをなくすために、ユーザーテーブルに切り出しを行います。
商品情報の縦方向の繰り返しも正規化し、商品テーブルに切り出します。
第1正規形、第2正規形、第3正規形の違いは、縦方向の繰り返しを別テーブルに切り出し方の違いです。
正規化の手順はシンプルに、横方向の繰り返しと縦方向の繰り返しをなくすことです。
正規化の学術的な分類は実務レベルでは重要ではありません。
正規化の方法は、横方向の繰り返しをなくし、縦方向の繰り返しを1対nの関係のテーブルに切り出すことで解決します。
この動画が役に立ったという方は、高評価のグッドボタンやSNSへの共有をお願いします。
Transcripts
するものです
突然ですがみなさんこのテーブルをきれい
に設計するとどうなるかわかりますか
正解はこうなりますなぜかというと
データベースには正規化という考え方が
あるからです
データベース設計講座第2回目の今回は
そんなデータベースの正規化について解説
しますなおこの動画は未経験から年収
1000万円を目指すプログラマー養成
講座シリーズとしてお届けしていますので
ぜひ他の動画も覗いてみてください友達や
同僚 sns への共有もお願いします
正規化とはデータの繰り返しをなくすこと
です例えばこちらの購入履歴テーブルを見
てみると商品シーは単価10円という情報
が繰り返し登場しますですが商品の単価は
誰が購入しても同じ単価なのでここに情報
を持たせるのではなく商品テーブルで別館
にした方がよい設計になります
このようにデータの繰り返しをなくすこと
を正規化といいます
正規化を行うには正しい手順を踏む必要が
ありますのでここからはそれを見ていき
ましょうあなお今回はこの生地を使います
url は概要欄に貼っておきます
正規化のやり方を難しく
説明するとこんな感じになります第1世紀
境内に整形とこんな感じの手順で正規化を
進めていきます
そして see 従属や完全従属といった
なぞの言葉も登場します
ドラゴンボールでこんな敵が出てきたら
ワクワクするところですがはっきり言って
これらの言葉は無駄に難しいだけなので
覚える必要はありませんやった実際に
私自身数億円規模のシステムの
データベース設計など数々の設計を行って
きましたがこんな言葉は知りませんですの
で皆さんもっと分かりやすくシンプルに
これだけ覚えてください
正規化のやり方は横方向の繰り返しを
なくす
縦方向の繰り返しをなくすこの2つだけ
やれば ok です
それでは実際にこの2ステップで正規化を
やるとどうなるかを見ていきましょう
ブーン
まずは正規化する前の購入テーブルが
こちらです
この注文番号1番のデータを見てみると1
回の買い物で3つの商品を購入したよう
です
この青色の項目の部分に注目しながら見て
みると商品名単価数量これで1商品消費
有名単価数量これで商品2つ目
商品名単価数量これで3つ目の商品こんな
感じで横方向に商品のデータが繰り返して
います
これは6方向に繰り返すのではなくて
こんな感じで果て方向にデータが繰り返す
ように修正をしましょう注文番号1番の
データが縦に3つ並んでいて商品1個目
商品3個目商品3個目とこのように縦に
データが並ぶようにデータを整理します
これで横方向の繰り返しをなくすことが
できました
[音楽]
さて横方向の繰り返しを亡くしましたが
今度は縦に情報が繰り返していますどの
項目が縦に繰り返しているかと言うとこの
項目がグレーになっている部分です注文
番号注文日ユーザー名住所
送料区分
合計金額この部分のデータは加点繰り返し
が発生しています
例えば注文番号1番のデータは1回で3つ
の商品を購入したので産業のデータができ
ていますと頃はこの産業のデータは
ほとんど同じようなデータが縦に繰り返し
になっています違うのはこの青色の部分の
商品名とを単価と数量
この情報だけが違いますですのでこの縦
方向の繰り返しをなくすためには
この青色の部分の情報だけを別のテーブル
に切り出します
するとこんな感じになります
先ほどの青色の部分はこの購入履歴明細
テーブルとして切り出しました
そしてこの注文番号をキーにして購入履歴
テーブルと紐付くようになっています
このように縦方向の繰り返しをなくすため
には
一致たい n の関係のテーブルに
切り出しを行います
さてこの2つのテーブルを見てみるとまだ
縦方向の繰り返しがたくさん隠れています
皆さんは見つけることができるでしょうか
縦にデータを見て繰り返しを見つけてみて
ください一つ目の正解はこの青色の部分
です
ユーザーの情報が糧に繰り返していますの
でこれは正規化しましょう
先ほど説明しましたが縦に繰り返している
情報正規化するにはどうしたらよかった
でしょうが
そうです縦方向の繰り返しをなくすには
一致たい n の関係のテーブルに
切り出しましょう
この青色の部分は users テーブル
に切り出しを行いましょう
そしてもうひとつこの赤色の部分を見て
ください
商品の情報も縦に繰り返してますのでこの
部分も同じように正規化します
つまり商品テーブルとして切り出し
ましょう
その結果こんな感じのテーブル構成になり
ます
ユーザーの情報はユーザーテーブルに
切り出しましたのでこんな感じで1対 n
の関係になっていますそして商品の情報も
商品テーブルに切り出しましたのでここも
1対 n の関係にこんな感じになってい
ます
さてこの記事を見ていくと第一正規化とし
てよこの繰り返しを亡くしています
そして第二正規形としてたての繰り返しを
亡くしていますそして第3正規形として
送料区分のこの部分も縦に繰り返している
のでこの部分も別テーブルに切り出しを
行っています
ここで疑問に思うのは第二正規形と第3
正規形
どちらも縦の繰り返しを別テーブルに
切り出しただけなのに何が違うのという点
です
その答えは see 従属関係にあるか
どうかの違いです
ですがそんな学術的な分類なんかはどうで
もよくて実務レベルでは縦横の繰り返しを
ナックスシンプルにこの2ステップだけ
です
なので第二正規化と大産正規化の違いは何
なのか
スイージ風俗関係とは何なのかそこを無駄
に突き詰めようとすると泥沼にはまるので
やっぱり覚えなくて ok ですやった
ここまでをまとめると正規化の手順として
シンプルにこれだけ覚えましょう力方向の
繰り返しは縦にデータを並べることで解決
します
縦方向の繰り返しは1対 n の関係の
テーブルに切り出すことで解決します
正規化はこれだけ覚えたら ok です
忘れたらまたこの youtube を見
てくださいそのためにもチャンネル登録を
お願いしますはいこのチャンネルでは
こんな感じでプログラマー情報をお届けし
ていますので他の動画も覗いて見ていく
ダサいまたこの動画が少しでも役に立った
という方は高評価のグッドボタンや sns
などへの共有をお願いします
感想などのコメントもお待ちしてます
[音楽]
5.0 / 5 (0 votes)