数日前に「正規形の定義」が知りたくて、質問を書いたものです。
すばらしい解答をいただき、正規形の定義は理解できた私ですが、また新たな問題にぶつかってしまいまし。正規化することに、一体、どんなメリット&デメリットがあるのでしょうか?どなたか、教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

正規化のメリットに関して最も重要な点は、データの保守であろうと思います。


複数のテーブルに散在したデータの更新は、テーブル数が多くなると、それに応じて労力が必要になります。
また、同じ意味を持つデータでも表現が異なり、データを修正する場合に、SQLに全ての場合を記載する必要が出てくる、即ち、データを全てのテーブルで洗い出しをしないと完全な修正が行えない、といった問題が出てきます。

但し、第三正規化の段階で、数行のテーブルを数多く作ることになるため、データの修正が発生しないことが判明している(規制当局が指定した用語で将来に渡って変更がないものなど)場合、単一テーブルでしか使用しない場合等では、敢えて正規化しない場合もありますが、データの修正・保守の観点からの判断必要だと思います。

上記のように記載しましたが、よほどのことが無い限り正規化は行うべきと考えています。
    • good
    • 2

先日、正規形で回答したymmasayanです。


正規化の最大の目的はデータの一貫性の確保です。データベース内のデータ間に矛盾がない事。これが崩れるとデータベースは信頼を失い、雪○事件のように大変な事になります。

データの一貫性を守る上では、1事実1箇所と言うのが最も基本的な考え方です。
他の方が、すでに述べておられるように、同じデータが複数箇所にあると書き換えも大変ですが、書き換え漏れはもっと怖いです。

第一正規化では、1レコード(1行)内の繰り返しを排除しました。
第二正規化では、主キー、複合キーで、分離を行ないました。
第三正規化では、更に推し進めて徹底的な表の分割を行ないました。

第二正規化、第三正規化ではレコード間(行間)でダブっていたデータが1事実1箇所に集約されている事はお分かりでしょう。

実は正規化にはもう一つ重要な働きがあります。第一正規化では存在の危ういデータが、第二正規化、第三正規化で存在可能になると言う事です。
例えば、注文表に顧客データが含まれているとします。第二正規化か第三正規化で顧客データが顧客表として独立したとします。
第一正規形の注文表の中の、取引先A社の注文が全てキャンセルになったとします。するとA社の顧客データは注文表から消えてしまいます。
しかし、第三正規化までしてあれば、あえて顧客表のA社は消さなくてもいいのでA社の顧客データを残しておく事が出来ます。

正規化によって、DBの容量が減ると言う面もありますが、場合によっては増える事もあります。

正規化すると応答性の悪くなる事が多いです。そこで、特別なケースに限って正規化のレベルを下げる事が有ります。しかし、これは一貫性と効率を天秤にかけているわけであまりお勧めできませんが、覚悟してやるなら、最新の注意が必要です。

質問に有った、「メリット&デメリット」の形になっていなくてすみません。
    • good
    • 1

私自身低レベルで、学校とかで体系だって勉強をしたことがありませんが・・・


いくつかのデータベース開発にかかわったことがあります。

メリット)
・データベースのサイズが少なくてすむ
・きちっと正規化設計されたデータベースは、プログラムの改変に強い。
 (表現しづらいのですが、正規化されていないものは、破綻してしまうときがあります)
・大規模なDBでも、それなりの処理速度を確保できる。

デメリット)
・テーブルの設計が結構面倒です。
  (実際の業務・利用方法と整合しにくいときがある)
・マスタテーブルのメンテナンスプログラムなどをきっちり作りこむと、全体の作業量が大きくなります。
(開発段階でも、運用段階でも)
・データの交換(たとえば、csvファイルでExcelに渡すなど)の際でもプログラムを作らなくてはならなくなる。

以前は、ちょっとしたDB開発でも、本能的に正規化していましたが、ここ数年のハード、ソフトの発展を見ると、ちょっと考えてしまいます。

正規化しないで安直に開発してしまう「力技」のほうが、後々いいのかな?と思ったり・・・・

