André Laugks: Tabellenstruktur

Beitrag lesen

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