EKKi: Noch eine frage zur DB normailiserung

Beitrag lesen

Mahlzeit,

Ich wusste nicht, ob ich den Namen interpret_id aus der 1 Tabelle auch an die anderen Tabellen geben kann,

Ich würde den Primary Key einer jeweiligen Tabelle immer nur "ID" nennen - es gibt schließlich in jeder Tabelle nur eine eindeutige ID. Beim Auslesen muss man dann halt sowas wie "interpret.ID" verwenden, aber das ist ja auch sinnvoll (sonst weiß man irgendwann nicht mehr, welche ID man nun eigentlich genau ausliest). Als Foreign Key würde ich dann immer den Namen der Tabelle, auf die verwiesen wird + "_ID" (also z.B. "interpret_ID") verwenden - so ist klar, mit welcher ID ich verknüpfe.

Das ist aber mein persönlicher Ansatz - andere haben andere und meiner muss nicht zwangsläufig der beste oder sinnvollste sein. Du solltest Dir nur eben einen logischen aneignen oder selbst ausdenken, damit Du mit den ganzen IDs nicht durcheinanderkommst.

Und zurück zu Deiner "Frage": natürlich kannst Du verschiedene Spalten in verschiedenen Tabellen gleich benennen. MUSST Du sogar, wenn Du einen ähnlichen Benennungsansatz wie meinen oben skizzierten verwendest. Ist aber auch sinnvoll, weil man sofort weiß, was sich auf was bezieht.

so kam spec_id (special_id) ins Spiel, die spec_id bekommt den Wert von interpret_id.

Ein Feld sollte immer so heißen, dass sein Inhalt klar ist. Wäre in diesem Fall nicht. "spec_id" könnte mal diesen, mal jenen Wert haben. Spätestens ein halbes Jahr nach der letzten programmierten Code-Zeile weißt Du nicht mehr, was wo drin steht - und dann ärgerst Du Dich bei Wartungs- oder Erweiterungsarbeiten schwarz.

Eure vorschläge sind ja auch unbezahlbar, ich hatte die ganze zeit das Problem,
das ich unbedingt dieses Formular zur user Eingabe verwenden wollte,
das lässt sich aber auf die von mir benötigten anforderungen nicht anpassen.

Wie das Eingabeformular aussieht, hat absolut NICHTS mit der Datenstruktur zu tun. Diese solltest Du vollkommen losgelöst von dem, was der Benutzer sieht, allein auf Basis der logischen Verknüpfung der einzelnen Objekte untereinander (Interpret-Album-Titel) entwickeln.

Wie man dem Benutzer dann bequeme Eingabemöglichkeiten bietet, ist allerhöchstens zweitrangig.

Jetzt werde ich mir selbst so ein Formular basteln.

Tu das. Gerade bei Foreign-Key-Geschichten bieten sich z.B. Selectboxen (mit der ID als Wert und dem jeweiligen Namen als Anzeigetext) an - so kann der Benutzer nichts falsches eingeben und alles immer richtig zuordnen (wobei Du Dich natürlich auch dabei auf Eingaben nicht verlassen darfst - "ALL INPUT IS EVIL").

Tabelle "interpret":
ID | Name
---+-----

Tabelle "album":
ID | interpret_ID | Name
---+--------------+-----

Tabelle "titel":
ID | Name | Songtext
---+------+---------

Tabelle "album_titel":
ID | album_ID | titel_ID
---+----------+---------

Danke für deinen Vorschlag, das sieht schon besser aus, als mein derzeitiges
Konzept.

Das funktioniert im Übrigen nur, wenn jedes Album genau einen Interpreten haben kann. Wenn Du auch Alben von mehreren Interpreten abbilden willst, musst Du es natürlich folgendermaßen machen:

Tabelle "album":
ID | Name
---+-----

Tabelle "interpret_album":
ID | interpret_ID | album_ID
---+--------------+---------

Werde das ganze jetzt nochmal von vorne beginnen.

Viel Erfolg!

MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
0 46

DB Normalisieren und eine ID in 3 Tabellen speichern

Engin
  • datenbank
  1. 0
    Ilja
    1. 0

      DB Normalisieren Ok. 3 INSERT INTO ausführen Problem

      Engin
      1. 0
        Struppi
        1. 0
          Engin
          1. 0
            ChrisB
            1. 0

              3 INSERT INTO ausführen Problem auch OK.

              Engin
              1. 0
                ChrisB
                1. 0

                  LAST_INSERT_ID() bzw. mysql_insert_id() wie richtig verwenden?

                  Engin
                  1. 0
                    ChrisB
                    1. 0
                      Engin
                    2. 0
                      EKKi
                      1. 0
                        Sven Rautenberg
                        1. 0
                          EKKi
                          1. 0
                            Sven Rautenberg
                            1. 0
                              EKKi
                  2. 0
                    Struppi
                    1. 0
                      Engin
                      1. 0
                        ChrisB
                        1. 0
                          Engin
                          1. 0
                            ChrisB
                            1. 0

                              Danke!

                              Engin
                      2. 0
                        Struppi
  2. 0

    Noch eine frage zur DB normailiserung

    Engin
    1. 0
      ChrisB
      1. 0
        Engin
        1. 0
          EKKi
          1. 0
            Engin
            1. 0
              EKKi
              1. 0
                Engin
                1. 0
                  EKKi
                  1. 0
                    Engin
                    1. 0
                      EKKi
                      1. 0
                        Engin
                        1. 0
                          EKKi
                          1. 0
                            Engin
                  2. 0
                    ChrisB
                    1. 0

                      Danke! DB normailiserung schreitet voran

                      Engin
  3. 0

    PHP $_GET und sonderzeichen <>\

    Engin
    • php
    1. 0
      dedlfix
      1. 0
        Engin
        1. 0
          dedlfix
          1. 0
            Engin
            1. 0
              EKKi
              1. 0

                PHP $_GET auch gelöst

                Engin
    2. 0
      EKKi