Wolfgang: Datensätze mittels LOAD DATA INFILE... anhängen

Hallo,

ich habe folgendes Problem:

Ich habe eine aus Excel exportierte CSV (comma seperated values) Datei. In dieser Datei stehen mehrere Datensätze, die ich mittels dem Befehl LOAD DATA INFILE '$datei' INTO TABLE ... einlesen will.
Dabei sollen die bestehenden Datensätze nicht gelöscht oder überschrieben werden, also nur die neuen Datensätze an die Bestehenden anhängen.

Nun kommt aber immer die folgende SQL-Fehlermeldung:
1062: Doppelter Eintrag '1' für SChlüssel 1.

Ich vermute, dass damit der Index (PrimaryKey) der Datenbank gemeint ist. Da aber in der Datei der Index gar nicht berücksichtigt ist, sondern in der Datenbank per Autoinkrement hochgesetzt werden soll, ist mir diese Fehlermeldung spanisch.

So nun mal ein bissele Code:

$datei = "test.txt";

$sql = "LOAD DATA INFILE '$datei' INTO TABLE t_bestellung FILEDS TERIMATED BY ';' ENCLOSED BY'"'EXCAPED BY '0' LINES TERMINATED BY '\r\n'";

$result = mysql_query($sql) or die ('Unable toexecute query');
echo mysql_errno() . ": " . mysql_error() . "\n";

Die Datei hält sich an die von mir vorgegebenen Trennzeichen usw.

Ich hoffe, dass ich die Problematik genau genug beschrieben habe.

Danke Euch schon mal im Voraus.

