2017-02-13 5 views
0

Hallo ich bei der Gestaltung meiner mysql dbase für Effizienz am relooking ..Land Region Stadt Tabelle - ID oder Name

zur Zeit ich habe 3 Tabellen

TBLE Land: Land-ID, Name des Landes

Tabellenstatus: Zustand ID, Zustand Name, Land ID

Tabelle Stadt: Stadt-ID, Name der Stadt, Staat id

Ich denke, ob es besser ist ...

Name
  1. Land in Zustandstabelle statt Land ID haben

  2. Staatsnamen anstelle der staatlichen ID in der Tabelle Stadt

Dies ist, weil überall in meinem Code muss ich zusätzliche Abfragen ausführen, um Land-ID, Status-ID und Stadt-ID von Zahlen zu Alphabeten konvertieren (z. B. 1 bis USA) ... wäre es nicht besser, nur alphabetisch zu referenzieren. (Weniger Anfragen)

Antwort

1

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.

+0

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

0

Wenn Sie weniger Abfrage möchten, gibt es einige Technik Anruf Denormalisierung.

Sie können, was am wichtigsten ist und zu Ihrem Bedarf passen.

für mehr über demonalization Bedeutung von techopidia und wikipedia

Verwandte Themen