Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Aufbau der Datenbank für kleines Forum (https://www.delphipraxis.net/137465-aufbau-der-datenbank-fuer-kleines-forum.html)

SimStar001 21. Jul 2009 15:18

Datenbank: MYSQL • Zugriff über: PHP Script

Aufbau der Datenbank für kleines Forum
 
Hallo,

ich wollte mich gerne einmal an einem kleinen Forum versuchen.
Nun habe ich da ein Problem, wie ich meine Datenbank aufbauen / strukturieren soll.

Ich habe im Prinzip für mein Forum 5 Kategorien zur Auswahl (1,2,3,4,5) und diese Kategorien können jeweils wiederum immer 4 verschiedene Unterkategorien haben, in denen dann die jeweiligen Beiträge stehen.

Hier mal eine Kleine Darstellung:
Code:
Forum
|
/----->Kategorie 1
|                |
|                /----->Unterkategorie 1 ---> Themen mit Beiträgen
|                /----->Unterkategorie 2 ---> Themen mit Beiträgen
|                /----->Unterkategorie 3 ---> Themen mit Beiträgen
|
/----->Kategorie 2
|                |
|                /----->Unterkategorie 1 ---> Themen mit Beiträgen
|                /----->Unterkategorie 2 ---> Themen mit Beiträgen
|                /----->Unterkategorie 3 ---> Themen mit Beiträgen
/----->Kategorie 3
|                |
|                /----->Unterkategorie 1 ---> Themen mit Beiträgen
|                /----->Unterkategorie 2 ---> Themen mit Beiträgen
|                /----->Unterkategorie 3 ---> Themen mit Beiträgen
|...

Jede Kategorie kann dieselben Unterkategorien enthalten, muss aber nicht alle haben.
Letzten Endes sollen die Themen mit den einzellnen Beiträgen innerhalb der Kategorie mit der richtigen Unterkategorie angezeigt werden.

Das ganze sollte man soweit ich schonmal gelesen habe mittels mehrerer Tabellen lösen, und diese dann verknüpfen.
Doch wie sollte man jetzt die Datenbank aufbauen, um am Ende dieses Ziel zu erreichen?

Matze 21. Jul 2009 15:23

Re: Aufbau der Datenbank für kleines Forum
 
Hallo,

ich würde es so machen:

Hauptkategorien:
Code:
main_id  title  ...
Unterkategorien:
Code:
sub_id  main_id  title  ...
Beiträge:
Code:
entry_id  sub_id  text  user_id  ...
Die Beiträge ordnest du den Unterkategorien über die sub_id zu. Diese wiederum sind über main_id mit den Hauptkategorien verknüpft.

Die Spalten kannst du natürlich anders benennen. Doch ich denke, so ist es recht anschaulich. Auch bist du so flexibel, was die Anzahl an Kategorien/Unterkategorien betrifft, denn diese ist offen.

Grüße, Matze

DeddyH 21. Jul 2009 15:25

Re: Aufbau der Datenbank für kleines Forum
 
Ohne groß nachgedacht zu haben:
Code:
Tabelle Kategorie:
==================
ID integer
Bezeichnung varchar(X)

Tabelle Unterkategorie:
=======================
ID integer
Kat_ID integer (FK auf Kategorie)
Bezeichnung varchar(X)

Tabelle Thema:
==============
ID integer
UKat_ID integer (FK auf Unterkategorie)
Bezeichnung varchar(x)

Tabelle Beitrag:
================
ID integer
Thema_ID integer (FK auf Thema)
Titel varchar(X)
Inhalt blob
Zeit timestamp

SimStar001 21. Jul 2009 15:31

Re: Aufbau der Datenbank für kleines Forum
 
Ok, vielen Dank

insoweit hatte ich das ganze auch gedacht. Nur wirft sich jetzt das problem auf, dass jede Hauptkategorie ja dieselbe Unterkategorie haben kann.

z.B.: Beitrag 1 --> Thema 1 --> Unterkategorie 1 --> Kategorie 1
Beitrag 4 --> Thema 2 --> Unterkategorie 1 --> Kategorie 3

Ich glaube dieses Probelm decken die beiden Vorschläge nicht ab? Oder?

DeddyH 21. Jul 2009 15:33

Re: Aufbau der Datenbank für kleines Forum
 
Meinst Du wirklich dieselbe Unterkategorie oder nur gleichlautende? Ich habe oben übringens noch einen Zeitstempel vergessen, um die Beiträge sortieren zu können, ich editier das mal.

Matze 21. Jul 2009 15:35

Re: Aufbau der Datenbank für kleines Forum
 
Stimmt. Ich sehe darin zwar keinen Sinn, aber mit einer weiteren Tabelle kannst du die Zuordnung auch realisieren:

Tabellenverknüpfungen:
Code:
main_id  sub_id
Die füllst du dann bsp. so:

Code:
main_id=1   sub_id=3
main_id=1   sub_id=4
main_id=2   sub_id=1
main_id=2   sub_id=3
Das fällt mir jetzt ohne groß nachzudenken ein.

Grüße, Matze

SimStar001 21. Jul 2009 15:40

Re: Aufbau der Datenbank für kleines Forum
 
Zitat:

Meinst Du wirklich dieselbe Unterkategorie oder nur gleichlautende? Ich habe oben übringens noch einen Zeitstempel vergessen, um die Beiträge sortieren zu können, ich editier das mal.
gibt es da nen Unterschied?

z.B. Die Unterkategorien heißen: Sonstiges, Wünsche, Fragen, Fehlerberichte.

Diese sollen ein jeder Kategorie gleich heißen, ggf. in der einen halt eine Unterkategorie weniger oder mehr... je nach dem.

Matze 21. Jul 2009 15:43

Re: Aufbau der Datenbank für kleines Forum
 
Also wenn die Namen gleich lauten sollen, dann geht bsp. mein erster Vorschlag, da die Zuordnung nicht über den Namen sondern über die ID erfolgt.
Sollen die identischen Unterkategorien (gleiche Unterkategorie-IDs) in verschiedenen Hauptkategorien zu finden sein (im Prinzip eine Mehrfachverlinkung), dann kannst du. den angesprochenen Weg über die extra Zuordnungstabelle gehen.

DeddyH 21. Jul 2009 15:44

Re: Aufbau der Datenbank für kleines Forum
 
Klar gibt es da einen Unterschied. Wenn Du "Wünsche" in der Kategorie 1 einmal in "Forderungen" umbenennen willst, kannst Du das bei unseren Vorschlägen tun, ohne dass andere Kategorien davon betroffen sind. Benutzt Du immer dieselbe Unterkategorie, wirken sich Änderungen natürlich global aus.

[edit] Außerdem ist die Zuordnung der Themen IMHO leichter zu realisieren, wenn eine Unterkategorie zu genau einer Kategorie gehört. [/edit]

Matze 21. Jul 2009 15:46

Re: Aufbau der Datenbank für kleines Forum
 
Ich vermute, er möchte nur gleiche namen verwenden können. Alles andere ergibt für mich keinen Sinn.
In dem Fall geht Deddys bzw. mein erster Vorschlag.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz