Hallo!
Ich stehe gerade etwas bezüglich einer "Tabellenstruktur" auf dem schlauch.
Es sollen auf der Webseite Dateien (gif, jpg, pdf) geuploadet werden können.
// Objekt
obj_id name
1 xyz
2 abc
3 fgh
!! Ein Objekt (obj_id) kann mehrere Dateien (dat_id) haben.
Als erstes habe ich mir folgende Struktur übelegt.
//datei
dat_id INT
obj_id INT
datei_thumb VARCHAR (1243.gif)
datei_foto VARCHAR (12478.gif)
datei_pdf VARCHAR (457.pdf)
beschr VARCHAR
rang INT
// Beispiel
dat_id obj_id datei_thumb datei_foto datei_pdf beschr
125 2 1458.gif 368.gif NULL blabla
126 2 NULL 1487.jpg NULL NULL
127 1 NULL NULL 399.pdf blabla
Mit dieser Struktur habe ich sehr kurze SQL-Statements. Es kann zu sehr vielen NULL-Feldern kommen, weil es zu einem Thumbnail kein Foto geben muß und umgekehrt. Zu einem Thumbnail und Foto gibt es auch keine PDF-Datei. Zu einer PDF-Datei muß es kein Foto geben.
Es ist nicht mit zu rechnen, daß ein weitere Dateiart hinzu kommt. Es ist davon auszugehen, daß die Tabelle nicht mehr als 5000 Datensätze bekommen wird, also nicht gerade viel.
Als alternative Struktur habe ich mir folgende ausgedacht. Besteht fast nur aus dem Typ INT und Enum, also schnelle Spaltentypen und wenig Speicherplatz. Die eine VARCHAR-Spalte wird die Geschwindigkeit wieder runter ziehen. Diese Struktur bedeutet natürlich lange LEFT JOINs und somit Geschwindigkeitseinbußen.
// Tabelle datei
dat_id INT
obj_id INT
beschr VARCHAR
rang
// Tabelle datei_thumb
dat_id INT
datei INT
typ ENUM('gif', 'jpg');
// Tabelle datei_foto
dat_id INT
datei INT
typ ENUM('gif', 'jpg');
// Tabelle datei_pdf
dat_id INT
datei INT
MfG, André Laugks
L-Andre @ gmx.de