Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Datensätze einmalig/unique machen, geht das?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    thx euch

    Kommentar


    • #17
      Dann halt noch wichtig die korrekte Verbindung beim DB öffnen nutzen (zB https://php-de.github.io/jumpto/pdo/#create-conn ) und die PHP (HTML, ...) Dateien auch alle in/als UTF-8 abspeichen und den HTTP header auch so raussenden (hier auf File-Ebene: https://stackoverflow.com/a/4279294/10537201 oder hier generell im Apachen: https://stackoverflow.com/a/9351983/10537201) , dann klappts auch mim Nachbar.
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #18
        Anhand der Daten lässt sich vermuten, das du eine Deduplizierung bzw. Adressbereinigung durchführen möchtest (z.B. für Mailtapes).

        Auf Datenbankebene wird dir "unique" auf einzelnen Spalten nicht viel nutzen, selbst zusammengesetzte unique-constraints über alle Spalten wird nur exakte Dubletten finden - bei der Adressbereinigung brauchst du aber eher eine Heuristik, die "ähnliche" findet. Je ähnlicher sich Adressen sind, desto höher ist die Warscheinlichkeit, das es ein doppelter DS ist.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #19
          Zitat von dustinator Beitrag anzeigen
          Bei meinen Datensätzen kommt es mal vor, dass sie mit einer vorherigen Abfrage gleich sind - und so wiederholt in MySQL auftauchen
          Bezogen auf deine Daten - was ist, wenn zwei Personen den gleichen Namen, das gleiche Geschlecht und den gleichen Geburtstag haben?

          Kommentar


          • #20
            Zitat von Dormilich Beitrag anzeigen

            Bezogen auf deine Daten - was ist, wenn zwei Personen den gleichen Namen, das gleiche Geschlecht und den gleichen Geburtstag haben?
            Es ist in der Tat so, daß
            1. einerseits, wie du schreibst, bei allen Spalten Identität bestehen kann, aber auch
            2. andererseits, wie @Istegelitz schreibt, auch bei nicht vorhandener "reiner" Doublette das gleich Objekt gemeint sein kann.
            Das schreit natürlich nach einem Algorithmus, der die Bereinigung durchführt.

            Aber: Warum soll eine Maschine entscheiden, ob eine Doublette vorliegt, wo ein Mensch dies doch viel besser beurteilen kann.

            M.E. sollte man das Problem da anpacken, wo es entsteht, aber eben nicht durch einen Constraint (der würde in beiden o.g. Fällen versagen), sondern durch ein Prüfung und Rückfrage bei der Eingabe. Wenn ich bei der Eingabe von Adressdaten darauf aufmerksam gemacht werde, daß es bereits einen, zwei oder mehr gleiche oder ähnliche Datensätze gibt, kann ich sofort reagieren. Der Ablauf wäre:
            • Anwendung erkennt Ähnlichkeit und macht mich darauf aufmerksam
            • Anwendung fragt, ob ich einen der "anderen" meine
            • ich kann wählen zwischen "ja, es ist ... "-> dann Auswahl aus einem Select-option-Dropdown und "nein, neuer Datensatz!"
            Wähle ich letzteres, wird der Datensatz auch dann gespeichert, wenn alle Spalten gleich sind.

            Kommentar


            • #21
              Zitat von marie123 Beitrag anzeigen
              M.E. sollte man das Problem da anpacken, wo es entsteht, aber eben nicht durch einen Constraint (der würde in beiden o.g. Fällen versagen), sondern durch ein Prüfung und Rückfrage bei der Eingabe. Wenn ich bei der Eingabe von Adressdaten darauf aufmerksam gemacht werde, daß es bereits einen, zwei oder mehr gleiche oder ähnliche Datensätze gibt, kann ich sofort reagieren. Der Ablauf wäre:
              • Anwendung erkennt Ähnlichkeit und macht mich darauf aufmerksam
              • Anwendung fragt, ob ich einen der "anderen" meine
              • ich kann wählen zwischen "ja, es ist ... "-> dann Auswahl aus einem Select-option-Dropdown und "nein, neuer Datensatz!"
              Wähle ich letzteres, wird der Datensatz auch dann gespeichert, wenn alle Spalten gleich sind.
              Prinzipiell ein vernünftiger Ansatz. Nur leider habe ich die Erfahrung gemacht, dass Menschen eher faul sind und gerne unnötige neue Einträge anlegen als sich mit dem Vergleich von alten Einträgen zu beschäftigen. Wenn das bei dir funktioniert, ist das aber natürlich wie gesagt ein vernünftiger Ansatz.

              Kommentar


              • #22
                Zitat von Dormilich Beitrag anzeigen

                Bezogen auf deine Daten - was ist, wenn zwei Personen den gleichen Namen, das gleiche Geschlecht und den gleichen Geburtstag haben?
                Das mit Namen, Geschlecht und Geburtsdatum war als einfaches Beispeuil gedacht
                eigentlich filtere ich gerade nach der Internetadresse (ein Event wird auf fremden Seiten einmalig eingepflegt) - und dieser DS soll nie doppelt auf meiner DB auftauchen
                eventuell noch nach einem Datum, aber das ist für eine andere Tabelle wichtig - wo ich jeweils ein Event der über mehrere Tage läuft in mehrere Events/DS aufteile

                @Marie,
                Diese Daten werden nur zur Analyse gebraucht - und es könnten sehr viele auftreten - z.B. in Berlin finden pro Monat 2000 Eventss statt, andere fast Städte genauso viel
                Wenn ein paar Events durch die Automatisierung durchfallen, dann ist es nicht so schlimm - ist ja kein Programm für Rakentenabschussbasen oder so ))
                Der Sachbearbeiter muss die DS danach noch selbst checken und (falls gewünscht) in eine andere DB übernehmen / oder dort freischalten

                Kommentar


                • #23
                  Aber: Warum soll eine Maschine entscheiden, ob eine Doublette vorliegt, wo ein Mensch dies doch viel besser beurteilen kann.
                  Schon richtig, aber Gegenfrage: Wie lange braucht ein Mensch wohl, um eine Sammlung von z.B. 800.000 Adressen auf Doubletten zu durchsuchen - im Vergleich zur Maschine?
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #24
                    Zitat von dustinator Beitrag anzeigen

                    Das mit Namen, Geschlecht und Geburtsdatum war als einfaches Beispeuil gedacht
                    eigentlich filtere ich gerade nach der Internetadresse...
                    Ich finde es ausgesprochen ärgerlich, wenn Fragesteller mit der wichtigen Information erst dann rüberkommen, wenn sie 20 Antworten erhalten haben. Die Email-Adresse ist immer eindeutig, ich verstehe nicht, warum du - nachdem du das ja ganz eindeutig weißt - das nicht gleich gesagt hast.

                    Ich bin raus.

                    Kommentar


                    • #25
                      Sorry Marie, ich bin noch neu hier
                      Ich dachte die Tabelle wäre entsprechend so klein das sie als Beispiel gewertet würde - hab da jetzt eine Bemerkung reingeschrieben (für zukünftige Leser)
                      Bei der Internetadresse bin ich durch euch auf die Idee gekommen nur die als unique zu setzen - wollte vorher mehrere Spalten zusammen als unique setzen - was aber für mein Projekt unnötig/überdimensioniert war

                      Kommentar


                      • #26
                        Zitat von dustinator Beitrag anzeigen
                        ..ich bin noch neu hier
                        ..Bei der Internetadresse bin ich durch euch auf die Idee gekommen nur die als unique zu setzen - wollte vorher mehrere Spalten zusammen als unique setzen - was aber für mein Projekt unnötig/überdimensioniert war
                        Am Anfang tut man sich schwer, die Tabellen und ihre Schlüssel und Fremdschlüssel festzulegen.
                        Das Ganze nennt sich Modellierung (ergibt > Datenmodell) und es lohnt sich, auf die Zusammenhänge zu schauen und die Anwendungsfälle mal mit dem gedachten Modell durchzuspielen. (Je bedeutender die Anwendung, desto mehr Zeit kann man in die Modellierung und deren Prüfung stecken)

                        "Überdimensioniert"
                        Im Sinne von "so viele Daten habe ich ja gar nicht" wäre vielleicht eine falsche Denkrichtung.
                        Ein Datenmodell kann klein und einfach sein, aber Millionen Datensätze beinhalten.

                        Ein gutes Datenmodell ist in sich stimmig, es kann komplex sein, muss aber nicht.

                        "Unique" machen
                        Unique sind idR technische Schlüssel einer Tabelle, der Primary Key z.B. Fachliche Inhalte, die im Datensatz abgebildet werden, sind es oft nicht, obwohl es so scheinen mag. Eine IP Adresse ist es zunächst schon, dafür sind sie da, das gilt allerdings nur für eine Betrachtung eines hinreichend kurzen Zeitraums.

                        Kommentar

                        Lädt...
                        X