2017-10-18 11 views
0

私は現在、データベースの正規化を行っています.1NFに到達するには、多くの情報源が異なる点があります。UNFから1NFへの正規化

customer 
+----+--------+-----------+ 
| id | name | phone  | 
+----+--------+-----------+ 
| 1 | achmed | 06-101010 | 
+----+--------+-----------+ 
| 1 | achmed | 06-111111 | 
+----+--------+-----------+ 
| 2 | jozef | 06-232323 | 
+----+--------+-----------+ 
| 3 | maria | 06-464646 | 
+----+--------+-----------+ 
| 3 | maria | 06-989898 | 
+----+--------+-----------+ 

別のアプローチは、マルチ値を分割:

customer 
+----+--------+----------------------+ 
| id | name | phone    | 
+----+--------+----------------------+ 
| 1 | achmed | 06-101010, 06-111111 | 
+----+--------+----------------------+ 
| 2 | jozef | 06-232323   | 
+----+--------+----------------------+ 
| 3 | maria | 06-464646, 06-989898 | 
+----+--------+----------------------+ 

一つのアプローチは異なるタプルにマルチ値を分割し、一時的な冗長性を作成します。たとえば

が、これは私のUNFテーブルです新たな関係に直接入ります。これは次のようになります。

customer 
+----+--------+ 
| id | name | 
+----+--------+ 
| 1 | achmed | 
+----+--------+ 
| 2 | jozef | 
+----+--------+ 
| 3 | maria | 
+----+--------+ 
customer_phone 
+----+-----------+ 
| id | phone  | 
+----+-----------+ 
| 1 | 06-101010 | 
+----+-----------+ 
| 1 | 06-111111 | 
+----+-----------+ 
| 2 | 06-232323 | 
+----+-----------+ 
| 3 | 06-464646 | 
+----+-----------+ 
| 3 | 06-989898 | 
+----+-----------+ 

両方ともwil私はより高い標準形の後も同様になりますが、どのアプローチが1NFのように「ベストプラクティス」でなければならないのですか?

+0

[データベース管理システムでの正規化](https://stackoverflow.com/questions/40623169/normalization-in-database-management-system)の可能な複製。 – philipxy

+0

こんにちは。あなたの質問は何ですか?あなたは自分自身で言った:標準的な "1NF"という意味はない。 UNFという標準的な意味もありません。 「UNF」の意味は、リレーショナル表には列と行ごとに1つの値*があるため、*あなた*またはあなたのコース/参照先がそのようなデータ構造を意図している*関係に対応する。さらに、「1NF」の概念は混乱しており、最終的には良好な設計であるが、より高いNFに対する標準化とは異なる冗長性がある。彼らは*あなたのコースで何をしたいですか?その参考文献は何を言いますか? – philipxy

答えて

0

1NFには3つの方法があり、データを取ることができます。

アプローチ1:(1番目のオプション)複数の値を別々のタプルに分割します。

アプローチ2:列を追加します。 phone1とphone2の

アプローチ3追加しますだけではないよう

アプローチ3が優れている、親/子関係を持っている(あなたの第二オプション)は1NFですが、また2NFと3NF。

データベースを正規化する際、通常は3NFになりたいです。私たちは、1NF、2NF、そして3NFを通してゆっくりと進んだアプローチを取るか、まっすぐ3NFに行くことができます。 30年間この仕事をした後、私は自然に最初のステップとして3NFを生成します。 1NFと2NFは、既存のデータベースを修正してプロジェクトの時間的制約があるため、3NFの実装が妨げられる場合にのみ発生します。

+0

したがって、私が正しく理解していれば、通常のフォームはルールに違反していない限り、「これらのルールに違反しないでください」と間違ったアプローチはありません。しかし、アプローチ3は、より長い実行に時間を節約します。 –

+1

@ErwinOlie&SteveWright質問は1NFについてですが、上位NFとは関係ありません。また、より高いNFへの正規化は、所望の1NF以外のより低いNFを通過しない。可能なより高いNF設計を排除することができる。 – philipxy

関連する問題