Die ganze Welt hat etwa
260 country/regions
5000 states
many many cities
Entwurf auf Basis variiert, was Sie brauchen.
1 - Zum Zwecke der winzigen Speicher:
country(id,country)
state(id,state,country_id)
city(id,city,state_id)
2 - Zum Zwecke der Schnellabfrage:
city(id,city,state,country)
3 - Zum Zwecke der Mittelweg:
country(code,country)
state(code,country) -- you might merge country and state into one table based on code
city(state_code,city)
Sie könnten interessiert sein, einen Blick auf die ISO-Codes zu werfen:
https://en.wikipedia.org/wiki/ISO_3166-1 zB US
https://en.wikipedia.org/wiki/ISO_3166-2 zB US-NY
Als Ergebnis iso Staat Code enthält Code iso Land.
UPDATE als je mehr Informationen von Ihnen:
Wenn Sie Immobilien-Websites für USA entwerfen.
1 - Sie haben nicht ein Land Tabelle benötigen, höchstwahrscheinlich alle Objekte sind in USA
2 - Es gibt weniger als 60 Staaten in den USA, so können Sie Aufzählungs sättigt speichern verwenden. Da fast alle von Ihnen verstehen, NY = New York, als Ergebnis benötigen Sie keine staatliche Tabelle.
3 - Sie brauchen also einen Stadttisch. Da Sie city_id für mehr als 10.000.000 Eigentumsdatensätze verwenden werden.
usa_cities(
id int PK
state enum('NY', 'LA', ...)
city varchar
...
)
properties(
id int PK
city_id int,
....
)
AS Eigenschaftstabelle in der Regel sehr groß ist, können Sie Statustabelle und entnormalisiert Design Abfrage zu beschleunigen überspringen für weniger verbindet:
properties (
id int PK,
state enum('NY', 'LA',...)
city varchar
...
)
Sie könnten in der Lage sein, der ENUM zu nutzen für Stadt auch ich bin mir nicht sicher, wie viele städte in usa, aber es ist nicht bei meinem ersten gedanken ermutigt.
zum Beispiel in einer Immobilien-Website jedes Mal, wenn ich eine einfügen, aktualisieren oder auswählen - ich muss eine andere Abfrage ausführen, um die ID in Name und Namen in ID zu konvertieren .... wie die Dropdown-Listen auffüllen, eine Suche durchführen Eingabefeld (Ajax Autocomplete) .. etc .. Was ich fragen möchte ist, sollte ich Code in Mysql wie statt usa Put 1 eingeben, dann konvertieren 1 in usa whereverever benötigt oder sollte ich einfach weitermachen und usa einfügen ... Die meisten Beispiele im Netz verwenden eine code-basierte Struktur, persönlich finde ich, dass es extra geladen ist – DragonFire