paeonia: Eindeutigen Schlüssel aus Adress-String erzeugen

Guten Morgen Ihr alle,

Gibt es ein anerkannt sicheres Verfahren, wie ich aus Nachname, Vorname, Straße, Hausnummer, PLZ einen sicher eindeutigen Schlüssel erzeugen kann, wenn ich
1. mehrere Nennungen der Person in verschiedenen Zeilen der Importtabelle habe, aber die Person eindeutig identifizieren möchte.
2. kein Geburtsdatum vorhanden ist,
3. die Tatsache, daß Meier Anton sen. mit seinem gleichnamigen Sohn im gleichen Haus wohnt und somit den gleichen Schlüsselwert bekommt, tolerieren kann.

Am liebsten hätte ich einen Long oder Double -Wert, ich kann aber auch mit einem Textwert leben, weil es um etwa 10.000 DS geht.

Danke schon mal für Eure Hilfe sagt Paeonia

  1. Hallo!

    Gibt es ein anerkannt sicheres Verfahren, wie ich aus Nachname, Vorname, Straße, Hausnummer, PLZ einen sicher eindeutigen Schlüssel erzeugen kann, wenn ich

    1. mehrere Nennungen der Person in verschiedenen Zeilen der Importtabelle habe, aber die Person eindeutig identifizieren möchte.
    2. kein Geburtsdatum vorhanden ist,
    3. die Tatsache, daß Meier Anton sen. mit seinem gleichnamigen Sohn im gleichen Haus wohnt und somit den gleichen Schlüsselwert bekommt, tolerieren kann.

    Kannst du sicher sein, dass der Name und die Straße immer gleich geschrieben ist? Gerade bei Adressen fast ein Ding der Unmöglichkeit.
    zb:
    Doktor Huber Gasse vs. Dr.Huber Gasse

    Wenn du das sicherstellen kannst, dann hänge einfach alle Felder zusammen
    "HansHuberDr.Hubergasse 102323Irgendwo" und erstell einen md5 Hash daraus.
    Aber sobald da irgenwo ein Character unterschiedlich ist, bekommst du einen ganz anderen MD5 Hash.
    Besserer Lösungen für soetwas würden mich auch interessieren.

    mfg
      frafu

    1. Wenn du das sicherstellen kannst, dann hänge einfach alle Felder zusammen
      "HansHuberDr.Hubergasse 102323Irgendwo" und erstell einen md5 Hash daraus.
      Aber sobald da irgenwo ein Character unterschiedlich ist, bekommst du einen ganz anderen MD5 Hash.

      selbst wenn die adresse immer exakt identisch geschrieben wird, die leute niemals umziehen, heiraten oder sonstetwa an ihren daten ändern: ein md5-hash ist nicht eindeutig und für so ein vorhaben nicht geeignet, er dient nur als indiz dafür, dass es sich bei zwei datensätzen/dateien oder wasauchimmer um den selben handelt, aber nicht als garant

      1. Hello,

        selbst wenn die adresse immer exakt identisch geschrieben wird, die leute niemals umziehen, heiraten oder sonstetwa an ihren daten ändern: ein md5-hash ist nicht eindeutig und für so ein vorhaben nicht geeignet, er dient nur als indiz dafür, dass es sich bei zwei datensätzen/dateien oder was auch immer um den selben handelt, aber nicht als garant

        Er sit sogar vollkommen ungeeignet dafür, da aus zwei vollkommen unterschiedlichen Datensätzen derselbe Hash errechnet werden könnte, aus einem Hash aber auf beliebig viele unterschiedliche Sätze verwieden werden kann. Hingegen werden zwei noch so ähnliche Datensätze keine korrespondierenden Hashes erhalten. Die kleinste Abweichung führt schon zu einem vollkommen anderen (MD5-)Hash.

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
    1. mehrere Nennungen der Person in verschiedenen Zeilen der Importtabelle habe, aber die Person eindeutig identifizieren möchte.
    2. kein Geburtsdatum vorhanden ist,
    3. die Tatsache, daß Meier Anton sen. mit seinem gleichnamigen Sohn im gleichen Haus wohnt und somit den gleichen Schlüsselwert bekommt, tolerieren kann.

    garnicht

    Am liebsten hätte ich einen Long oder Double -Wert, ich kann aber auch mit einem Textwert leben, weil es um etwa 10.000 DS geht.

    was spricht dagegen, die datensätze "durchzunummerieren"? üblicherweise sollte eine entsprechende adresstabelle einen primärschlüssel besitze der auf einem feld liegt, welches "id" heisst - somit ist jeder datensatz eindeutig identifizierbar und ich brauch nicht irgendwelche schlüssel errechnen

    zumal das errechnen eines schlüssels aus den personendaten ziemlich ungünstig ist - es braucht nur jemand umziehen oder heiraten, selbst wenn die stadt auf die idee kommt, die straße umzubenennen, ändert sich der schlüssel

    alles in allem eine unbrauchbare methode

    1. Hallo!

      was spricht dagegen, die datensätze "durchzunummerieren"? üblicherweise sollte eine entsprechende adresstabelle einen primärschlüssel besitze der auf einem feld liegt, welches "id" heisst - somit ist jeder datensatz eindeutig identifizierbar und ich brauch nicht irgendwelche schlüssel errechnen

      So wie ich die Ausgangssituation verstanden habe, werden Datensätze importiert und es kann vor kommen, dass zehn mal dieselbe Person importiert wird. Dann soll natürlich die Person nicht zehn Mal im System aufscheinen, sondern nur einmal.

      mfg
        frafu

      1. Hello,

        So wie ich die Ausgangssituation verstanden habe, werden Datensätze importiert und es kann vor kommen, dass zehn mal dieselbe Person importiert wird. Dann soll natürlich die Person nicht zehn Mal im System aufscheinen, sondern nur einmal.

        Sie sollte dann zehn Mal in einer Kontrollliste erscheinen, damit man bei nicht 100%iger Übereinstimmung entscheiden kann, welche Daten aus jedem Satz übernommen werden müssen. Dafür sollte eine gute Datenbanklösung ein Pflegetool zur Verfügung haben, dass die Verdichtung der Daten auch visuell unterstützt, also immer Ziel- und Quelldatensatz gemeinsam darstellt.

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
    2. was spricht dagegen, die datensätze "durchzunummerieren"? üblicherweise sollte eine entsprechende adresstabelle einen primärschlüssel besitze der auf einem feld liegt, welches "id" heisst - somit ist jeder datensatz eindeutig identifizierbar und ich brauch nicht irgendwelche schlüssel errechnen

      Wenn Du die Tabelle siehst mit der ich arbeiten soll, dann würdest Du mir eine dicke Portion Mitleid schicken:  keine ID, Adressen nicht eindeutig geschrieben (hauptstr. = hauptstr = hauptstrasse = hauptstraße). Durchnummerieren geht nicht, weil die Liste nicht sortiert ist und mehrfache Einträge derselben Person beinhaltet, die - s.o. -  auch nicht unbedingt identisch geschrieben sein müssen.

      jemand umziehen oder heiraten, selbst wenn die stadt auf die idee kommt, die straße umzubenennen, ändert sich der schlüssel

      daran habe ich noch nicht gedacht, wobei der Schlüssel für die Person bleiben könnte, weil ich ihn für nichts anderes brauche, als die Person erst mal eindeutig zu identifizieren. Der Schlüssel könnte dann trotzdem bleiben und die Person bekommt einfach die neue Adresse zugewiesen. Ich will keinen "sprechenden Schlüssel erzeugen, sondern einen eindeutigen.

      Wenn ich mal Deine Antwort prognostizieren soll: Wirf die Tabelle weg und fordere eine korrekte an! -> Geht aber nicht!

      Gruß von Paeonia

      1. Hallo!

        Wenn Du die Tabelle siehst mit der ich arbeiten soll, dann würdest Du mir eine dicke Portion Mitleid schicken:  keine ID, Adressen nicht eindeutig geschrieben (hauptstr. = hauptstr = hauptstrasse = hauptstraße). Durchnummerieren geht nicht, weil die Liste nicht sortiert ist und mehrfache Einträge derselben Person beinhaltet, die - s.o. -  auch nicht unbedingt identisch geschrieben sein müssen.

        Zeit (und Geld) investieren und die Daten mal richtig stellen. Sonst sehe ich da kaum eine Chance.
        Bei meinem letzten Arbeitgeber stand ich vor einer ähnlichen Herausforderung mit einer Marketingdatenbank. Lösung: Ich hab gekündigt und mir einen neuen Job gesucht. :-)

        mfg
          frafu

        1. Hi,

          Bei meinem letzten Arbeitgeber stand ich vor einer ähnlichen Herausforderung mit einer Marketingdatenbank. Lösung: Ich hab gekündigt und mir einen neuen Job gesucht. :-)

          Ich hoffe, daß es zu Deiner Zufriedenheit geklappt hat, aber ich habe eigentlich vor, etwas Vernünftiges aus diesem Chaos zu machen.

          Liebe Grüße von Paeonia

          1. Hallo!

            Ich hoffe, daß es zu Deiner Zufriedenheit geklappt hat, aber ich habe eigentlich vor, etwas Vernünftiges aus diesem Chaos zu machen.

            Ich hab ein bisserl übertrieben. Das war damals nicht der Grund, dass ich gekündigt habe. :-) Aber ja, es hat gepasst. Ich habs mir verbessert.

            Viel Glück.

            mfg
              frafu

          2. Hello,

            Ich hoffe, daß es zu Deiner Zufriedenheit geklappt hat, aber ich habe eigentlich vor, etwas Vernünftiges aus diesem Chaos zu machen.

            Dann noch eine Überlegung am Rande:

            Viele (Adress-)datenbanken lassen nur gerade die Eingabe von Daten zu, aber keinen Vermerk über den Zustand des Datensatzes oder dessen Herkunft. Das solltest Du bei der Gelegenheit überlegen zu ändern.

            Ein Datensatz in einer real existenten Arbeitsumgebung benötigt zumindest Merker, ob die Daten vermeindlich vollständig und richtig eingegeben worden sind, oder ob eine Nachpflege notwendig sein könnte. Markierte Datensätze zu finden ist einfacher, als falsche oder unvollständige Datensätze unter Hunderttausenden freihändig zu identifizieren.

            Liebe Grüße aus Syburg bei Dortmund

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hi,

              Viele (Adress-)datenbanken lassen nur gerade die Eingabe von Daten zu, aber keinen Vermerk über den Zustand des Datensatzes oder dessen Herkunft. Das solltest Du bei der Gelegenheit überlegen zu ändern.

              Guter Tip! Auf jeden Fall immer mit Qualitätsangabe.

              Grüße aus dem Süden von Paeonia

        2. Hallo,

          Wenn Du die Tabelle siehst mit der ich arbeiten soll, dann würdest Du mir eine dicke Portion Mitleid schicken:  keine ID, Adressen nicht eindeutig geschrieben (hauptstr. = hauptstr = hauptstrasse = hauptsgtraße).

          kenne ich. Hab' ich vor etwa einem Jahr gemacht, ca. 125.000 Datensätze einer Personendatenbank.

          Zeit (und Geld) investieren und die Daten mal richtig stellen. Sonst sehe ich da kaum eine Chance.

          Zeit und Arbeit investiert und die Daten auf Vordermann gebracht. Das hat meist nicht viel Spass gemacht (manchmal aber schon) und einiges an Zeit sowie detektivischen Fähigkeiten erfordert, aber so wurden aus 5000 verschiedenen Orten knapp 1000 ...

          Freundliche Grüße

          Vinzenz

          1. Hi Vinzenz!
             »» Zeit (und Geld) investieren und die Daten mal richtig stellen. Sonst sehe ich da kaum eine Chance.

            Darauf wirds wohl rauslaufen. Ich freue mich jetzt schon auf das Gespräch mit meinem Chef. Bin ich froh, daß ich für das Chaos nichts kann, sondern jetzt nur aufräumen soll.

            Gruß von paeonia

          2. kenne ich. Hab' ich vor etwa einem Jahr gemacht, ca. 125.000 Datensätze einer Personendatenbank.

            ich hab das auch vor einiger zeit mal gemacht - 1x eine mssql-datenbank mit etwa 30.000 datensätzen, hat etwa 2 tage gedauert und einmal 3 datenbestände zusammenführen (etwa 500.000 datensätze) hat 3 wochen gedauert :D am schluss sind 200.000 übriggeblieben ;)

            ich habs etwa so gemacht, wie tom das vorschlug

      2. Hello,

        Wenn Du die Tabelle siehst mit der ich arbeiten soll, dann würdest Du mir eine dicke Portion Mitleid schicken:  keine ID, Adressen nicht eindeutig geschrieben (hauptstr. = hauptstr = hauptstrasse = hauptstraße). Durchnummerieren geht nicht, weil die Liste nicht sortiert ist und mehrfache Einträge derselben Person beinhaltet, die - s.o. -  auch nicht unbedingt identisch geschrieben sein müssen.

        *ach Du arme schwarze Katze* (oder ist es Kater?) :-)

        Das sieht fast so aus, wie das Problem bei der Postleitzahlumstellung.
        Willst Du mittels dieses Schlüssels Doubletten finden?

        Es bietet sich wirklich an, ein extra Suchfeld aufzubauen: die (Plz, Ort,) Straße, Hausnummer  normalisieren, im zweiten Schritt dann sichtbare Doppelungen in diesen Feldern tauschen und dann darüber einen Index aufbauen, bzw. die Datei sortieren:

        • Case unsensitive Sort ermöglichen
        • alle Umlaute ersetzen
        • str., str , straße, -,  Straße usw. ersetzen gegen strasse
        • Leerzeichen rausschmeißen
        • Weitere Sonderzeichen rausschmeißen
        • usw.

        Dann ergibt sich ein vergleichbarer Straßen-String

        Unvollständige PLZs markieren

        Orte ähnlich verarbeiten, wie Strassen

        Über PLZ, Ort und Strasse einen Index (Sortierung) legen und händisch offensichtliche Fehlschreibungen extrahieren, das Suchfeld der Tabelle dagegen abgeleichen.

        Nun kannst Du an die Namen gehen...

        Es gibt auch fertige Software für solche Zwecke, aber die kostet Geld und bei lächerlichen 10.000 Sätzen und einmaliger Anwendung lohnt sich das noch nicht.

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hi Tom,

          *ach Du arme schwarze Katze* (oder ist es Kater?) :-)

          Schnurr, Schnurr, wenigstens einer hat Mitleid ;-)

          • Case unsensitive Sort ermöglichen

          erledigt

          • alle Umlaute ersetzen

          erledigt

          • str., str , straße, -,  Straße usw. ersetzen gegen strasse

          nützt nur bedingt

          • Leerzeichen rausschmeißen

          erledigt

          • Weitere Sonderzeichen rausschmeißen

          erledigt

          Dann ergibt sich ein vergleichbarer Straßen-String

          auch nicht immer
          und was ist mit falsch geschriebenen meier, meir, meyer usw.

          Unvollständige PLZs markieren

          gibts nicht

          Orte ähnlich verarbeiten, wie Strassen

          ignoriere ich

          Über PLZ, Ort und Strasse einen Index (Sortierung) legen und händisch offensichtliche Fehlschreibungen extrahieren, das Suchfeld der Tabelle dagegen abgeleichen.

          Nun kannst Du an die Namen gehen...

          jau

          Es gibt auch fertige Software

          ich google mal ...

          danke schon mal sagt paeonia

  2. Guten Morgen Ihr alle,

    Gibt es ein anerkannt sicheres Verfahren, wie ich aus Nachname, Vorname, Straße, Hausnummer, PLZ einen sicher eindeutigen Schlüssel erzeugen kann,

    Vor Jahren hatte ich die Aufgabe in einer Spedition, jeder Abladestelle eine eindeutige geografische Position zuzuordnen. Und Abladestellen wurden so notiert, wie am Telefon verstanden ...

    Wenn ich mich recht erinnere, hat eine Software von PTV, Karlsruhe, dabei geholfen. Nur mal als Tipp, in welche Richtung du suchen kannst.

    Kalle