Delphi-PRAXiS

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 16: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 16: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 16: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 16: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 16: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 16: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 16: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 16: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 16: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 16: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.

SimStar001 21. Jul 2009 16:56

Re: Aufbau der Datenbank für kleines Forum
 
Oder mir fällt da gerade was ein:

Beitrag verküpft mit Thema verküpft mit Hauptkategorie

und die Tabelle mit dem Thema enthält zusätlich die UnterkategorieID um dann in der Hauptkategorie das Thema einordnen zu können.

Sollte doch gehen?

Matze 21. Jul 2009 16:59

Re: Aufbau der Datenbank für kleines Forum
 
Ich verstehe zwar nur Bahnhof :mrgreen: aber wenn du das Funktionsprinzip des erwähnten Aufbaus verstanden hast, kannst du das recht einfach auf deine Bedürfnisse/Zuordnungen anpassen.

SimStar001 21. Jul 2009 17:02

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

Ich verstehe zwar nur Bahnhof Mr. Green aber wenn du das Funktionsprinzip des erwähnten Aufbaus verstanden hast, kannst du das recht einfach auf deine Bedürfnisse/Zuordnungen anpassen.
Ok, was ich damit sagen will, ist, dass primär die Themen in die richtigen haupkategorien gesteckt werden sollen, und dann dort in die entsprechenden unterkategorien sortiert werden sollen.

DeddyH 21. Jul 2009 17:08

Re: Aufbau der Datenbank für kleines Forum
 
Mal nachdenken: dann bräuchte die Auflösungstabelle zwischen Kategorie und Unterkategorie zusätzlich einen künstlichen Primärschlüssel, den Du dann im Thema als FK verwenden kannst. Mit den beiden IDs von Kategorie und Unterkategorie wäre es ja sonst möglich, eine Kombination zu wählen, die überhaupt nicht zugeordnet ist.

SimStar001 21. Jul 2009 17:12

Re: Aufbau der Datenbank für kleines Forum
 
Mhhh,....

geht es denn nicht so, dass ich mir ersteinmal die DB nach einer Bestimmten Kategorie durchsuche und die Ergebnisse dann erneut nach Unterkategorien durchsuchen lassen? damit sollte das doch ausgeschlossen sein? oder etwa nicht?

DeddyH 21. Jul 2009 17:20

Re: Aufbau der Datenbank für kleines Forum
 
Liste der Anhänge anzeigen (Anzahl: 1)
Was soll passieren, wenn Du aus der Zuordnungstabelle einen Datensatz löschen willst?

[edit] Ich hab mal mit IBExpert ein kleines Datenmodell erstellt, dann sieht man besser, was wir meinen. [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:55 Uhr.

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