重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

正規化が分かりません。
冗長性を排除したい、という意図だけは分かるのですが…

例えば、リンク先で回答されているケースは、それぞれ第何正規化に該当するのでしょうか?

>個人IDがあり、住所情報を正規化するとしましょう
>項目は「郵便番号」「都道府県」「市区町村」「番地」「電話番号」「メールアドレス」としますよ

>個人IDを主キーとする「郵便番号テーブル」を作る
>個人IDを主キーとする「都道府県テーブル」を作る
>個人IDを主キーとする「市区町村テーブル」を作る
・これは第1正規化ですか?

>個人IDを主キーとする「番地テーブル」を作る
>個人IDを主キーとする「電話番号テーブル」を作る
>個人IDを主キーとする「メールアドレステーブル」を作る
・この内容は重複しないと思うのですが、分けると、正規化したことになるのでしょうか?
・また、その場合は、第何正規化に該当するのでしょうか?

▽DBの「非正規化」について
  http://oshiete.goo.ne.jp/qa/5776795.html

A 回答 (3件)

元のテーブルの主キーが「個人ID」単独だったと仮定すると正規化では有りません。

単にテーブルを分けているだけです。
考えにくいですが、元のテーブルが複合主キーだった場合は第2正規化ともいえます。そうだとしても、主キーが「個人ID」だけのテーブルを作り、そこに「郵便番号」「都道府県」などの属性を移せば良いだけです。「郵便番号」「都道府県」などで分割する必要は無いです。
第2正規化は部分関数従属性の解消、つまり、複合主キーの中の一部にカラムだけで確定する属性を、単一の属性の主キーを持つテーブルに分割することです。


憶測ですが、下記の様に書こうとして書き間違えたのではないでしょうか?

・郵便番号IDを主キーとする「郵便番号テーブル」を作る
・都道府県IDを主キーとする「都道府県テーブル」を作る
  ・
  ・
  ・

これだと、郵便番号IDなどを導入した上で、第3正規化を行ったという事になります。


ともあれ、「DB 正規化」などで検索すると参考となるページが多数ヒットしますので、これらを参考にご自身で検討されると良いかと。

http://www.techscore.com/tech/sql/SQL16/16_02.ht …
http://www.atmarkit.co.jp/fdb/rensai/db_enginer0 …
http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%AC% …


なお、この文章の中で主キーと書いたところは、厳密に言うと候補キーとなります。主キーは候補キーの一つですが、主キーで無い候補キーも有ります。気になったら「候補キー」などで検索して下さい。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
大変参考になりましたー

お礼日時:2013/02/01 18:42

第1正規化は、繰り返しの排除を行います。


第2正規化は、複数のレコードで共通の値をとる項目をキーをつけて別テーブルにします。
第3正規化は、第2正規化した結果のテーブルに対して第2正規化を行います。
といった感じでどうでしょう。

以下のURLの説明がわかりやすいかと。
http://www.kogures.com/hitoshi/webtext/db-seikika/

>個人IDを主キーとする「郵便番号テーブル」を作る
>個人IDを主キーとする「都道府県テーブル」を作る
>個人IDを主キーとする「市区町村テーブル」を作る
・これは第1正規化ですか?
>個人IDを主キーとする「番地テーブル」を作る
>個人IDを主キーとする「電話番号テーブル」を作る
>個人IDを主キーとする「メールアドレステーブル」を作る
・この内容は重複しないと思うのですが、分けると、正規化したことになるのでしょうか?
・また、その場合は、第何正規化に該当するのでしょうか?

全部、第2正規化です。

補足:
>・この内容は重複しないと思うのですが、分けると、正規化したことになるのでしょうか?
重複しないのならば、正規化したことにはなりません。
ですが、この元ネタは、重複しそうです。

すべて、「個人IDを主キーとする」ので、
「住所情報テーブル」:キー項目、個人ID、・・・
「郵便番号テーブル」:個人ID、郵便番号
「都道府県テーブル」:個人ID、都道府県
・・・
「メールアドレステーブル」:個人ID、メールアドレス
(一番左の項目が主キー)
と考えられるので重複はあるでしょう。

## 正規化したときのデメリットを例示するという意図なので、
## 第2正規化間違ってないか? という疑問は置いておいて。
## (単純ミスなのかもしれませんが。)

ということで第2正規化になります。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>## 第2正規化間違ってないか? という疑問は置いておいて
・No.3さんの回答見て、ようやく理解できました
・質問に挙げた例が悪かったですね。何しろ、よく分かっていないもので…
・説明自体は大変分かりやすく、参考になりましたー

お礼日時:2013/02/01 18:45

>・これは第1正規化ですか?



違います。

>・この内容は重複しないと思うのですが、分けると、正規化したことになるのでしょうか?

この場合は、正規化では無いです。
    • good
    • 0
この回答へのお礼

回答ありがとうございましたー

お礼日時:2013/02/01 18:46

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

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