EKKi: Noch eine frage zur DB normailiserung

Beitrag lesen

Mahlzeit,

Tu das. Gerade bei Foreign-Key-Geschichten bieten sich z.B. Selectboxen (mit der ID als Wert und dem jeweiligen Namen als Anzeigetext) an

Dann müsste ich vor dem eigentlichen Eintrag einen aufruf aus der DB machen und die Eingaben
vergleichen, also schon in der Vorschau die DB Einträge mit den User eingaben vergleichen,
wenn´s MATCH´ed, dann in die Select Box eintragen, sehe ich richtig, oder?

Öööhm - hä?

Vor dem Aufbau des Formulars liest Du einfach alle gültigen Werte aus der Datenbank aus, z.B. für das Hinzufügen von Alben:

SELECT ID, Name FROM interpret

Alle Datensätze fügst Du als <option>-Tags in eine <select>-Box und schreibst ein <input type="text"> darunter, wo der Benutzer den Namen des Albums eingeben muss.

Bei der Verarbeitung des Formulars prüfst Du, ob die von der <select>-Box übergebene "interpret_ID" gültig ist - wenn ja, fügst Du einen neuen Datensatz in die Tabelle "album" ein ... "interpret_ID" und "Name" hast Du dann ja.

Für die anderen Tabellen entsprechend.

Das werde ich mir noch überlegen müssen, ob ich es wirklich so genau haben will, zumal
sowas ja nicht oft vorkommt, das auf einem Album mehrere Interpreten sind, bzw. wenn, dann als
geschlossene Gruppe, die ja dann auch einen Namen hat. Z.b. Wu-Tang-Clan oder No Angels.

Das ist richtig. Gruppen würde ich auch als EIN Interpret behandeln. Ggf. könntest Du natürlich noch zwischen verschiedenen Interpret-Typen unterscheiden:

Tabelle "interpret":
ID | interpret_typ_ID | Name
---+------------------+--------------
...
 8 | 1                | Thomas Anders
11 | 2                | Modern Talking
15 | 2                | No Angels
47 | 1                | Dieter Bohlen
...

Tabelle "interpret_typ":
ID | Name
---+-----
 1 | Einzel
 2 | Gruppe

Dann könntest Du für die Interpreten, die eine "Gruppe" sind (also die "interpret_typ_ID" = 2 haben), die einzelnen Bandmitglieder in einer separaten Tabelle erfassen:

Tabelle "interpret_gruppe":
ID | gruppe_ID | interpret_ID
---+-----------+-------------
...
62 | 11        | 8
72 | 11        | 47
...

In diesem speziellen Fall ist es angebracht, dass ein Feld nicht so heißt, wie der Primary Key, auf den es verweist. Wie Du siehst, besteht die Zuordnung zu einer Gruppe einerseits aus der "interpret_ID" der Gruppe (in diesem Fall heißt die Spalte "gruppe_ID") und andererseits aus den "interpret_ID" der einzelnen Interpreten. So kann einerseits jede Person als Einzelinpret auftreten, andererseits lassen sich aber auch Gruppen samt all ihrer Mitglieder darstellen.

Der andere Fall wäre aber, wenn ein Album tatsächlich von verschiedenen Interpreten, die NICHT einer Gruppe angehören, stammt. Sowas wie "Wildecker Herzbuben feat. Marylin Manson". Dann müsstest Du einerseits den Interpreten "Wildecker Herzbuben" (der natürlich als Gruppe wieder aus den beiden Einzelinterpreten besteht), andererseits den Interpreten "Marylin Manson" zuordnen. Insofern wäre auch hier eine n:m-Beziehung angebracht.

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