2017-12-11 18 views
-1
+-------------+----------------------------+-------------------+-----------+-----------+-------------------+ 
| postal_code | city_district    | city    | district | region | state    | 
+-------------+----------------------------+-------------------+-----------+-----------+-------------------+ 
| 60313  | Innenstadt     | Frankfurt am Main | NULL  | Darmstadt | Hessen   | 
| 10719  | Charlottenburg-Wilmersdorf | Berlin   | NULL  | NULL  | Berlin   | 
| 73773  | NULL      | Aichwald   | Esslingen | Stuttgart | Baden-Württemberg | 
+-------------+----------------------------+-------------------+-----------+-----------+-------------------+ 

場合によっては、city_district、district、およびregionをNULLにすることもできます。小都市には市区町村はありません。市(フランクフルト・アム・マイン)は、地区を含む/地区とすることができます。市(ベルリン)には、地区と地域が含まれます。ドイツの都市、地域、地区などのデータベースの正規化

テーブルは空であり、検証されたユーザー入力から読み込まれます。私は、独自の表の各列に対して作成され、このように、それらに参加しました:

郵便番号:
city_districtをCITY_ID:CITY_ID
市:district_id
地区:REGION_ID
地域:STATE_ID
状態:名前

SELECT 
    * 
FROM 
postalcode 
    LEFT JOIN 
city ON postalcode.city_id = city.id 
    LEFT JOIN 
district ON city.district_id = district.id 
    LEFT JOIN 
region ON district.region_id = region.id 
    LEFT JOIN 
state ON region.state_id = state.id; 

これはとても良いですか?正規化以上? NULL値でテーブルを結合するにはどうしたらいいですか?私はジョイントで上記のテーブルを取得したい。 "postalcode"の後に "citydistrict"に参加したい場合は、 "Not unique table/alias"というエラーメッセージが表示されます。どうすればテーブルを正しくエイリアスできますか?

郵便番号:https://en.wikipedia.org/wiki/Postal_codes_in_Germany
シティ地区:https://en.wikipedia.org/wiki/Stadtbezirk
地区: https://en.wikipedia.org/wiki/Districts_of_Germany
リージョン:https://en.wikipedia.org/wiki/Regierungsbezirk
州:https://en.wikipedia.org/wiki/States_of_Germany

+1

こんにちは。単語 "normalize"は、2つの異なることを意味するために使用されます.1NFに入れます。それ自体は固定された意味を持ちません。また、FD&JDごとに上位NFに分解されます。どちらの場合も、値をIDで置き換えることはありません。だから、なぜあなたはその言葉を使用していますか?あなたは何の言葉に従っているのですか、その言葉は何を意味すると思いますか、あなたは何を達成しようとしていると思いますか?また、リレーショナル・モデルにはヌルはありません。したがって、*あなた*は、あなたの参照が「正規化」と言うのはNULLであることを伝える必要があります。あなたの分解/再構成は直感的には妥当ですが、なぜ*正確にあなたはそれをそのようにしていますか? – philipxy

+0

PSなので、* Googleの検索では、SQLのテーブルエイリアスの使い方について何を伝えますか? – philipxy

+0

重複を避けたい。 –

答えて

0

ドイツには約8K郵便番号がありますか? の正規化では、テーブルは約1〜2MBになる可能性があります。必要なインデックスに応じて、最大3MBになることがあります。

すべてのレベルで正規化が過標準化されています。

すべての郵便番号はcityにありますか?その場合、妥協案は2つのテーブルを持つことになります。

postal_code, city_district, city_id 
city_id, city, district, region, state 

ディスクフットプリントを半分にカットする可能性があります。

関連する問題