Datenabankstruktur für ein Forum (MySQL)

Alles rund um die Software-Entwicklung: Programme, Skripte, Projekte etc.
Antworten
Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Datenabankstruktur für ein Forum (MySQL)

Ungelesener Beitrag von varmandra » 05.01.2012, 17:20

Hallöschen ich bins mal wieder...

Ich hab im moment mit einem Freund in der Planung ein Forum selber zu schreiben.

Beim Überlegen wie wir die Datenabnk aufbauen sind wir darüber gestolpert wie man die ganzen Aufbau für den Bereich für die Kategirien, Unterforen, Beiträge macht. Unser erster Gedanke war das man für jede Kategorie, Unterforum, Thema eine eigene Tabelle bekommt, haben das aber schnell wieder verworfen, da ja in Forum wo mehr los ist sehr schnell Millionen an Tabellen enstehen.
Jetzt ist unsere Überlegung eine Übersichtstabelle die wegen Unterforen und Themen mit sich selbst verknüpft ist und eine Tabelle wo dann sämtliche Beiträge landen.

Um da mal zu schauen wie andere das gemacht haben haben wir uns mal die Datenbank von smf-Forum angeschaut, das sind aber alle nur einzelen Tabellen ohne jegliche Verknüpfungen und dort sind alle Kategorien in eine Tabelle die Foren in einer anderen, Themen auch und die Beiträge in einer weiteren. In der Foren Tabelle sind dann sämtliche angaben drin wie, Kategorie, Reihenfolge, Berechtigungen, Name, Beschreibung. Wobei bei Berechtigung mehrere durch Komma getrennt werden.

Ich weis das es viele Wege nach Rom gibt, hat jemand da vieleicht einen anderen Ansatz, bzw. kann aus Erfahrung von Vorteile oder Nachteile bei solchen Strukturen berichten.

BdT
Varmandra
Zuletzt geändert von varmandra am 05.01.2012, 17:24, insgesamt 2-mal geändert.

Benutzeravatar
Soulprayer
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 12842
Registriert: 01.07.2004, 20:42
Wohnort: Solingen

Re: Datenabankstruktur für ein Forum (MySQL)

Ungelesener Beitrag von Soulprayer » 05.01.2012, 19:54

Hm, nur mal als Ansatz, wie ich das machen würde im Quick 'n Dirty Verfahren:

1. Sektion - Userverwaltung
Tabellenverknüpfung: User -> UserVerwaltung -> Verwaltung; UserVerwaltungsRechte -> Rechte -> ForumRechte

Ein User gehört zu einer Userverwaltung, dessen Recht als "Posten" in der Verwaltung hängt und entsprechend Forumrechte hat. Die Verwaltung wäre bspw anhand dieses Forums (phpbb) der Persönliche Bereich. Das kann man weiter aufdröseln.

2. Sektion - Forum
(Forum <-> Forum ) -> ForumsBeiträge (-> UserBeitrag)

So in etwa, wobei ein Forum abstrahiert werden kann als Unterforum, worin wiederum Userbeiträge dran hängen.

Janz wichtig: Ihr solltet Euch mit Datenbankmodellierung und -normalisierung auseinandersetzen, dieses komischen Rechteverfahren, das Du genannt hast, gehört imho in die Tonne.
Zuletzt geändert von Soulprayer am 05.01.2012, 20:00, insgesamt 1-mal geändert.
Ich bin ein UFO - ein unheimlich faules Objekt.

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Datenabankstruktur für ein Forum (MySQL)

Ungelesener Beitrag von varmandra » 06.01.2012, 12:33

Ja Quick 'n Dirty trifft es, warte schon auf den erstan Kontakt zwischen Datanbank und Funktionsliste, da wird sicher noch mal umgebaut werden.

Meinst du mit Rechteverfahren jenes:
Wobei bei Berechtigung mehrere durch Komma getrennt werden.
Genau das wollen wir auch nicht haben, Datenbankmodellierung und -normalisierung ist uns bekannt und konnten wir bisher auch recht gut einhalten, bei einem anderem Projekt (Film Datenbank)
(Forum <-> Forum ) -> ForumsBeiträge (-> UserBeitrag)
ForumsBeiträge wären dann die Themen im Forum?

Wir danken dir schon mal, das hat uns gezeigt das wir mit unseren Ideen schon mal in die richtige richtung gehen.

