データベース 正規 化 わかり やすしの
主キーを探す 重複しない値の主キーを探します。 「注文書ヘッダ」表で、業者名は主キーなるでしょうか? 同じ業者に何回も発注したら、業者名は複数でてきます。 一行に特定できないので業者名は主キーとは違います。 このように考えると主キーは ・注文書ヘッダ表:「注文番号」 ・注文書明細表 :「注文番号」「商品名」 となります。上の図の青色の項目です。 メモ 「注文書明細表」は「注文番号」「商品名」の2つセットで主キーとなります。 このことを複合キーといいます。 2. 複合キーに注目し、主キーの中から関係関数従属の候補を探す 関係関数従属とはAが決まるとBの値が決まることをいいます。 チェックするのは複合キーのテーブルだけで大丈夫です。 その理由は主キーが1つの項目というのは、すでに分割済みのためです。 「注文書ヘッダ」表は注文番号が決まると業者名が特定できるということからです。 「注文書明細」表の主キー「注文番号」と「商品名」に着目します。 この2つの項目の全部の組合せを書き出します。 項目の組合せ 検討対象 説明 注文番号、商品名 対象外 すでに「注文書明細表」表としては分割済みのため対象外 注文番号 対象外 「注文書ヘッダ」表としてすでに分割済みのため対象外 商品名 検討対象 商品名が決まると確定する項目がないか確認が必要 3. わかりやすく解説!データベースの正規化を学ぼう | Tommy blog. 関係関数従属する項目を主キー以外から探す このように整理したことで、商品名を確認すればいいことがわかります。 次に候補キーの「商品名」と他の項目の一覧を書き出します。 商品名のノートを考えたときに、 ・数量が1つに決まるか? ・単価が1つに決まるか?
- わかりやすく解説!データベースの正規化を学ぼう | Tommy blog
- データベースの正規化の手順をわかりやすく解説
- 【データベース】正規形をなんとなくでいいから理解したいのに理解が難しい人のためになるべくわかりやすく書いた記事 │ コジマノテック
わかりやすく解説!データベースの正規化を学ぼう | Tommy Blog
補足ですが、 実際は第二正規形までしかできないデータ構造も多くあります。 その場合、第二正規形と第三正規形はおなじものとなります。 さいごに 改めて各用語の説明は以下の通り そして、正規化の流れは以下のようになります。 正規化の流れ 列の繰り返しをなくす(第一正規形) 主キーの一部に依存するデータを探し、別テーブルに切り出す(第二正規形) 主キーじゃない列に依存するデータを探し、あれば別テーブルに切り出す(第三正規形) このように正規化をする際には どの列がどの列に依存しているか ということを意識することが大切です。 基本情報の問題とかにも出てくるので、ぜひマスターしておきましょう。 なんで正規化するの?正規化するメリットってなーに?みたいな話はまた別の機会に。 この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter( @kojimanotech)を フォローしてくれたらうれしいです! システムエンジニアのつらい部分のあるあるなんかをエンタメにしたチャンネルを作りました。 チャンネルはこちら つらい部分も楽しくなればと思っているのでよかったらチャンネル登録や高評価してくれたらうれしいです。 以上、コジマでした。
データベースの正規化の手順をわかりやすく解説
受注日 顧客名 顧客No. 商品名 商品コード 単価 数量 商品名 商品コード 単価 数量 10 2020/11/11 A社 D001 ペン A100 100 12 消しゴム A100 80 10 11 2020/11/20 B社 D002 消しゴム B100 80 10 消しゴム B100 80 10 12 2020/11/25 C社 D003 ペン A100 100 20 ペン C100 100 10 上の表1は、よくありがちな取引をまとめたテーブルです。 受注の管理番号があり、その顧客名、顧客番号があり、その後には商品名、商品コード、単価、数量の4つの項目が繰り返しになっています。 なぜこのようなテーブルができてしまったかというと、 「商品コードだけじゃわかりにくいから商品名をいれてみた」「売れたデータをどんどん入力できるように、商品名から数量までが繰り返されるようにした」 など、様々な理由がありそうです。 補足)テーブルとは何か?
【データベース】正規形をなんとなくでいいから理解したいのに理解が難しい人のためになるべくわかりやすく書いた記事 │ コジマノテック
1 主キーに対する従属関係 それでは、主キーに関数従属する項目をテーブルから切り離して新しくテーブルを作成します。作成したテーブルを表. 3に示します。 表. 3 第2正規形 以上で第2正規形が完成しました! これでも十分整理できた感じがしますが、まだ少し作成したテーブルの冗長性が残っています。次に行う第3正規形でデータをより扱いやすくできます。 第3正規形 第3正規形とは、主キー以外の項目で関数従属している部分を別テーブルに分けることを言います。 第2正規形では、主キーに着目してテーブルの整理を行いました。しかし、第3正規形では非キーに着目してテーブルの分割を行います。 ポイント:非キー項目に着目して、関数従属する項目を見つける それではやっていきます! 表. 3の学生テーブルを見てください。非キーである「所属学科ID」の値が決まると「所属学科名」の値も一意に決まることから関数従属していることがわかります。 なので、「所属学科ID」と「所属学科名」を学生テーブルから切り離します。すると、次のようになります。 表. 4 第3正規形 ここで注目してもらいたいのは学生テーブルです。テーブルから切り離した所属学科IDが残されています。この理由は、第2正規形の状態のデータ関係を保つために残されています。 以上で第3正規形が完了です! データベースの正規化の手順をわかりやすく解説. 練習問題 ここまで第3正規形までの手順を学んできました。さらに理解を深めるためには問題を解くことが必須だと思います。 以下のリンクに私が作成した問題をアップロードしておくのでぜひ解いてみてください! 応用情報技術者試験の問題でもいろいろなデータベースの問題が出てきます。もっと勉強してみたいと思う方はこちらで学習してみてください! 応用情報技術者 過去問道場 おわりに 今回、正規化の第1正規形~第3正規形について紹介しました。 それぞれの正規化をする上でのポイントは、 第1正規形: レコードの繰り返し項目を別レコードへと分割する 第2正規形: テーブルの主キーに着目して、関数従属する非キー項目を見つける。 第3正規形 : テーブルの非キーに着目して、関数従属する項目を見つける です。この点を意識すれば、正規化についての理解が深まると思います。
さいきん、応用情報技術者試験に向けて勉強しています。そこで、DBの正規化について理解できたので他の人が見てもわかりやすいようにまとめてみました。 正規化とは? DBで扱う様々なデータを管理しやすくするために、整理するプロセスのことを言います。正規化を行うことでデータの冗長性がなくなるため、あるデータに変更が生じた場合でも、無駄なく効率的に変更を行うことができます。 正規化のステップ データの整理を行う正規化ですが、いくつものステップがあります。それを示したのが次の図になります。 図. 1 正規化のステップ 正規化はデータ同士の関係によって整理していくのですが、たいていの場合、第3正規形までしか行わないみたいです。なので今回は非正規形から第3正規形までの整理手順についてサンプルデータを活用してできるだけわかりやすく紹介していきます! 正規化をわかりやすくするため用語 今回正規化について説明する中で、以下の用語を使用するので意味をしっかり覚えていてください。 ※といってもそんなに使わないかも 関数従属 ある一つの属性の値が一意に決まるとき、ほかの列の値も関連して決まることを言います。 たとえば、属性Aの値が決まると、対応するように属性Bの値も決まってくる。 A→Bのように記述されることもある。 主キー テーブル内で、ある項目を指定することでテーブル内の一つのレコードを一意に識別できる項目のこと 非キー 主キー以外の項目のこと 複合主キー テーブル内の一意のレコードを識別するときに、2つ以上の項目を主キーとして扱うもののこと 正規化の手順 これより正規化について解説していきます。今回使用するサンプルデータを表に示します。 表. 1 出席簿テーブル(非正規形) こちらはとある学校の出席簿を表したものです。背景色が黄色になっている項目名は、このテーブル内で一意のレコードを識別するための主キーになっています。こちらのテーブルを使用して正規化について学んでいきます。 非正規形 非正規形とは、正規化が全く行われておらず1つのレコードに複数の繰り返し項目が存在するテーブルのことを指します。 表. 1出席簿テーブルの山田太郎というレコードを見てみると、(授業ID, 授業名, 所属学科ID, 所属学科名, 学年, 出席確認)という項目が複数存在しています。 非正規形のままでは、RDBのシステム上データを格納することができません。 そこでテーブルを第1正規形にしていきます。 第1正規形 非正規形のデータは、そのままの状態だとDBに格納することができません。このデータをDBに格納可能な状態にデータを整理することを第1正規形といいます。 では具体的に何をしていくかというと、 表.
原則、正規化をすべし。ただ、場合によりあえて正規化しない選択肢もある、という認識でいれば良いと思います。 この記事と関連性の高い記事 【初級編⑨】テーブルに設定するキーの種類や様々な制約(CONSTRAINT) 【初級編⑩】SQL Serverのテーブル結合(JOIN)の基礎 【初級編⑪】SQLのGROUP BYでレコードのグループ化と集計を行う 投稿ナビゲーション 市販のテキストで全く理解出来ていなかったのですが、こちらでスッキリと理解することができました。ありがとうございました。