2015-10-02 7 views
6

Ich habe verschiedene Anbieter, die mir ein Excel mit verschiedenen Städten geben, in jeder Stadt verwenden sie einen speziellen Code für ihre Operationen und mehr Daten, die für mein Geschäft nützlich sind.Städte aus verschiedenen Quellen identifizieren und in Beziehung setzen

Das Problem ist, dass ich ein Chaos mit all diesen Städten habe:

  • ich meine eigenen Städte in meiner Datenbank, um 9000 Datensätze.
  • Provider A gibt mir seine Excel oder webservice zu bekommen um 6000.
  • Provider B mir ein anderes C 5000.
  • Provider gibt ... etc

Einige der von meinem Provider gegeben Städte bereits in meiner Datenbank und ich muss nur die erforderlichen Daten aktualisieren, die ich brauche.

Ansonsten muss ich diese neue Stadt in meine Datenbank einfügen.

Und dies, jedes Mal, wenn ein Anbieter mir ein Update dieser Städte gibt.

Nun, das Hauptproblem ist, dass ich eine Stadt anders als sie anrufen, und sie unterschiedlich voneinander ... wie zu wissen, ob ich bereits diese Stadt habe oder ich muss ein neues erstellen, da wir verwenden verschiedene Namen?

So wie ich es sehe, kann ich es nur manuell erreichen. Vergleichen ihrer Städte mit Minen.

Natürlich ist es zu viel Arbeit, also habe ich mein eigenes Skript gemacht, und die Levehnstein Funktion für die Datenbank implementierend, kann ich automatisch die übereinstimmenderen sehen und sie durch einen Klick auswählen. Das Skript erledigt den Rest (aktualisiert ihren speziellen Operationscode für diese Stadt in meine entsprechende Stadt, die in meiner Datenbank gespeichert ist).

Auch damit habe ich immer noch das Gefühl, dass mir etwas fehlt. Wenn es für diese Städte einen Unicode gäbe, wäre das viel einfacher und automatischer, aber ich habe keinen Code, der diese Städte mehr identifiziert als meine Tabellenkennung. Das gleiche gilt für meine Anbieter, trotz einiger der Verwendung, um mir die Postleitzahl unter den Städten zur Verfügung zu stellen, aber nicht alle.

Gibt es dafür eine bessere Lösung als meine? Irgendwelche universellen Code, den Sie normalerweise verwenden, oder irgendeine andere Approach?

Bearbeiten: Nun, jede Stadt gehört zu einem Land. Natürlich denke ich darüber nach.

In meiner Stadt Tabelle habe ich eine ID für jedes Ziel, und dann eine Spalte für den Operationscode jedes Anbieters (ich weiß, das könnte besser mit einer Beziehung mehr dargestellt werden), plus Ländercode, zip, URL für seo ...

Respektierung der Lösung von MagnusL erwähnt, ein Synonym Tabelle erstellen, warum sollte ich die Synonyme speichern müssen? das Skript in Bezug auf Sie mit levehnstein und menschlicher Interaktion erwähnt, das ist genau das, was ich derzeit tue:

Mit jedem Datensatz von einem Anbieter und meine Ziele Tabelle. Angesichts eines Providerstadt-Eintrags zeige ich die übereinstimmenderen von meinem Tisch.

Aber zuvor verknüpfe ich automatisch alle diejenigen, die in Postleitzahl und Land übereinstimmen.

Es ist eine Menge Arbeit, um den speziellen Betriebscode meines Providers für jede Stadt zu aktualisieren. Ich bin nur neugierig darauf, wie Leute mit diesem Problem umgehen, ich bin mir sicher, dass sich viele Entwickler irgendwann damit auseinandersetzen müssen.

+0

Wie viele Anbieter haben und haben sie immer den gleichen Namen für Stadt oder es gibt keine Regel? Zum Beispiel, gibt ein Anbieter für "Chicago" immer "CHICAGO" oder kann es "Chicago" oder etwas Ähnliches sein? Ich denke, dass Sie vielleicht eine interne "KI" schaffen könnten, die rechtzeitig lernen wird, indem Sie Informationen für jeden Anbieter zuordnen. – Vladan

+0

Sind alle Ihre Städte aus einem einzigen Land? Sind die Unterschiede in Städten aufgrund von Schreibweisen, Rechtschreibfehlern oder anderen Sprachen anders? –

+0