BdT
Frank

Benutzeravatar
fassy
Vice Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 5855
Registriert: 26.01.2004, 20:44
Wohnort: Hamburg

Re: Datenabankstruktur für ein Forum (MySQL)

Ungelesener Beitrag von fassy » 06.01.2012, 12:58

Kannst dich ja mal hier inspirieren lassen:

http://schemabank.com/p/iAnac

Und wie Soul schon sagte:

Normalisierung!!! In der Regel reicht aber 3NF. Mehr ist in der Regel nicht mehr sinnvoll.

Sehr wichtig ist auch sich mit den Indexstrukturen und Query Optimization auseinander zu setzten und somit Anfänger Fehler a la "SELECT ... FROM ... WHERE field LIKE '%XYZzu vermeiden. Hilfreich ist dabei der SQL Explain Plan.
Pick up the hammer... pick it up.

Benutzeravatar
Soulprayer
Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 12842
Registriert: 01.07.2004, 20:42
Wohnort: Solingen

AW: Datenabankstruktur für ein Forum (MySQL)

Ungelesener Beitrag von Soulprayer » 06.01.2012, 13:10

Hm, ein beitrag hat seine id und eine referenz id denke ich mal. Wen diese referenz id nicht ausgefüllt ist, wird es der erste beitrag sein.
Select * from beitraege where id_reply_to is null order by dat_datum limit 10
Fällt mir spontan gerade beim mittag essen ein :)
Ich bin ein UFO - ein unheimlich faules Objekt.

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Datenabankstruktur für ein Forum (MySQL)

Ungelesener Beitrag von varmandra » 06.01.2012, 13:46

Danke für die Übersicht vom phpBB, sind mir gleich ein paar sachen ins Auge gefallen an die ich bisher gar nicht gedacht hatte.

Groß an die SELECT Befahle haben wir noch nicht gedacht, im moment geht es uns erstmal darum halt ein Forum in der Datenbank abzubilden, dann halt Stück für Stück in php die Module zu schreiben, wo die Frage dann ist, was soll das Forum alles können, bzw. wie erweiterbar wird es, wenn überhaupt und parallel dazu muss das ganze dann ja noch alles hübsch in einer Seite verpackt werden.

An diesem Wochenende ist wieder Treffe, wo dann halt wieder Einzelideen zusammen gepackt werden...

Betreff Normalisierung in der anderen Datenbank haben wir auf alle Fälle NF3 erreicht, wobei ich nicht ausschließen möchte ob wir da nicht doch Stellenweise drüber hinaus geschoßen sind, war nicht ganz meine Baustelle.

BdT
Frank

Benutzeravatar
fassy
Vice Admiral
Turtleboard Veteran
Turtleboard Veteran
Beiträge: 5855
Registriert: 26.01.2004, 20:44
Wohnort: Hamburg

Re: Datenabankstruktur für ein Forum (MySQL)

Ungelesener Beitrag von fassy » 08.01.2012, 05:58

Naja, ganz unwichtig sind die Querystrukturen nicht beim Datenbankdesign.

Wenn es sich z.B. herausstellt das du einen bestimmten Query sehr häufig ausführen musst, aber durch Normalisierung und schlecht gewählte Indexes da dir selbst ein Bein stellst kann es manchmal sogar sich lohnen auf die Normalisieurng zu verzichten und lieber einen weiteren Index anzulegen.
Pick up the hammer... pick it up.

Benutzeravatar
varmandra
Commander
Beiträge: 266
Registriert: 24.09.2008, 20:32

Re: Datenabankstruktur für ein Forum (MySQL)

Ungelesener Beitrag von varmandra » 08.01.2012, 17:33

Das ist etwas was wir noch sehen werden, wir haben uns jetzt auf einen Seitenaufbau geeinigt, die grobe Datenbankstrucktur steht, Liste der Funktionen steht soweit.
Jetzt kommt dann noch die Lasten, wie ein Sicherheits Aspekte, mit dem ganzen bekommen wir dann unser Lastenheft zusammen was abgearbeitet wird.

Das dann bei dem Arbeiten noch mal in die Planung müssen, um Querystruckturen und Datenbank nochmal an einander anzupassen, ist normal, kein Schlachtplan überlebt den ersten Kontakt zum Feind.

BdT
Frank

Antworten