#で、toto31さんと共に他の人の回答・意見を見せてもらおうと思い、回答したわけなんです。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qメリットのシャンプー

こんにちは♪
早速本題に入らせていただきます。
私は市販のシャンプーが好きで、家に7種類ほどボトルキープしています。
その中にメリットがあるのですが、昔「メリットはすごい体に悪い」と言われていたようですね。
私自身、普通に洗ってもさらさらになりますし、香りもいいな~と思っているので別に使わないわけではないんですけど、今のメリットってもう昔のような悪いイメージのシャンプーではないですよね?
シャンプーもノンシリコンになっているので、私は使っているのですが・・・。
皆さんの意見がききたいです!どうぞ回答お願いします!!

Aベストアンサー

子供が居るのでメリット使用してます。

私も市販されてるシャンプーはだいたい使ってみましたが

今のメリットは泡立ちが抜群に良く、髪がサラサラになるので、気に入って使っています。

私が子供の頃、メリットのCMは「フケにはメリット」と言った感じで、独特の香りもあり、メリット使っているイコールフケがある人みたいに言われていました

今はかなり改良されて私もお気に入りです

Q第1正規形→第2正規形

正規化についてお聞きしたいです。
大学の図書館の本の貸し借りのデータベースで
現在第1正規化した↓のテーブルがあるのですが


図書ID|書名|配架場所|学生証番号 | 氏名|学部|在籍期限|返却期限|貸出日
(図書IDは重複がないものとする。主キーは図書ID、学生証番号である)


これを第2正規形に正規化した場合

学生証番号(主キー)|氏名|学部|在籍期限
図書ID(主キー)|書名|配架場所
学生証番号(主キー)|図書ID(主キー)|返却期限|貸出日


↑のように3つの表に分ければ良いのでしょうか?

あとこれを第3正規形にするにはどうすればいいでしょうか?
第2から第3への方法がよくわからないので、わかる方ご指導下さい。

Aベストアンサー

すべてのケースで第2正規形、第3正規形が異なるわけではありません。今回のケースでは第2正規化を行った結果は、いわゆる「推移的関数従属」もないので、第3正規形にもなっているといえます。
ただし、もともとの項目に書名に従属する著者名、出版社名なども含まれていれば話は別ですが。

Qノンシリコン

最近よくノンシリコンと聞くのですが、やはりシャンプーはノンシリコンの方がいいのでしょうか?

Aベストアンサー

シャンプーにシリコン・オイルが配合されていると、髪をすすいでも毛髪にシリコンの薄い被膜が残って、ツヤが出たり、乾燥を防いだり、ブラシ通りがよくなったり、髪が落ち着いたりします。しかし、髪質によっては、ベタつきを感じたり、髪型がペタッとなってしまったりすることがあります。特に細くてコシのない髪の方は避けたほうがいいでしょう。
シリコン自体は安全なオイルなので、心配することはありません。髪質に合ったものを選べばいいでしょう。

QDBで第1正規形と第2正規形の違いは?

基本情報処理試験の勉強してます。

とはいえ日常的にDBをいじってるので、
一番ストリクトにDBを切ったものが第3正規形ということはわかります。

ですが、第1正規形と第2正規形の違いがいまいちぴんときません。
どこがポイントでしょうか?

よろしくお願いします。

Aベストアンサー

私には、ここが解りやすかったです。

http://rfs.jp/sb/sql/s01/05-13.html

私としては、第2と第3の方が区別が付きにくい気がします。部分と推移の意味がつかみにくい。
SQL文操作に慣れてくると、分離した状態から考え始めるので、第3正規形となったtableの全てをjoin して第1正規化前へ戻すSQL文構築から逆算するとすこし理解が進むかも?

まず、第3正規化で分離した table は、
join `th3rd` on `main`.nonprimary = `th3rd`.primary
となって本星の`main`テーブルと非プライマリーキーのフィールドで結びつきます
次に、第2正規化で分離した table は、
join `th2nd` on `main`.primaryX = `th2nd`.primary
となって `main`テーブルとプライマリーキーのうちの1フィールドで結びつきます
つまり、複合プライマリーキーがあるテーブルでないと、第2正規形が理解しにくいのだと思います。