@FrancisEytanDortort Nein, um die ganze Welt. Ja, verschiedene Schreibweisen, Rechtschreibfehler und sogar Sprachen. – vivoconunxino

Antwort

0

Was ist, wenn Sie eine zusätzliche Tabelle für die Namensübersetzung verwenden? IE, die Tabelle würde 2 Spalten haben: Spalte A der Name, den Sie verwenden, Spalte B, der Name, den ein Anbieter verwendet. Möglicherweise müssen Sie manuell diese Tabelle nicht anpassen, aussehen:

Bruxelles:Brussels 
Bruxelles:Brussel 
Bruxelles:Bruxelles 

Während Import für den Namen der Stadt würden Sie dann

select A where B = Brussels 

In Ihrer agglomerierten Datenbank verwenden, würden Namen dann konsistent.

+0

Dies spart mir keine Arbeit, ich muss sie immer noch manuell vergleichen, um diese Übersetzungstabelle zu erstellen – vivoconunxino

+0

Vergleichen Sie manuell klingt wie eine große Arbeit in der Tat, ich dachte eher über das Zusammenführen bestehender Listen, abhängig von den Städten, Sprachen, die Sie brauchen. Ich fand ein paar solcher Städte Listen, aber nichts – user1747036

+0

Sorry, geben Sie ate vorhergehende bearbeiten ... Vergleichen Sie manuell klingt wie eine große Arbeit in der Tat, ich war eher am Zusammenlegen von bestehenden Listen denken ... Wenn wir zum Beispiel Europa betrachten, Sie könnten leicht ein Skript erstellen, das 26 Seiten analysiert (https://en.wikipedia.org/wiki/Names_of_European_cities_in_different_languages:_A bis Z), um diese Tabelle zu generieren. – user1747036

3

Wenn es wichtig ist, dass die Städte korrekt übereinstimmen, würde ich annehmen, dass Sie einige manuelle Schritte in Ihrem Prozess haben müssen. Wenn Sie die Namen kleinerer Städte aufnehmen, werden Sie eines Tages feststellen, dass derselbe Name zwei verschiedene Orte in zwei verschiedenen Ländern sein könnte. (Try München auf Google Maps und Sie erhalten einen in Deutschland und einen in North Dakota.)

Ein etwas komplizierter, aber ich denke, zukunftssicher, Workflow ist die Verwendung von ID-Nummern anstelle von Städtenamen in Ihren Hauptdaten Tabelle. Richten Sie dann eine Standorttabelle mit diesen ID-Nummern als Primärschlüssel und Ihrem bevorzugten Namen der Stadt ein, gefolgt von so vielen Metadatenspalten wie für Ländercode, Postleitzahl, WGS84-Koordinaten, Kontinentname, was auch immer erforderlich ist. Fügen Sie eine weitere Tabelle für Synonymen von Städtenamen hinzu, mit nur ID-Nummern und Namen (ohne UNIQUE Constraint für die ID-Spalte).

Lassen Sie Ihr Import-Skript versuchen, die Stadt mit Hilfe von so vielen Metadaten wie möglich (wahrscheinlich verschiedene Metadaten von verschiedenen Anbietern) zusammen mit dem von Ihnen erwähnten Levehnstein-Algorithmus abzustimmen und es klug genug zu machen, nach Menschen zu fragen Interaktion in den Fällen, in denen keine oder mehr als eine Stadt übereinstimmen. Es kann natürlich die nächstliegenden möglichen Annahmen zeigen, so dass Sie die richtige auswählen und in der Synonymtabelle speichern können.

(Ja, es gibt eine Menge von dort zu erhalten Codierung Wenn Sie es wert finden oder nicht, hängt davon ab, wie oft Sie dieses Updates tun..)

Tipp: Wikipedia Artikel mit unterschiedlichen Namen auf Städte, dh https://en.wikipedia.org/wiki/List_of_names_of_European_cities_in_different_languages

+0

Ich habe dich anfangs nicht verstanden, könnte eine gute Idee sein, ihre Metadaten zu speichern, sobald sie mit meiner Stadt verknüpft sind. Also könnte ich mehr unterschiedliche PLZ haben, die mit meinen Städten zusammenhängt (manchmal unterscheiden sich Reißverschlüsse, weil sie zur selben Stadt gehören, aber ein etwas anderes Gebiet, so dass sie nicht in meinem ersten Versuch zusammenpassen) – vivoconunxino

Verwandte Themen