Johnny B.: Dateneingabe bei normalisierter DB

Hallo geehrtes Forum,

den Sinn und Zweck einer Normalisierung habe ich verstanden. Nun stehe ich vor einem simplen praktischen Problem, und ich hätte gerne Ratschläge aus der Praxis:

Nehmen wir eine Tabelle Buch und eine Tabelle Autor. In der Tabelle Buch steht in einer Spalte autor_id die ID des Autors. Die Daten des Autors finden sich in der Tabelle Autor.

Wenn ich jetzt ein Buch manuell hinzufügen will, also per phpmyAdmin in die Tabelle einfügen, dann müßte ich mir, um die ID des Autors herauszufinden, entweder die Tabelle Autor ausdrucken oder jedesmal eine Abfrage an phpmyAdmin machen, ob der Autor bereits angelegt ist und welche ID er hat. Scheint mir ein Nachteil der Normalisierung zu sein, wenn nicht...

...ja wenn es da nicht vielleicht irgendwo noch einen Trick gibt, daß ich als Wert in das Feld Autor eine Syntax eingeben kann, die automatisch die ID des Autors heraussucht, sozusagen ein SELECT während der Dateneingabe. Gibt es sowas?

Wie macht man es, wenn man eine komplexere Datenstruktur mit mehreren Abhängigkeiten hat? Manuelle Abfragen und Nachgucken können meines Erachtens auch eher Fehler produzieren als direktes Abarbeiten durch die DB selbst. Aus einer 14536 wird schnell mal eine 14563 und dann hat auf einmal Stephen King 'Wie man Freunde gewinnt' und Dale Carnegie 'Shining' geschrieben.

Besten Gruß
JOhnnY

  1. Hi,

    Wenn ich jetzt ein Buch manuell hinzufügen will, also per phpmyAdmin in die Tabelle einfügen, dann müßte ich mir, um die ID des Autors herauszufinden, entweder die Tabelle Autor ausdrucken oder jedesmal eine Abfrage an phpmyAdmin machen, ob der Autor bereits angelegt ist und welche ID er hat. Scheint mir ein Nachteil der Normalisierung zu sein, wenn nicht...

    Nein, es ist ein Nachteil des Werkzeugs, welches du zum Anlegen neuer Datensätze gewählt hast.

    PMA ist für sowas nicht gedacht; betrachte es eher als Test- und Verwaltungstool.

    ...ja wenn es da nicht vielleicht irgendwo noch einen Trick gibt, daß ich als Wert in das Feld Autor eine Syntax eingeben kann, die automatisch die ID des Autors heraussucht, sozusagen ein SELECT während der Dateneingabe. Gibt es sowas?

    Es ist Aufgabe deiner Applikation, die du zum Aufnehmen neuer Datensätze bereitstellst, sich um so etwas zu kümmern.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. Hallo,

    den Sinn und Zweck einer Normalisierung habe ich verstanden. Nun stehe ich vor einem simplen praktischen Problem, und ich hätte gerne Ratschläge aus der Praxis:

    Nehmen wir eine Tabelle Buch und eine Tabelle Autor. In der Tabelle Buch steht in einer Spalte autor_id die ID des Autors. Die Daten des Autors finden sich in der Tabelle Autor.

    wir lassen mal den Fall, dass ein Buch mehrere Autoren kann, außer Acht.

    Wenn ich jetzt ein Buch manuell hinzufügen will, also per phpmyAdmin in die Tabelle einfügen, dann müßte ich mir, um die ID des Autors herauszufinden, entweder die Tabelle Autor ausdrucken oder jedesmal eine Abfrage an phpmyAdmin machen, ob der Autor bereits angelegt ist und welche ID er hat.

    Letzeres. Ja. Und wenn er noch nicht angelegt ist, dann ist er anzulegen.

    Scheint mir ein Nachteil der Normalisierung zu sein, wenn nicht...

    Selbstverständlich bringt die Normalisierung Dir auch Nachteile mit.

    ...ja wenn es da nicht vielleicht irgendwo noch einen Trick gibt, daß ich als Wert in das Feld Autor eine Syntax eingeben kann, die automatisch die ID des Autors heraussucht, sozusagen ein SELECT während der Dateneingabe. Gibt es sowas?

    Ja. Du kannst in SQL an nahezu jeder Stelle Daten durch eine Abfrage ersetzen, die die Daten liefert. Ob das von Dir verwendete Datenbankmanagementsystem dies unterstützt, ist eine andere Geschichte. MySQL kann es in manchen Fällen (noch) nicht.

    Praktisch kannst Du die Aufgabenstellung entweder mit dem API-Framework Deiner Wahl oder einer Stored Procedure lösen.

    Freundliche Grüße

    Vinzenz