2012-02-06 9 views
0

地域、Sub_Region、国とCountry_Regionsとの関係を作成しています。MySQL地域/国の関係と正規化

私が4つのレイヤーを必要とする理由は、検索を絞り込むためです。たとえば、リンク先ページには全世界のGoogleマップがあり、どの地域(大陸)でもクリックすることができ、その地域のSub_Regionsでズームし、Sub_Regionをクリックして国を取得し、国にCountry_Regionsがある場合は、それらにズームします...

私の問題は、すべての地域/国の関係がSub_Regionを持っているわけではありません。

Sub_Regionの例は、私がこのような構造に米国を置くしようとした場合、問題がある

Region | Sub_Region   | Country  | Country_Region 
Caribbean | Lesser Antilles | Saint Martin | NULL 
Europe | Iberian Peninsula | Spain   | NULL 

あり、それは次のようになります。

Region   | Sub_Region   | Country   | Country_Region 
North America | NULL    | United States | Southeast 

を私はこれを正規化するにはどうすればよいですSub_RegionやCountry_Regionが存在しない場合でも、データは一貫しており、InnoDBは幸せになり、参照を手伝ってくれますか?

表1:

領域

id | region_name 

表2:

+0

あなたはおそらくより良い混合されているものを混在させています。たとえば、「北米」は物理的地理と関係がありますが、「米国」は政治的地理と関係しています。あなたが人生を選んだらあなたの人生はもっと簡単になります。また、いくつかの国は国で構成されています。 (誤字ではありません) –

答えて

0

正規化は以下のようでなければならない

id | country_name | region_id 

表3:

region_type

id | region_type (Southeast,Southwest etc) 

表4:

サブ領域

id | sub_region | country_id | region_type_id 
+0

3NFにするためにsub_regionテーブルも必要ですか? – guyfromfl

+0

複数の場合は –

+0

が更新されます。あなたは各サブリージョンと一緒に国の地域を保存したいですか? –

0

HAVAだけテーブル内のすべての位置情報、及びそれらを入れてReeの構造

table location (
    id, 
    title, 
    location_type, 
    fk_loc_parent, 
) 
+0

私は間違いなくこの試してみる。 – guyfromfl