Hi Forum,
ich bin gerade dabei, etwas in Richtung PHP/MySQL zu planen und irgendwann später auch zu realisieren. Ganz grob gesagt ist es ein kleines Autorensystem für's Web, bei dem beliebig viele Nutzer lesen und einige ausgewählte auch eigene Artikel verfassen dürfen. Da ich nicht allzuviel Erfahrung in Sachen Datenbankdesign habe, wollte ich euch gerne meinen Entwurf vorstellen, um so ein paar Meinungen einzufangen.
Zuerst noch eine Frage vorweg: Macht es Sinn, für Artikel ein einziges Feld variabler Länge (varchar) zu belegen oder ist dadurch der Speicherbedarf zu groß? In diesem Feld soll der Artikel in gekennzeichneter Form ( XML) vorliegen, daß dann per PHP in die Seiten eingefügt wird, große Artikel sollen auf mehrere Seiten aufgeteilt werden. Ist es in diesem Fall besser, die einzelnen Seiten in der Datenbank zu speichern, als den gesamten Artikel in einem Feld? Welche anderen Lösungsvorschläge für dieses konkrete Problem gibt es?
* Usertabelle
name type
------------------------------------
id smallint, auto-increment, NOT NULL
name varchar(20), NOT NULL
vorname varchar(20), NOT NULL
email varchar(40), NOT NULL
passwort varchar(10), NOT NULL
last-login date
logins smallint
newsletter boolean, NOT NULL
interessen varchar(100), NOT NULL [Bsp.: 'XML=32:Design=123:Jobs=3']
* Roles
name type
------------------------------------
id smallint, auto-increment, NOT NULL
user smallint, NOT NULL
area varchar(20), NOT NULL
role char(1) ['e' = Editor, 'a' = Administrator], NOT NULL
* Artikel
name type
------------------------------------
id smallint, auto-increment, NOT NULL
autor smallint, NOT NULL
text varchar(10000), NOT NULL
hits smallint
bewertung float [Bsp.: 123.3 = 123 Bewertungen, Durchschnittsnote: 3, ob's float in MySQL gibt, muß ich nochmal nachlesen, also keine Kommentare darüber, equivalentes gibt es sicher und deshalb an dieser Stelle auch nicht weiter wichtig]
rubrik smallint, NOT NULL
* Rubriken
name type
------------------------------------
id smallint, auto-increment, NOT NULL
name varchar(20), NOT NULL [Bsp.: 'XML']
super smallint [ID der Vater-Rubrik, Root ist [0, 'HOME', NULL]
* Bilder
name type
------------------------------------
id smallint, auto-increment, NOT NULL
url varchar(50), NOT NULL
alt varchar(50)
* Links
name type
------------------------------------
id smallint, auto-increment, NOT NULL
url varchar(100), NOT NULL
alt varchar(50)
Ich weiß, daß das hier kein Crashkurs in Sachen Datenbankdesign sein kann. Vielleicht kann mir der ein oder andere aber doch einen Tip aus der Praxis liefern. Vielen Dank schonmal und
<mfg>Sebastian Will</mfg>