
正規化が分かりません。
冗長性を排除したい、という意図だけは分かるのですが…
例えば、リンク先で回答されているケースは、それぞれ第何正規化に該当するのでしょうか?
>個人IDがあり、住所情報を正規化するとしましょう
>項目は「郵便番号」「都道府県」「市区町村」「番地」「電話番号」「メールアドレス」としますよ
>個人IDを主キーとする「郵便番号テーブル」を作る
>個人IDを主キーとする「都道府県テーブル」を作る
>個人IDを主キーとする「市区町村テーブル」を作る
・これは第1正規化ですか?
>個人IDを主キーとする「番地テーブル」を作る
>個人IDを主キーとする「電話番号テーブル」を作る
>個人IDを主キーとする「メールアドレステーブル」を作る
・この内容は重複しないと思うのですが、分けると、正規化したことになるのでしょうか?
・また、その場合は、第何正規化に該当するのでしょうか?
▽DBの「非正規化」について
http://oshiete.goo.ne.jp/qa/5776795.html
No.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% …
なお、この文章の中で主キーと書いたところは、厳密に言うと候補キーとなります。主キーは候補キーの一つですが、主キーで無い候補キーも有ります。気になったら「候補キー」などで検索して下さい。
No.2
- 回答日時:
第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正規化になります。
回答ありがとうございました。
>## 第2正規化間違ってないか? という疑問は置いておいて
・No.3さんの回答見て、ようやく理解できました
・質問に挙げた例が悪かったですね。何しろ、よく分かっていないもので…
・説明自体は大変分かりやすく、参考になりましたー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「テーブルに座って……」という...
-
AccessのSQL 部分一致したデー...
-
外部キーだけのテーブル(主キ...
-
飲み会で、座敷orテーブルどち...
-
会社の飲み会の幹事になり、座...
-
コンボボックスにレコードセッ...
-
まるいテーブル 円い 丸い 漢字...
-
面接のときテーブルが正面に。...
-
アクセスのリンクテーブル一覧...
-
データベースの接続に失敗して...
-
Excel:テーブルではなく、ただ...
-
リレーションシップが出来ません。
-
SQL Server management studio ...
-
男性と2人で飲食店に行きテーブ...
-
SQLでテーブルの値を集計して、...
-
複数のAccessを統合する方法
-
off of と fromの違いを教えて...
-
ACCESS テーブルのRENAME
-
モンスターハンター3rd テーブル
-
お金持ちのテーブル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「テーブルに座って……」という...
-
AccessのSQL 部分一致したデー...
-
外部キーだけのテーブル(主キ...
-
テーブルリンク リンク元を知...
-
会社の飲み会の幹事になり、座...
-
mysqlのupdate構文についての質...
-
面接のときテーブルが正面に。...
-
L2SWはARPテーブルを持っている?
-
飲み会で、座敷orテーブルどち...
-
下記、問題に対しての解答が以...
-
お金持ちのテーブル
-
【エクセル】データテーブルの...
-
男性と2人で飲食店に行きテーブ...
-
ACCESS テーブルのRENAME
-
アクセスのリンクテーブル一覧...
-
時給の変更に対応する方法
-
論理名とコメント構文(?)について
-
SQLです教えてください。
-
SNMPでスイッチのMACアドレステ...
-
テーブル:生徒名簿 生徒名簿の...
おすすめ情報