PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Für jede Gruppe eine Shoutbox


Marbleearth
2010-05-27, 11:11:11
Hallo hab ne Seite mit Anmeldung und angebundener MySQL Datenbank.

Nun gibt es eine globale Shoutbox. Funktioniert wunderbar (max. 20 Einträge, der 20. überschreibt den ältesten).

Nun können sich die Seitennutzer in Gruppen zusammenfinden (Teams). Ich möchte, dass jedes Team eine zusätzliche eigene Shoutbox bekommt.

Wie mache ich das am Besten von der Datenbankstruktur?
Für jede Team-box eine eigene Tabelle?
Oder eine große Tabelle mit allen Einträgen, die ich dann je nach Team-ID auslese?
Oder 3. Möglichkeit: Eine große Tabelle in der jedes Team nur eine einzelne Zeile für die Shoutbox bekommt in der alles drin steht.
Die Lösung gefällt mir eigentlich nicht schlecht weil man dann nicht soviele einzelne Tabellen hat, das Problem ist halt, dass ich für jeden Eintrag in der Shoutbox folgende Daten speichern möchte:

Team-ID (zuimindest einmal ist klar)
dann für jeden Eintrag:

Nutzer-ID | Zeitpunkt | Inhalt

Wenn ich jetzt die 3. Möglichkeit nehme hätte ich ja ziemlich lange Zeilen in PHPmyAdmin

weil ich ja das Ganze für 20 Einträge pro Team tun müsste, etwa so:

Nutzer-ID | Zeitpunkt | Inhalt | Nutzer-ID | Zeitpunkt | Inhalt | Nutzer-ID | Zeitpunkt | Inhalt

Also was ist die beste Lösung hierfür?

mfG,
bluestyler

huha
2010-05-27, 11:20:37
Jede Shoutbox in nur einer Zeile ist meines Erachtens die dümmste Lösung, weil du unglaublich viele Sachen aufgibst, die Datenbanken so nett machen. Du willst gewissermaßen Bewußt das Kriterium verletzen, daß alle Daten atomar zu sein haben. Kann man machen, wenn's unbedingt notwendig ist, sollte man aber vermeiden.

Bei dir bietet sich einfach das Hinzufügen eines Feldes zur Team-ID an, über das dann die Selektion läuft. Dafür mußt du auch deinen aktuellen Shoutbox-Code so gut wie nicht umbauen, sondern einfach noch den Parameter hinzufügen, fertig.

-huha

Marbleearth
2010-05-27, 11:28:30
ok also wenn ich dich richtig verstanden habe für jedes Team eine Tabelle mit dem gleichen Code wie die globale SB + Team-ID?
Kann ich das nicht irgendwie verschachteln?

Mein Problem ist nämlich dabei eigentlich nur, dass ich bei vielen Teams sonst die Übersicht über die anderen Tabellen verliere. Also hätte ich gern einen Punkt "Team_Shoutboxen" wo dann alle Team-SB Tabellen drin sind.

Ich hoffe es ist jetzt verständlicher warum ich oben an diese zugegeben etwas blöde Lösung gedacht habe.

EDIT: Also ich möchte nicht, dass die einzelnen Shoutboxen zB mit der Tabelle "user" auf einer Ebene stehen, weil ich da sonst irgendwann durcheinander komme!

Frucht-Tiger
2010-05-27, 12:31:29
Hi bluestyler,

wenn du etwas mehr über Datenbanken Erfahren willst empfehle ich dir mal die Wikipedia Artikel über relationale DBs für den Anfang, mit dem Wissen kannst du solche Probleme schon recht gut lösen.

Zum Problem:
huha meint:

Eine Tabelle für deine Shoutboxen mit den folgenden Feldern:

ID | Team-ID | Nutzer-ID | Inhalt | Zeitpunkt

So kannst du bequem alles in einer Tabelle verwalten, für die Allgemeine Shoutbox lässt du das Team-ID Feld einfach leer.

Marbleearth
2010-05-27, 12:48:58
ok alles klar danke, hatte nur Angst wegen der Performance falls es doch viele Teams werden ;)

EDIT: Habs fertig, läuft alles sehr gut :)