1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Allgemeine Frage zu mySQL und Datenbankeinträgen

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von Andreas B., 9 August 2017.

  1. Andreas B.

    Andreas B. Benutzer

    Hallo mySQL-Freunde,

    als Anfänger habe eine allgemeine Frage, deren Beantwortung für euch sicher ein Klacks ist :)

    Ich habe eine mySQL-Tabelle mit ca. 10.000 Personen-Datensätzen (es geht um Prominente). Die Felder heißen id, name, sternzeichen, etc. Die Tabelle lese ich in PHP aus und generiere so für jede Person einen kleinen Mini-Steckbrief auf meiner Homepage. Das klappt soweit ganz gut.

    Nun möchte ich den Steckbrief um Bilder sowie die zugehörigen Lizenzangaben erweitern. Dazu habe ich mir ein Script geschrieben, welches die frei verfügbaren Wikipedia-Bilder bzw. die Links dazu ausliest.

    Angenommen, es gibt für jede Person zehn verfügbare Bilder, und zu jedem Bild drei Lizenzangaben wie 1) Dateiname, 2) Autor und 3) Lizenz. Wie handhabt man da die neuen Datenbankeinträge am besten? Die bestehende Tabelle erweitern, wenn ja, wie? Eine neue Tabelle anlegen? Wie gesagt, es handelt sich um einige Tausend Einträge, die jeweils vervollständigt werden sollen.

    Ich bin absoluter Anfänger, was das angeht. Ich hätte jetzt einfach für jede Person vier zusätzliche Felder angelegt (url, dateiname, autor, lizenz) und dort die ausgelesenen Daten hintereinander eingefügt, getrennt mit einem Separator.
    Beim Datenbank-Auslesen hätte ich dann die Strings wieder mit explode zerlegt. Das ist wahrscheinlich nicht das gelbe vom Ei, oder?

    Vielen Dank im voraus für eure Antworten :)

    Gruß, Andreas
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Jepp. Ich gehe davon aus, daß in der jetzigen Tabelle id ein Primary Key ist. Du legst eine Detailstabelle an, wo Du zu jeder id 1 oder mehrere Detaildatensätze mit jeweils einem Foreign Key auf die Mastertabelle anlegen kannst. Diese Datensätze enthalten dann die Details wie Dateiname, Autor, Lizenz. Sollten diese Merkmale nicht starr sein böte sich ein Datentyp wie JSON an, was MySQL aber nicht kann.
     
  3. Andreas B.

    Andreas B. Benutzer

    Hallo und vielen Dank schon mal :)

    Leider habe ich das ganze nicht so recht verstanden. Könntest du die Vorgehensweise noch etwas präszisieren?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# create table master(id int primary key, name text);
    CREATE TABLE
    test=*# create table detail (master_id int references master, datei text);
    CREATE TABLE
    test=*# insert into master values (1, 'name1');
    INSERT 0 1
    test=*# insert into master values (2, 'name2');
    INSERT 0 1
    test=*# with id as (select id from master where name = 'name2') insert into detail select id.id, 'pfad zum bild' from id;
    INSERT 0 1
    test=*# select * from master ;
     id | name  
    ----+-------
      1 | name1
      2 | name2
    (2 Zeilen)
    
    test=*# select * from detail ;
     master_id |  datei   
    -----------+---------------
      2 | pfad zum bild
    (1 Zeile)
    
    test=*#
    
    So kannst Du zu jedem Eintrag in der master-Tabelle beliebig viele Details speichern.
     
  5. Andreas B.

    Andreas B. Benutzer

    Super, vielen Dank!!!
    Ich werde mal versuchen, ob ich das hinkriege :)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden