Sebastian Will: Designfragen, generelles

Beitrag lesen

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>