hotti: MySQL 5.0 - Tabellenlayout

Beitrag lesen

moin Gunther,

Deshalb möchte ich diese Tabelle ja auch möglichst "klein" halten.

Ja, sollte die, ist bei mir auch so.

Ich brauche sie lediglich dazu, um herauszufinden ob es eine angeforderte (normale) Seite gibt, und wenn ja, welche ID (dient als interne Kurz-Bezeichnung) die angeforderte Seite hat.

Wie schon gesagt, wenn es nur _eine_ Spalte gibt für descr, kann die mit rein in die Haupttabelle, nennen wir die URLs. Aber wenn es mehrere Felder geben sollte hinsichtlich Beschreibung, geht die Normalisierung dahin, diese Daten in eine DetailTabelle auszulagern.

Alle anderen von dir auch aufgezählten Infos kommen in eine/ mehrere andere Tabelle/n.

Der übliche Weg zur Normalisierung nach Codd...

Das auto_increment Feld 'url_id' dient, wenn du so willst, nur meiner Bequemlichkeit, weil ich dadurch in den Fällen wo es bspw. einen 'status' 301 gibt, bei der erneuten Abfrage dann direkt mit der url_id arbeiten kann und nicht die 'res_url' vewenden muss (selbiges gilt für evt. Einträge in 'status_add').

Ich schreib einfach mal, wie ich das mache: Ein Request erzeugt serverseitig die Variable REQUEST_URI. Das ist bei mir der Primärschlüssel in 2 Tabellen, die heißen bei mir "public" und "content".

Als Erstes schaut das Script, was per rewrite angezogen wird, ob es für REQUEST_URI in der Tabelle "public" einen Eintrag gibt und schaut auch nach Last-Modified sowie nach weiteren Attributen die für die angeforderte Seite in Tabelle "public" hinterlegt sind. Daraus ergeben sich die Stati 200 oder 410 oder 304.

Status: 200 OK
Mein Script holt für REQUEST_URI den body aus der Tabelle "content" und liefert die Seite komplett neu aus. Im Header wird Last-Modified mitgegeben

Status: 304 Not Modified
Der Webserver bricht das Senden der Seite ab, da bei Besucher im Cache. Der vom Browser mitgegebene Last-Modified stimmt mit dem Wert in Table "public" überein. Mein Script sendet ebenfalls einen 304 an den Webserver und beendet sich ohne die Tabelle "content" anzufassen.

Status: 410
Die angeforderte URL ist nicht in Tabelle "public". Mein Script sendet einen 410 Gone und beendet sich.

Status: 404
Wird vom Webserver selbst abgehandelt, kommt gar nicht erst zu Rewrite.

Status: 302/301
Benutze ich gerne in diversen anderen reinen CGI-Scripts für das Transit-State Model.

Schönes Wochenende,
Horst Hagebau