最後に、第1正規化で分離したtable は、こちらのtableの方が全体を連結して、これまでの`main` テーブル側が、FOREIGN KEY の関係になります。
`the1st` join `main` on `the1st`.mainid = `main`.id join `the1stCategory` on `the1st`.Categoryid = `the1stCategory`.id

私には、ここが解りやすかったです。

http://rfs.jp/sb/sql/s01/05-13.html

私としては、第2と第3の方が区別が付きにくい気がします。部分と推移の意味がつかみにくい。
SQL文操作に慣れてくると、分離した状態から考え始めるので、第3正規形となったtableの全てをjoin して第1正規化前へ戻すSQL文構築から逆算するとすこし理解が進むかも?

まず、第3正規化で分離した table は、
join `th3rd` on `main`.nonprimary = `th3rd`.primary
となって本星の`main`テーブルと非プライマリーキーのフィールド...続きを読む

Qノンシリコンのリンスを使った後。。と、髪の毛が絡まる。

いろいろ調べて、ノンシリコンのシャンプー・リンスを探して
使ってみたのですが、とにかくリンスの後髪の毛を梳くのがとても
大変です。
ノンシリコンのシャンプーはいいとして、リンスもノンシリコンの方が
本当にいいのですか?
それと、私は特に髪の毛が絡まりやすく、髪の毛の襟足の部分が
すぐくちゃくちゃに団子みたいに絡まるんです。
痛みがひどいので静電気だと思うのですが。。
どうしたら絡まらないようになりますか?
同じ経験の方いらっしゃいますか?

Aベストアンサー

シリコンは
髪の毛の周りをコーティングしてくれる役目をしています
毛の周りに油で膜を作る。。。ような感じです
それで 艶がでたり。。手触りがよくなったりします
また シャンプーに入っているのは 
髪を洗っている時に摩擦で髪を傷めないようにというような意味で入っています

美容師にも色んな意見があるのですが
私的には 使い方次第だと思います

絡んでいるのは
そのシリコンの特性がなくなったからだと思います

Q正規形の定義

第二正規形と第三正規形の定義を教えてください。
どの文献を参考にしても「候補キー」や「主キー」という語を用いて説明がしてあります。が、私はそのあたりからさっぱりわからないので、とても理解しづらいです。もっと噛み砕いた、わかりやすい表現での定義を求めています。どうか、よろしくお願いします。

Aベストアンサー

おっしゃるとおり正規化はメチャ判りにくいです。難しい言葉を機関銃のごとく連発して、専門家しかわからない様にしています。判ってしまえば、何てことないのですが。正規化で苦労した被害者のひとりとして、できるだけ、わかりやすい言葉で説明してみたいと思います。

実例として参考URLをご覧ください。
非正規形を見てください。商品明細が繰り返しになっています。(繰り返しているように見えませんが、商品明細が複数行あります)

まず、繰り返しを排除したものが第一正規形です。実は第一正規形は2つあって、参考URLにあるのは第一正規形(その2)です。ここには有りませんが第一正規形(その1)は非正規形と同じ形で商品明細が1個だけついた形です。
混乱されるかもしれませんが、どちらも繰り返しを排除していると言う意味でまさに、第一正規形なのです。・・・・ここまでは蛇足です。

次に第一正規形を見てください。この中に親分が何人いるでしょうか。親分と言うのは何人か子分がいて、親分が右と言えば子分は右を向くのです。
実は第一正規形(その2)ではわかりにくいので第一正規形(その1)で説明します。

親分は受注番号と商品番号です。ところが数量と金額だけはひとりの親分だけの子分ではありません。実は受注番号と商品番号という2人の親分を持つのです。このとき「受注番号と商品番号」を複合キーと言います。

第二正規形は全ての親分と複合キーを元に表の編成を行ないます。

