wie tabellen organisieren

wie tabellen organisieren

am 09.06.2006 10:54:47 von joerg p

Hallo,

mal ne Anfängerfrage:
ich baue eine Art Miniblog und habe einmal Artikel, die haben

id
datum
titel
intro
videopfad
standbilder

und Artikel die haben

id
datum
titel
intro
volltext
bild

Mache ich daraus am besten eine Tabelle, in der ich dann einfach Felder
frei lasse, oder ist es besser, drei Tabellen zu machen, die verknüpft sind?

Gruß
Jörg

Re: wie tabellen organisieren

am 11.06.2006 11:39:53 von Dominik Echterbruch

joerg pfeffer wrote:
>
> ich baue eine Art Miniblog und habe einmal Artikel, die haben
>
> id
> datum
> titel
> intro
> videopfad
> standbilder
>
> und Artikel die haben
>
> id
> datum
> titel
> intro
> volltext
> bild
>
> Mache ich daraus am besten eine Tabelle, in der ich dann einfach Felder
> frei lasse, oder ist es besser, drei Tabellen zu machen, die verknüpft
> sind?

Gemäß der Normalisierungsregeln wäre es wohl richtig, drei Tabellen zu
bauen:
artikel (id, datum, titel, intro, artikeltyp)
videoartikel (artikelid, videopfad, standbildpfad)
textartikel (artikelid, volltext, bildpfad)

Allerdings holst du dir damit sehr viel Aufwand ins Haus, weil due
entweder erst den Artikel ausliest und dann den passenden Datensatz aus
einer der beiden anderen Tabellen fischst, oder mit OUTER JOINs arbeiten
mußt. Also:

SELECT a.id, a.datum, a.titel, a.intro, a.artikeltyp,
v.videopfad, v.standbildpfad,
t.volltext, t.bildpfad
FROM artikel a
LEFT JOIN videoartikel v ON v.artikelid = a.id
LEFT JOIN tecxtartikel t ON t.artikelid = a.id

Das bedeutet für die Datenbank aber sehr viel mehr Aufwand, als ein
einfaches

SELECT id, datum, titel, intro, videopfad, standbildpfad, volltext,
bildpfad
FROM artikel

Daß hierbei NULL-Werte entstehen, ist aus meiner Sicht nicht weiter
tragisch und IMHO selbst im besten Datenbankdesign nicht zu verhindern.

Eines solltest du aber unbedingt beherzigen: speicher keine Bilder
direkt in der Datenbank, sondern immer nur die Pfade. Ein Bild aus der
Datenbank zu holen ist deutlich mehr Aufwand, als es vom Dateisystem
ausliefern zu lassen.


Grüße,
Dominik
--
Norbert Melzer in d.c.d.mysql:
F: Wie verstehe ich diese FAQ am besten?
A: Studieren Sie Datanbank-Design und lesen Sie anschliessend alles nochmal