Grüßle Wolfgang

  1. Halihallo Wolfgang

    Nun kommt aber immer die folgende SQL-Fehlermeldung:
    1062: Doppelter Eintrag '1' für SChlüssel 1.
    Ich vermute, dass damit der Index (PrimaryKey) der Datenbank gemeint ist. Da aber in der Datei der Index gar nicht berücksichtigt ist, sondern in der Datenbank per Autoinkrement hochgesetzt werden soll, ist mir diese Fehlermeldung spanisch.

    Warum? - Er _wird_ eben betrachtet. Per Default wird _jedes_ Attribut
    (Spaltenname) so übernommen, wie in der CSV definiert. Falls also
    der Primärschlüssel (in deinem Fall autoinc) das erste Feld der
    Tabelle ist, wird dorthin der erste Wert eines Datensatzes aus der
    CSV geschrieben.

    Die Datei hält sich an die von mir vorgegebenen Trennzeichen usw.

    Ja, aber keine Column List und somit wird auch die ID des Datensatzes
    aus der CSV-Datei importiert; da dieser in deinem Fall in der
    Datenbank bereits existiert, wird der Import mit einem Fehler
    quittiert.

    http://www.mysql.com/doc/en/LOAD_DATA.html
    <cite>
    By default, when no column list is provided at the end of the LOAD DATA INFILE statement, input lines are expected to contain a field for each table column. If you want to load only some of a table's columns, specify a column list:
    mysql> LOAD DATA INFILE 'persondata.txt'
        ->           INTO TABLE persondata (col1,col2,...);
    </cite>

    Du musst die Column List _genau so_ definieren, wie die Daten in
    der CSV-Datei abgespeichert sind. Falls also der Primary Key dort
    _nicht_ definiert ist, musst du diese(s) Feld(er) auch in der Column
    List auslassen. Wird in der CSV jedoch ein Primary Key definiert,
    muss dieser auch in der Column List stehen.

    Meine Frage an dich: Ist in der CSV-Datei auch der Primärschlüssel
    definiert, oder befinden sich dort nur die anderen Daten? - Im
    letzten Fall musst du der DB _genau_ sagen, welches CSV-Feld auf
    welches Attribut der Datenbank "gemapped" wird.

    Viele Grüsse

    Philipp

    1. Hallo Philipp,

      Meine Frage an dich: Ist in der CSV-Datei auch der Primärschlüssel
      definiert, oder befinden sich dort nur die anderen Daten? - Im
      letzten Fall musst du der DB _genau_ sagen, welches CSV-Feld auf
      welches Attribut der Datenbank "gemapped" wird.

      Der Primärschlüssel ist nicht definiert, da die Daten über eine Query aus einer SAP-Datenbank gelesen werden. Ich könnte zwar die Datei dann auslesen und nachträglich den Primary Key der jeweiligen Zeile voranstellen, aber ich werde auf die Methode mit der genauen Definition der Spaltn zurückgreifen, da das meiner Meinung nach sauberer programmiert ist, und vor allem übersichtlicher.

      Wenn Du da schon so fit bist:

      Gibt es eine Möglichkeit via Email, oder anders die CSV Datei ohne ftp-Client auf den Server zu schicken und den Server dann veranlassen, diese Datei auszuwerten?? Das wäre letztendlich nämlich die Königlösung für meine DB-Anwendung.

      Danke für deine schnelle Hilfe.

      Gruß Wolfgang

      1. Halihallo Wolfgang

        Der Primärschlüssel ist nicht definiert, da die Daten über eine Query aus einer SAP-Datenbank gelesen werden. Ich könnte zwar die Datei dann auslesen und nachträglich den Primary Key der jeweiligen Zeile voranstellen, aber ich werde auf die Methode mit der genauen Definition der Spaltn zurückgreifen, da das meiner Meinung nach sauberer programmiert ist, und vor allem übersichtlicher.

        Hier verstehe ich nicht genau, was du meinst. Nichts desto trotz,
        möchtest du nur neue Datensätze anfügen. Bereits bestehende sollen
        so belassen werden, wie sie sind. Um dies umzusetzen brauchst du
        _zwingend_ den Primary Key, denn nur dieser definiert den Datensatz.
        Wie willst du sonst wissen, ob der entsprechende Eintrag bereits
        existiert oder nicht?

        Als Lösung würde ich vorschlagen, dass du dir _alle_
        Attribute/Spalten über die SAP-Datenbank exportieren lässt und diese
        in MySQL über LOAD DATA INFILE mit IGNORE einpflegst. So werden über
        die ID bereits vorhandene Datensätze erkannt und _nicht_ geändert.

        Wenn Du da schon so fit bist:

        Kaffee machts möglich :-)

        Gibt es eine Möglichkeit via Email, oder anders die CSV Datei ohne ftp-Client auf den Server zu schicken und den Server dann veranlassen, diese Datei auszuwerten?? Das wäre letztendlich nämlich die Königlösung für meine DB-Anwendung.

        Natürlich, es wird hier jedoch programmiertechnische Anstrengungen
        erfordern. Bedenke jedoch in jedemfall die _Sicherheit_. Kunden oder
        andere wichtige Daten über unsichere Verbindungen oder gar
        ungeschützte Bereiche zu übertragen ist Selbstmord.

        Was willst du hier genau wissen?

        Viele Grüsse

        Philipp

        1. Hallo Philipp,

          Hier verstehe ich nicht genau, was du meinst. Nichts desto trotz,
          möchtest du nur neue Datensätze anfügen. Bereits bestehende sollen
          so belassen werden, wie sie sind. Um dies umzusetzen brauchst du
          _zwingend_ den Primary Key, denn nur dieser definiert den Datensatz.
          Wie willst du sonst wissen, ob der entsprechende Eintrag bereits
          existiert oder nicht?

          Ich habe hier die Methode angewandt, auf die Du mich verwiesen hast. Befehl sieht jetzt so aus.
          LOAD DATA INFILE '$datei' INTO TABLE t_bestellung (col2, col3 ,...)
          Ich weise jedem Feld genau zu, in welche Spalte es gehört. Der Index wird in der Datenbank dann per autoincrement erhöht.

          Gibt es eine Möglichkeit via Email, oder anders die CSV Datei ohne ftp-Client auf den Server zu schicken und den Server dann veranlassen, diese Datei auszuwerten?? Das wäre letztendlich nämlich die Königlösung für meine DB-Anwendung.

          Natürlich, es wird hier jedoch programmiertechnische Anstrengungen
          erfordern. Bedenke jedoch in jedemfall die _Sicherheit_. Kunden oder
          andere wichtige Daten über unsichere Verbindungen oder gar
          ungeschützte Bereiche zu übertragen ist Selbstmord.

          Was willst du hier genau wissen?

          Also, bei SAP kann man, wenn eine Bestellung im System getätigt wird, verschiedene Ereignisse auslösen, unter anderem, dass eine Email an eine beliebig Adresse geschickt wird und an diese eine Datei angehängt wird. Diese Email soll dann an den Server gehen und dann die im Anhang befindliche Bestellung einlesen. Die Mail könnte ich verschlüsseln, so dass man den Inhalt nicht lesen kann.

          Hinter der ganzen Sache steht folgende Überlegung. Es geht hierbei um Bestellungen, die dem jeweiligen Lieferanten online zur Verfügung gestellt wird, so dass er das Ding bearbeiten kann. Man könnte das auch über einen WebSAP-Client machen, oder einfach ein SAP-Client beim Lieferanten installieren, dass kostet aber Gebühren und manmüsste die Leute in SAP "schulen". Deshalb eine "Web-EDI"-Lösung.

          Wie hoch wäre denn der Programmieraufwandt für die E-Mail Gschichte? Wie funktioniert das ungefähr? Was dass angeht, bin ich ein echtes "Greenhorn"!
          Gibt es im Netz evtl. modifizierbaren Code dafür.

          Mal wieder ein Danke schön an Dich.

          Viele Grüße

          Wolfgang

          1. Halihallo Wolfgang

            Ich habe hier die Methode angewandt, auf die Du mich verwiesen hast. Befehl sieht jetzt so aus.
            LOAD DATA INFILE '$datei' INTO TABLE t_bestellung (col2, col3 ,...)
            Ich weise jedem Feld genau zu, in welche Spalte es gehört. Der Index wird in der Datenbank dann per autoincrement erhöht.

            Welche Daten kommen genau von SAP? - Ich hoffe, dass nur die neuen
            Daten kommen, ansonsten wird dir jeder Datensatz mehrfach in die
            Datenbank eingefügt, da die Datenbank ja ohne Primary Key gar nicht
            unterscheiden kann, welcher Datensatz bereits vorhanden ist und
            welcher nicht.

            Hinter der ganzen Sache steht folgende Überlegung. Es geht hierbei um Bestellungen, die dem jeweiligen Lieferanten online zur Verfügung gestellt wird, so dass er das Ding bearbeiten kann. Man könnte das auch über einen WebSAP-Client machen, oder einfach ein SAP-Client beim Lieferanten installieren, dass kostet aber Gebühren und manmüsste die Leute in SAP "schulen". Deshalb eine "Web-EDI"-Lösung.

            Hm. Wie läuft den nun der Datentransfer? - Von SAP nach MySQL/WebEDI
            oder von MySQL/WebEDI nach SAP oder beides? - Wenn er die
            Bestellungen ja bearbeiten können soll, sollen diese doch auch wieder
            nach SAP gespiegelt werden, oder?

            Wie hoch wäre denn der Programmieraufwandt für die E-Mail Gschichte? Wie funktioniert das ungefähr? Was dass angeht, bin ich ein echtes "Greenhorn"!

            Nun, mit PHP oder Perl liesse sich einfach ein Programm schreiben,
            welches eine Verbindung zum POP-Server aufbaut und die dort stehenden
            E-Mail abholt. Diese E-Mails können dann geparsed, die CSV-Datei
            exportiert und dann über LOAD DATA INFILE in die MySQL Datenbank
            importiert werden.

            Einlesen der Mails:
            http://pecl.php.net/package/POP3
            Parsen der angekommenen E-Mails:
            http://pecl.php.net/package/mailparse

            Dann musst du dieses Script natürlich immer starten, wenn Mails
            vorliegen. Dies liesse sich über einen cron-Job realisieren, der die
            Mail-Box alle 5 Minuten auf neue Nachrichten prüft. Vielleicht wäre
            auch eine bestimmte Konfiguration des lokalen Mailssystems möglich,
            dass dieses bei jeder Nachricht automatisch dein Parserscript
            aufruft, dies würde weniger Performance beanspruchen.

            Ich schätze den Aufwand aufgrund der vorliegenden Packages nicht für
            gross ein. Das liesse sich (ohne Wert auf Sicherheit zu legen) sehr
            schnell implementieren. Aber falls dann das Stichwort Sicherheit
            wichtig wird, gehts wieder etwas länger; hierfür würde ich dann
            http://www.gnupg.org/ empfehlen. Ein PHP-Interface zu diesem
            Kommand-Line-Tool kenne ich nicht, aber für Perl gibt es das:
            http://search.cpan.org/~ftobin/GnuPG-Interface-0.33/lib/GnuPG/Interface.pm
            Über gnuPG könntest du den Content-Bereich des Mails entschlüsseln,
            falls auf Seiten von SAP eine gnuPG taugliche _ver_schlüsselung
            überhaupt möglich ist. Falls nein: Bietet SAP auch einen handler für
            ein externes Programm an? - Falls ja, könntest du ja von beiden
            Seiten her über eigene Scripte arbeiten.

            Das einfachste wäre IMHO nicht über E-Mail, sondern über HTTPS mit
            Authentication, aber ob das von SAP her möglich ist?

            Gibt es im Netz evtl. modifizierbaren Code dafür.

            Nicht, dass ich ihn hier vorliegen hätte. Beispiele, wie man mit POP
            oder Mailparsing umgeht gibt es sicherlich genügend, aber eine
            verwandte Scriptlösung für dein spezifisches Problem kenne ich nicht.

            Viele Grüsse

            Philipp

            1. Hallo Philipp,

              Welche Daten kommen genau von SAP? - Ich hoffe, dass nur die neuen
              Daten kommen, ansonsten wird dir jeder Datensatz mehrfach in die
              Datenbank eingefügt, da die Datenbank ja ohne Primary Key gar nicht
              unterscheiden kann, welcher Datensatz bereits vorhanden ist und
              welcher nicht.

              Wie du richtig vermutet hast, werden nur neue Bestellungen eingelesen. Somit besteht auch nicht die Gefahr, dass ein Datensatz doppelt hinterlegt ist. Das funktioniert auch inzwischen bestens. Dank dafür nochmal.

              Hm. Wie läuft den nun der Datentransfer? - Von SAP nach MySQL/WebEDI
              oder von MySQL/WebEDI nach SAP oder beides? - Wenn er die
              Bestellungen ja bearbeiten können soll, sollen diese doch auch wieder
              nach SAP gespiegelt werden, oder?

              Momentan ist keine Rückspielung geplant, aber was in dem Fall in die eine Richtung geht, geht auch in die andere. Meinem momentanen Wissenstand zur Folge kann SAP mit CSV-Dateien umgehen. Also kann ich auf umgekertem Wege Änderungen via CSV-Datei ins SAP zurückschicken. Aber wie gesagt, steht das auf der To-Do Liste ganz unten.

              Nun, mit PHP oder Perl liesse sich einfach ein Programm schreiben,
              welches eine Verbindung zum POP-Server aufbaut und die dort stehenden
              E-Mail abholt. Diese E-Mails können dann geparsed, die CSV-Datei
              exportiert und dann über LOAD DATA INFILE in die MySQL Datenbank
              importiert werden.

              Das hört sich ja gut an...

              Das einfachste wäre IMHO nicht über E-Mail, sondern über HTTPS mit
              Authentication, aber ob das von SAP her möglich ist?

              Kurze Frage, was ist IMHO??

              Damit kann ich ja mal anfangen. Muss mich eh jetzt erstmal mit meinem Provider auseinandersetzten, dass er mir das file_prev für die DB gibt. Anscheinend sei das aus Sicherheitsgründen nicht möglich.

              Noch eine ganz andere Frage, ich realisiere den Zugriff über einen Login, bei dem beim User ein Cookie hinterlegt wird. Mit den entsprechenden Daten. Alle User greifen aber über den gleichen USernamen und Kennwort auf die DB zu. Bis zu wieviel USern kann das überhaupt gut gehen, oder habe ich da jetzt schon einen rießen Schnitzer rein gebaut??

              Danke schon mal.

              Gruß Wolfgang

              1. Halihallo Wolfgang

                Das einfachste wäre IMHO nicht über E-Mail, sondern über HTTPS mit
                Authentication, aber ob das von SAP her möglich ist?

                Kurze Frage, was ist IMHO??

                </faq/#Q-22>

                Damit kann ich ja mal anfangen. Muss mich eh jetzt erstmal mit meinem Provider auseinandersetzten, dass er mir das file_prev für die DB gibt. Anscheinend sei das aus Sicherheitsgründen nicht möglich.

                File_prev ist das Attribut in der mysql.users Tabelle und sagt genau
                aus, dass LOAD DATA INFILE bzw. SELECT ... INTO OUTFILE erlaubt sind.
                Diese kann man auch über
                http://www.mysql.com/doc/en/GRANT.html
                setzen. Der Befehl mapped das ganze sowieso in (u.A.) die users
                Tabelle ab.

                Falls du das überhaupt so genau wissen wolltest... :-)

                Noch eine ganz andere Frage, ich realisiere den Zugriff über einen Login, bei dem beim User ein Cookie hinterlegt wird. Mit den entsprechenden Daten. Alle User greifen aber über den gleichen USernamen und Kennwort auf die DB zu. Bis zu wieviel USern kann das überhaupt gut gehen, oder habe ich da jetzt schon einen rießen Schnitzer rein gebaut??

                Geht es dir jetzt um die Datenbank oder dein Web-Interface?
                Was willst du mit der Cookie-Authentication? - Also bei PHP kannst
                du die Cookies einfach über das Array
                http://ch.php.net/manual/de/reserved.variables.php#reserved.variables.cookies
                auslesen. Wo hast du hier ein Problem?

                Sorry, hier musst du mir noch etwas mehr schreiben, das habe ich noch
                nicht ganz verstanden was du meinst.

                Viele Grüsse

                Philipp

                1. Hallo Philipp,

                  och eine ganz andere Frage, ich realisiere den Zugriff über einen Login, bei dem beim User ein Cookie hinterlegt wird. Mit den entsprechenden Daten. Alle User greifen aber über den gleichen USernamen und Kennwort auf die DB zu. Bis zu wieviel USern kann das überhaupt gut gehen, oder habe ich da jetzt schon einen rießen Schnitzer rein gebaut??

                  Geht es dir jetzt um die Datenbank oder dein Web-Interface?
                  Was willst du mit der Cookie-Authentication? - Also bei PHP kannst
                  du die Cookies einfach über das Array
                  http://ch.php.net/manual/de/reserved.variables.php#reserved.variables.cookies
                  auslesen. Wo hast du hier ein Problem?

                  Sorry, hier musst du mir noch etwas mehr schreiben, das habe ich noch
                  nicht ganz verstanden was du meinst.

                  Erstens:

                  Ich habe wohl nicht präzise genug das Problem  beschrieben. Also:
                  Auf dem Server (das ist ein einfacher Webspace , wie man es eben kennt) liegen meine Dateien. Der User meldet sich mit Benutzerkennung und Passwort an. Ich überprüfe bei der Anmeldung Kennung und Passwort und wenn diese OK sind, dann führe ich den Befehl SetCookie(...) aus. Wenn nun der User auf die nächste Seite geht, werden jedesmal davor die Kennung und Passwort überprüft, ansonsten kommt eine Fehlermeldung. Nach einer Stunde wird das Cookie gelöscht und der USer wird ausgelogged. Das ist mal das eine. Hierzu würde ich gerne wissen, ob diese Methode so i.O. ist, oder ob das eher eine schlechte Realisierung eines Login ist. Ich hatte es davor mit Session-Variablen probiert, die wurden aber überschrieben, wenn sich zwei Benutzer angemeldet haben. Dann hat der erste plötzlich die Rechte und Daten des zweiten. Deshalb bin ich auf die Cookie-Lösung ausgewichen, die auch einwandtfrei funktioniert.

                  Zweitens:

                  In der Datenbankverbindung, die ich angebe, habe ich ja einen Benutzer, die DB selbst, und ein Kennwort, sowie der "localhost". Wenn sich nun wie oben beschrieben mehrere Benutzer gleichzeitig anmelden, greifen diese ja alle mit dem gleichen Benutzername und PSAswort auf die DB zu. Da ist jetzt meine Frage. Muss ich für jeden Benutzer der auf die DB zugreifen will auch einen Benutzer bei der DB angeben, oder können mehrere Clients gleichzeitig über den gleichen DB-Benutzernamen und Passwort auf die DB zugreifen?

                  Danke schon mal für deine Hilfe.

                  Viele Grüße,

                  Wolfgang

                  1. Halihallo Wolfgang

                    Auf dem Server (das ist ein einfacher Webspace , wie man es eben kennt) liegen meine Dateien. Der User meldet sich mit Benutzerkennung und Passwort an. Ich überprüfe bei der Anmeldung Kennung und Passwort und wenn diese OK sind, dann führe ich den Befehl SetCookie(...) aus. Wenn nun der User auf die nächste Seite geht, werden jedesmal davor die Kennung und Passwort überprüft, ansonsten kommt eine Fehlermeldung. Nach einer Stunde wird das Cookie gelöscht und der USer wird ausgelogged. Das ist mal das eine. Hierzu würde ich gerne wissen, ob diese Methode so i.O. ist, oder ob das eher eine schlechte Realisierung eines Login ist.

                    Ich halte diese Methode für OK. Es sind nur ein, zwei Sachen, denen
                    du dir bewusst sein musst:

                    - Nicht jeder hat Cookies aktiviert. Falls du eine - für alle User -
                       gute Möglichkeit haben willst, solltest du die Daten in einem
                       Sessionmechanismus speichern und die SessionID und -Key in
                       der URL auch mitschleppen.
                     - Loginname und Passwort sollten nicht im Cookie mitgesendet werden,
                       da diese dann bei jedem Request in plain/text übertragen werden.
                       Besser wäre auch hier ein Sessionmechanismus, wo die UserID und
                       dessen Passwort nur einmal übertragen wird und der User später nur
                       noch über die Sessiondaten identifiziert wird (die Session hat nur
                       eine beschränkte Gültigkeit und somit würde dem Angreifer nur für
                       eine bestimmte Zeit der Zugriff gewährt; zudem hat der Angreifer
                       das Passwort des Kunden nicht, sondern nur einen unbedeutenden
                       SessionKey).
                     - Dass der Cookie automatisch nach 1 Stunde verfällt ist alles
                       andere als sicher. Falls über den Cookie eine
                       Sessionidentifikation möglich ist, sollten die Sessiondaten
                       serverseitig (unabhängig vom Cookie) nach 1 Stunde gelöscht
                       werden.

                    Ich hatte es davor mit Session-Variablen probiert, die wurden aber überschrieben, wenn sich zwei Benutzer angemeldet haben. Dann hat der erste plötzlich die Rechte und Daten des zweiten. Deshalb bin ich auf die Cookie-Lösung ausgewichen, die auch einwandtfrei funktioniert.

                    Nun, das halte ich für einen Fehler deinerseits, denn das
                    funktioniert wunderbar. PHP generiert zu jeder Session eine SessionID
                    und einen SessionKey. Diese beiden Informationen werden entweder über
                    die URL oder über Cookies übertragen und identifizieren so die
                    Session. Eigentlich macht der Sessionmechanismus von PHP nichts
                    anderes als du auch, nur mit dem Vorteil, dass die Daten eben nicht
                    jedesmal übertragen werden, sondern in einer temporären Datei auf dem
                    Server gespeichert werden.
                    Zudem wirst auch du wohl dasselbe Problem haben, denn wenn der User
                    sich zweimal einloggt, wird der alte Cookie in jedem Fall gelöscht
                    bzw. mit den neuen Daten überschrieben.
                    Wenn dein User plötzlich mit Rechten eines anderen ausgestattet wird,
                    ist dies wohl ein Programmierfehler von dir.

                    In der Datenbankverbindung, die ich angebe, habe ich ja einen Benutzer, die DB selbst, und ein Kennwort, sowie der "localhost". Wenn sich nun wie oben beschrieben mehrere Benutzer gleichzeitig anmelden, greifen diese ja alle mit dem gleichen Benutzername und PSAswort auf die DB zu.

                    Nein tun sie nicht. Dein Script greift jedesmal mit gleichem
                    Benutzernamen und Passwort auf die Datenbank zu und das ist auch
                    in Ordnung. Das einzige was wichtig ist, ist, dass der Benutzer nie
                    selber das Passwort und Login sieht und die Datenbank Zugriffe von
                    anderen Domains als localhost ausschliesst. So müsste der Benutzer
                    erstmal Zugriff auf die Shell (z.B. auch über ein nicht sicheres
                    Script, dass Befehle auf der Shell ausführt) haben, sodass er auf
                    die Datenbank zugreifen kann.

                    Da ist jetzt meine Frage. Muss ich für jeden Benutzer der auf die DB zugreifen will auch einen Benutzer bei der DB angeben, oder können mehrere Clients gleichzeitig über den gleichen DB-Benutzernamen und Passwort auf die DB zugreifen?

                    Nein, das halte ich für sinnlos, wenn die Abbildung der User sogar
                    auf Datenbankebene erfolgt. Das einzige was du umbedingt
                    ausschliessen musst, ist, dass ein unauthentifizierter User auf deine
                    Webapplikation zugreifen kann. Eine Benutzeridentifikation auf Seiten
                    der Datenbank ist in den meisten Fällen zwecklos, da diese ja bereits
                    durch die Webapplikation erfolgen muss.

                    Die Userauthentication seitens der Datenbank ist erst dann nötig,
                    wenn die Benutzer direkten Zugriff auf die Datenbank haben, bzw. du
                    umbedingt ausschliessen musst, dass der User X auf die Tabelle Y
                    zugreifen kann (und du sogar deinem eigenen Programm kein Vertrauen
                    entgegen bringen kannst/willst).

                    Viele Grüsse

                    Philipp

                    1. Hallo Philipp,

                      danke für die Tipps. Bin jetzt erstmal im WE. Vielleicht komme ich nächste Woche nochmal auf dich zu.

                      Wünsche ein schönes WE.

                      Gruß Wolfgang