次に第三正規形です。第二正規形では実は親分-子分-孫分の関係が残っています。これを分離していきます。つまり、親分-子分、子分-孫分と言う別の表に分離します。大家族を核家族化するわけですね。

お分かりいただけたでしょうか。わかりにくければ、補足ください。

原点に戻って、蛇足の第二段。
主キーとは親分または複合キーの事です。
候補キーとは主キー、または主キーの代名詞、または主キーの代理が出来るもの。
本当は逆で候補キーの中から一番いいのを選んで主キーとするのです。
(候補キーが次郎長、清水の親分、清水次郎長、街道一の男伊達の4つあるときどれを主キーとしてもいいのですね)
ところが学生番号、学生氏名の場合、同姓同名がなければどちらでもいいですが、同姓同名を考えるなら学生番号を主キーにするほうがいいのです。
最後ですが、親分または複合キーであって、かつ、ただ一人(表の中のただ1行)を特定できる。それが主キーなのです。

参考URL:http://www.netlaputa.ne.jp/~hijk/study/ae/datnom.html

おっしゃるとおり正規化はメチャ判りにくいです。難しい言葉を機関銃のごとく連発して、専門家しかわからない様にしています。判ってしまえば、何てことないのですが。正規化で苦労した被害者のひとりとして、できるだけ、わかりやすい言葉で説明してみたいと思います。

実例として参考URLをご覧ください。
非正規形を見てください。商品明細が繰り返しになっています。(繰り返しているように見えませんが、商品明細が複数行あります)

まず、繰り返しを排除したものが第一正規形です。実は第一正規形...続きを読む

Qロクシタンシャンプーはノンシリコンですか?

ロクシタンシャンプーはどのシリーズもノンシリコンでしょうか?

Aベストアンサー

こんばんは

全部ではないようですね
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1073098805

http://sekiraraalice.jugem.jp/?eid=108

http://lifeyurari.exblog.jp/16481130

Q「正規形」のよみかた

「正規形」のよみかたは…

「せいき"けい"」?
「せいき"がた"」?
「せいき"かた"」?

今まで気にならなかったものが、突然気になりだしました。

正しくはどう読むのでしょうか?
よろしくお願いします。

Aベストアンサー

「せいきけい」で間違い有りません。
カテがデータベースですから第1正規形から第5正規形まで有ります。

Qノンシリコン

ノンシリコンシャンプーを使い始めたら、何種類か変えても、髪はきしんでパサついてゴワゴワになりました。本当にノンシリコンの方が髪によいのでしょうか?

Aベストアンサー

そうとは限りません
またシリコン使うことが悪いことでもないです
悪いのはシリコンを使わないとバサバサになってしまう質の悪いシャンプーです
ラウレス硫酸やラウリル硫酸、アルキルエーテル系どっぷりの強脱脂シャンプーだと頭皮の脂を不必要なまでに脱脂して、髪にもダメージを与えてしまうので手触りを良く誤魔化すためにシリコンが使われる場合がありますがこれは良くないです
頭なんて実際は毎日洗わなくてもいいんです(ただ洗わないと気持ち悪いんで洗いますがw)
それくらいのことなのでシャンプーはシリコンの有無を気にするよりも主剤(アニオン界面活性剤)の質、また自分にあってるかどうかを気にする方が良いでしょう

Q第二正規形化のサンプルについてアドバイスを下さい。

データベースの正規化について学んでいます。

いろんなホームページを見て参考にしているのですが、
第二正規形が良く分かりません。
エクセルでサンプルとして試しに第一正規形化と第二正規形化をやってみました。
みなさんは、このようなサンプルの場合、どのように正規化していきますか?
サンプルは下のURLに置いてあります。よろしくお願いいたします。
https://box.yahoo.co.jp/guest/viewer?sid=box-l-co4ivitvpdo32iqddqwd3piwfi-1001&uniqid=257ee1c8-c3d3-4e49-959f-33c5a4c0ef84&viewtype=detail

Aベストアンサー

.xls 開く人はいないと思いますよ。
http://excel-macro.16office.com/virus/kikentaisaku.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング