Ich möchte mir privat eine kleine CD-Datenbank mit PHP und MySQL erstellen.
Mein Problem liegt bei dem Feld für Inhalt. Hier möchte ich dann wahrscheinlich ein Array anlegen, um z.B. einzelne Programme bzw. Tracks einer Musik CD
speichern zu können. Aber welchen Typ muss ich dann für diese Spalte nehmen? ENUM und SET verstehe ich leider noch nicht wirklich. :-( Habe aber das Gefühl,
dass es eins davon sein müsste. Oder irre ich mich da vollkommen?
Ja, Du irrst :) Mit ENUM und SET kannst Du nur vorgegebene Werte angeben, ENUM ist eine Aufzählung, SET ist ein Satz Daten.
Unter ENUM kannst Du Dir zum Beispiel Farben vorstellen: Du definierst die Farbwerte "rot", "grün" und "blau" und kannst dann im entsprechenden Feld eines Datensatzes einen dieser drei Farbwerte angeben.
Genau genommen könnte man auch Typen wie INT als Untergruppe von ENUM ansehen, denn bei INT kannst Du auch nur einen Wert aus einer Gruppe von Werten (z.B. -128 bis +127) angeben. Die INT-Familie ist also gewissermaßen eine vordefinierte Gruppe von ENUMs.
Ein SET ist grundsätzlich ein Feld, in dem man mehrere Werte ein- oder ausschalten kann, im Englischen sagt man zu diesen Werten manchmal auch "flags", eher bekannt ist Dir sicherlich die Bezeichnung "bit".
Du kannst also beispielsweise einen SET-Typ definieren, der die Bits "Mehl", "Zucker", "Eier" und "Butter" vorgibt. Im Datensatz-Feld könnte es dann heißen "Mehl,Zucker,Eier" oder "Mehl, Butter" oder "Eier, Zucker".
Wie Du siehst, hat das alles nichts mit Deinem Problem zu tun, Du könntest höchstens für den CD-Medientyp ein ENUM benutzen. Für den Inhalt hingegen greift etwas, was sich hinter dem Wörtchen "relational" versteckt. Dieses Attribut bedeutet, daß Datensätze aus verschiedenen Tabellen in Verbindung (in Relation) miteinander stehen. Normalerweise bekommt dafür jeder Datensatz in Tabelle A eine eindeutige Kennung ("ID") und bei jedem dazugehördenden Datensatz aus Tabelle B wird diese Kennung ebenfalls eingetragen, so daß man alle Datensätze aus Tabelle B (die Titel einer Musik-CD) dem Datensatz aus Tabelle A (Name der CD, Gesamtlänge, Typ) zuordnen kann.
Du legst Dir also zwei Tabellen an, eine für die allgemeinen CD-Daten und eine weitere für die CD-Inhalte. Erstere mit den allgemeinen Daten hast Du Dir schon ausgedacht. Den Datensätzen in der zweiten Tabelle verpasst Du (neben den anderen Daten wie Einzeltitel und seine Position) ein Feld, in das Du die ID des jeweiligen CD-Datensatzes aus der ersten Tabelle einträgst.
Gruß,
soenk.e