Datenbank für Forum
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausblenden
beziehung
dank
date
datenbank
datum
durchlesen
eigene tabelle
eintrag
feld
forum
kategorie
modell
ordern
reihenfolge
sinn
spezifische reihenfolge
stehen
tabelle
verweis
-
Hi!
Ich will ein kleines Forum programmieren und bin mir gerade am überlegen, wie man die Kategorien, Foren, Themen, Beiträge am besten in einer Datenbank speichert.
Da ist ja eine Hierarchie: Eine Kategorie enthält Foren, diese enthalten Themen und diese enthalten Beiträge.
Wie mach ich das am besten?? Es ist ja nicht möglich eine Tabelle in einem Feld zu erstellen :(
mfg delco -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich weiss nicht, ob ich es richtig verstehe, aber ich würde für alles eine eigene Tabelle anlegen und dann noch je nach notwendiger Verknüpfung eine Tabelle um die Beziehungen zu realisieren.
Schau dir dazu doch mal das Thema relationale Datenbank an. -
Für alles ne eigene Tabelle?
Also so:
Tabelle categories
Tabelle forums
Tabelle threads
Tabelle posts
In categories stehen die Namen der Kategorien und verweisen auf Felder in der Tabelle forums.
In forums stehen die Namen der Foren und verweisen auf Felder in der Tabelle threads.
In threads stehen die Namen der Themen und verweisen auf Felder in der Tabelle posts.
In posts stehen die einzelnen Posts mit allen Infos (Ersteller, Datum, Text).
Hast du das so gemeint??
mfg delco
-
Hallo,
nicht ganz...
Du solltest immer von dem Untergeordneten auf das Übergeordnete verweisen:
Tabelle categories
- id
- name
- published (zum Ausblenden von Kategorien)
- order (falls du eine spezifische Reihenfolge der Kategorien angeben willst)
Tabelle forums
- id
- name
- published (zum Ausblenden)
- order (spezifische Reihenfolge)
- category (id aus der Tabelle categories)
... diese beiden Tabellen lassen sich gegebenenfalls auch über ein Attribut in einer Tabelle zusammenfassen.
Für die Threads und Posts gibt es nun zwei Möglichkeiten, die beide Sinn machen können.
1. Die Tabelle threads und post sind getrennt, wobei der Thread nur den Titel und das Erstellungsdatum enthält:
Tabelle threads
- id
- name
- published (zum Ausblenden)
- order (spezifische Reihenfolge)
- forum (id des Eintrags in der Tabelle forums)
- date (Erstellungsdatum)
- author
- status (sticky, wichtig etc.)
Tabelle posts
- id
- published (zum Ausblenden)
- order (spezifische Reihenfolge)
- thread (id des Eintrags in der Tabelle threads)
- date (Erstellungsdatum)
- content
- attachment
- author
... die Reihenfolge der Beiträge ergibt sich aus dem Datum.
2. Der Thread-Titel steht immer beim Post dabei und beides kann in einer Tabelle verwaltet werden. Hierdurch lassen sich Themen einfach trennen.
Tabelle posts
- id
- title
- published (zum Ausblenden)
- order (spezifische Reihenfolge)
- thread (id des ersten Eintrags dieses Threads in der Tabelle posts - bei NULL wäre dies der erste Eintrag)
- date (Erstellungsdatum)
- content
- attachment
- author
... die Reihenfolge der Beiträge ergibt sich aus dem Datum.
Ich hoffe, ich konnte dir etwas weiterhelfen. Am besten fertigst du erstmal ein Modell an, wie welche Daten verknüpft bzw. abgelegt werden sollen. (ER-Modell)
Gruß
Karlja -
Danke für die ausführliche Antwort. Werd mir das mal als Textdatei speichern und genau ansehen
mfg delco
PS: Falls noch jemand ideen hat sind sie trotzdem noch gerne gesehen !!!! -
tja ich würde (und habs so gelößt)
die einzelen Überforen in einer Tabelle (mit reihenfolge)
und dann die anderen tabbellen (forum)_(thema#)
also zum bsp:
1_12345656
und das ganze mit "SHOW TABLES LIKE ".$forum."_";
ausgelesen
mfg andré -
andre-morillon schrieb:
Es macht keinen Sinn für jedes Thema eine eigene Tabelle anzulegen. Da hast du hinterher einen Haufen Tabellen. Einfacher und übersichtlicher ist es, alle Beiträge in einer Tabelle zu verwalten.
tja ich würde (und habs so gelößt)
die einzelen Überforen in einer Tabelle (mit reihenfolge)
und dann die anderen tabbellen (forum)_(thema#)
also zum bsp:
1_12345656
und das ganze mit "SHOW TABLES LIKE ".$forum."_";
ausgelesen
mfg andré
-
Für jedes Thema eine Tabelle?? Da bin ich ja gleich bei mehreren Hundert!!
Ne so gehts wirklich nicht!
Werd mir das von karlja mal genauer durch den kopf gehen lassen!
mfg delco -
delphicoder schrieb:
Für jedes Thema eine Tabelle?? Da bin ich ja gleich bei mehreren Hundert!!
Ne so gehts wirklich nicht!
Werd mir das von karlja mal genauer durch den kopf gehen lassen!
mfg delco
Das Modell von karlja geht schon stark in die von mir genannte Richtung der relationalen Datenbank.
Ist auf jeden Fall zu empfehlen.
Dennoch solltest du dir einfach mal die Grundlagen einer relationalen Datenbank durchlesen, damit man die Datenbank so erstellt, dass man im Nachhinein flexibel genug ist, um Änderungen sinnvoll durchzuführen am Datenbankmodell.
Deshalb nannte karlja auch das ER (Ententy Relationship). -
Das Modell von karlja geht schon stark in die von mir genannte Richtung der relationalen Datenbank.
Ist auf jeden Fall zu empfehlen.
Dennoch solltest du dir einfach mal die Grundlagen einer relationalen Datenbank durchlesen, damit man die Datenbank so erstellt, dass man im Nachhinein flexibel genug ist, um Änderungen sinnvoll durchzuführen am Datenbankmodell.
Deshalb nannte karlja auch das ER (Ententy Relationship).
Ja. Hab mal schnell in Google geschaut obs da was gibt. => Wikipedia sind riesenartikel. Werd mir die bei Zeiten mal durchlesen!
Danke für eure Hilfe!
mfg delco
PS: Anregungen sind trotzdem noch erwünscht!!! -
Anregung:
Du hast in einem Forum ja auch noch Benutzer, welche ebenfalls in Beziehung zu Beiträgen stehen. Sammel einfach mal die Begrifflichkeiten des Forums und setze die Beziehungen zueinander. z.B.
Ein User schreibt einen oder mehrere Beiträge.
Ein Beitrag wird von genau einem User geschrieben.
Da hast du die Beziehung in 2 Richtungen zwischen Usern und Beiträgen.
Daraus ergibt sich eine Relation von:
User----Beitrag
1----------n
Wie man solche Beziehungen dann sinnvoll in der Datenbank modelliert, wird eben bei den relationalen Datenbanken beschrieben.
Prinzipiell muss man seine Wünsche an das Forum niederschreiben und die Zusammenhänge klarstellen.
Ist sicherlich etwas Arbeit, aber eine vernünftige Datenbank lohnt sich, weil Änderungen in der DB leichter zu machen sind. Hat dein Datenbankmodell schon einen Bock, den du erst später erkennst, dann ist noch deutlich mehr Arbeit zu leisten. -
Ich werd mir das mal genau überlegen und mein Konzept dann nochmal hier her schreiben, damit ich mit euch darüber diskutieren kann, wo vll. noch schwachstellen sind.
mfg delco
PS: danke für eure schnelle, professionelle hilfe -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage