Kay2: Bilder Upload und Table Problem

Moin,

ich bräuchte eben eure Hilfe bei 2 Problemen:

  1. Soll für jeden User bei der Registrierung eine neue Tabelle in der DB erstellt werden die die ID des Users als Suffix hat (zb. table_123321). ich hab das schon mit folgendem Code probiert:
CREATE TABLE imgs_usr12322 (
imgid varchar(30),
imgdate varchar(30),
imgtype varchar(30),
);

dabei erhalte ich folgenden Fehler:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 4

Und 2. Wie kann ich es anstellen, dass das Script die Datei automatisch umbenennt und den Dateitypen danach in die ^oben^ erstellte Tabelle einträgt?

Die Website wurde in PHP geschrieben(falls relevant).

Wie löse ich die beiden Dinge am besten, bzw. was mach ich bei Nr.1 falsch?

Hoffe ihr könnt mir helfen! Danke im Voraus

MfG Kay

akzeptierte Antworten

  1. Hallo Kay2,

    1. Soll für jeden User bei der Registrierung eine neue Tabelle in der DB erstellt werden die die ID des Users als Suffix hat (zb. table_123321). ich hab das schon mit folgendem Code probiert:

    Das halte ich für eine ganz schlechte Idee. Es sollte eine Tabelle User geben und jeder User bekommt seinen eigenen Datensatz in dieser Tabelle. Zudem gibt es eine Tabelle Userimages. Beide Tabellen werden durch eine 1:n-Verknüpfung miteinander verbunden

    CREATE TABLE imgs_usr12322 (
    imgid varchar(30),
    imgdate varchar(30),
    imgtype varchar(30),
    );
    

    dabei erhalte ich folgenden Fehler:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 4
    

    Das wird wohl das Komma sein, das nichts mehr trennt.

    Bis demnächst
    Matthias

    --
    Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
    1. Hallo Matthias! Danke erstmal für die schnelle Antwort!

      Zudem gibt es eine Tabelle Userimages. Beide Tabellen werden durch eine 1:n-Verknüpfung miteinander verbunden

      Leider habe ich keine Ahnung was genau eine 1:n-Verknüpfung ist. Wäre toll wenn du mir das eben erklären könntest ;)

      Das wird wohl das Komma sein, das nichts mehr trennt

      Stimmt! Das war das Problem. Danke!

      MfG

  2. Hallo Kay2,

    ich bräuchte eben eure Hilfe bei 2 Problemen:

    1. Soll für jeden User bei der Registrierung eine neue Tabelle in der DB erstellt werden die die ID des Users als Suffix hat (zb. table_123321).

    Bitte tu das nicht. Das ist ein Anti-Pattern, dafür sind Datenbanken nicht gedacht.

    ich hab das schon mit folgendem Code probiert:

    CREATE TABLE imgs_usr12322 (
    imgid varchar(30),
    imgdate varchar(30),
    imgtype varchar(30),
    );
    

    Das Komma nach dem imgtype varchar(30) ist zuviel. Aber verwende doch lieber nur eine Tabelle nach diesem Schema:

    CREATE TABLE images (
      imgid varchar(30),
      imgdate varchar(30),
      imgtype varchar(30),
      owner_id INT NOT NULL,
      FOREIGN KEY (owner_id) REFERENCES users(user_id)
    );
    

    Und 2. Wie kann ich es anstellen, dass das Script die Datei automatisch umbenennt und den Dateitypen danach in die ^oben^ erstellte Tabelle einträgt?

    Hier verstehe ich die Problemstellung nicht.

    LG,
    CK

    1. Danke auch an dich, Christian, für die schnelle Antwort!

      Bitte tu das nicht. Das ist ein Anti-Pattern, dafür sind Datenbanken nicht gedacht.

      Was genau meinst du mit Anti Pattern? Versteh das grad nicht so ganz ;)

      CREATE TABLE images ( imgid varchar(30), imgdate varchar(30), imgtype varchar(30), owner_id INT NOT NULL, FOREIGN KEY (owner_id) REFERENCES users(user_id) );

      Was genau macht das FOREIGN KEY bzw. REFERENCES ?

      MfG Kay

      1. Hallo Kay2,

        Danke auch an dich, Michael, für die schnelle Antwort!

        Bitte? 😂

        Bitte tu das nicht. Das ist ein Anti-Pattern, dafür sind Datenbanken nicht gedacht.

        Was genau meinst du mit Anti Pattern? Versteh das grad nicht so ganz ;)

        Ein Anti-Pattern ist ein Lösungs-Ansatz, der häufig verwendet wird, den man aber nicht verwenden sollte weil er schlecht ist.

        CREATE TABLE images ( imgid varchar(30), imgdate varchar(30), imgtype varchar(30), owner_id INT NOT NULL, FOREIGN KEY (owner_id) REFERENCES users(user_id) );

        Was genau macht das FOREIGN KEY bzw. REFERENCES ?

        LG,
        CK

        1. Hallo Christian Kruse,

          Im OP steht was von MariaDB. Aber ich befürchte, es braucht einen DB-Grundlagenkurs.

          Bis demnächst
          Matthias

          --
          Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
          1. Hallo Matthias,

            Im OP steht was von MariaDB.

            MariaDB ist 100% rückwärtskompatibel. Das ist also in diesem Fall nicht so wichtig.

            LG,
            CK

            1. Hallo Christian Kruse,

              MariaDB ist 100% rückwärtskompatibel. Das ist also in diesem Fall nicht so wichtig.

              Und zudem kann ich mir nicht vorstellen, dass sich das Fremdschlüssel-Konzept zwischen den verschiedenen DBMS wesentlich voneinander unterscheidet.

              Bis demnächst
              Matthias

              --
              Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
        2. Hallo Christian^^

          Ein Anti-Pattern ist ein Lösungs-Ansatz, der häufig verwendet wird, den man aber nicht verwenden sollte weil er schlecht ist.

          Inwiefern denn schlecht?

          Danke für die Links! ;)

          K2

          1. Hallo Kay2,

            Ein Anti-Pattern ist ein Lösungs-Ansatz, der häufig verwendet wird, den man aber nicht verwenden sollte weil er schlecht ist.

            Inwiefern denn schlecht?

            • keine referentielle Integrität der Daten
            • Tabellen haben erhöhten Verwaltungsoverhead
            • der Code wird schwerer nachvollziehbar, weil die Komplexität steigt
            • grundlegende Mechanismen der Datenbank greifen nicht mehr
            • Queries, die mehr als einen User betreffen, sind kompliziert und unübersichtlich
            • Änderungen an der Tabellen-Struktur müssen an jeder Tabelle vorgenommen werden - was auf lange Sicht mit Sicherheit einen Schuss in den Fuß bedeutet

            Das fällt mir dazu ein ohne groß darüber nachzudenken, wobei ich mir sicher bin, dass es noch mehr Probleme gibt, etwa ein etwaiges oberes Limit an Tabellen.

            LG,
            CK

      2. Hallo,

        Bitte tu das nicht. Das ist ein Anti-Pattern, dafür sind Datenbanken nicht gedacht.

        Was genau meinst du mit Anti Pattern?

        etwas, das man bitte auf keinen Fall tun sollte. So wie Tipp-Ex am Bildschirm.

        CREATE TABLE images (
        imgid varchar(30),
        imgdate varchar(30),
        imgtype varchar(30),
        owner_id INT NOT NULL,
        FOREIGN KEY (owner_id) REFERENCES users(user_id)
        );
        

        Was genau macht das FOREIGN KEY bzw. REFERENCES ?

        Nach meinem Verständnis gibt man damit an, dass für images.owner_id und users.user_id ein gemeinsamer Index erzeugt wird.

        So long,
         Martin

        --
        Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
        - Douglas Adams, The Hitchhiker's Guide To The Galaxy
        1. Hallo Martin,

          Was genau macht das FOREIGN KEY bzw. REFERENCES ?

          Nach meinem Verständnis gibt man damit an, dass für images.owner_id und users.user_id ein gemeinsamer Index erzeugt wird.

          Foreign Keys haben mit Indizes erstmal nichts zu tun. Aber siehe auch.

          LG,
          CK

          1. Hallo,

            Was genau macht das FOREIGN KEY bzw. REFERENCES ?

            Nach meinem Verständnis gibt man damit an, dass für images.owner_id und users.user_id ein gemeinsamer Index erzeugt wird.

            Foreign Keys haben mit Indizes erstmal nichts zu tun.

            okay. Ich wusste es nicht und habe nachgeschlagen, und so beschreibt es ein kleines MySQL-Taschenbuch in ganz knappen Sätzen, das "zufällig" neben mir im Regal steht.

            Aber siehe auch.

            So long,
             Martin

            --
            Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
            - Douglas Adams, The Hitchhiker's Guide To The Galaxy
  3. Hallo Kay2,

    1. Soll für jeden User bei der Registrierung
    CREATE TABLE imgs_usr12322 (
    imgid varchar(30),
    imgdate varchar(30),
    imgtype varchar(30),
    );
    

    Was sind denn das überhaupt für Bilder? Von der Antwort hängt auch die Struktur der Datenbank ab. Kann jeder Nutzer nur genau ein Bild haben? Warum sind Datum und Typ wichtig?

    Bis demnächst
    Matthias

    --
    Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
    1. @Matthias:

      Was sind denn das überhaupt für Bilder? Von der Antwort hängt auch die Struktur der Datenbank ab. Kann jeder Nutzer nur genau ein Bild haben? Warum sind Datum und Typ wichtig?

      Profilbild, Fotos die in nen Post eingebunden werden usw.

      Mfg K2