Hallo Zusammen,
ich bin derzeit an einem sehr großen Projekt und muss mir daher sehr viele Gedanken über die Struktur machen. Natürlich ist das ganze nicht so einfach wie die meisten denken und von daher richtet sich mein größtes Problem an die Benutzerverwaltung.
Ein Benutzer hat immer folgende Daten:
ID* (UNIQUE, PK)
E-Mailadresse* (UNIQUE)
Passwort* (MD5)
Vorname*
Nachname*
Status*
Adresse
Telefonnummer
Geburtstag
Punkte
Foto
Alle mit * gekennzeichneten Felder sind immer hinterlegt. Neben diesen Daten müssen nun natürlich auch noch beziehungen etabliert werden. Das heißt in erster Linie, dass jeder Benutzer Rechte und Freunde sowie eigene Alben haben kann die natürlich auch im Benutzer-Verwaltungs-System etabliert werden möchten. Desweiteren haben Benutzer Punkte, die Sie für diverse Aktionen auf dem Portal erhalten. Durch die Punkte, können die Benutzer sich dann virtuelle Goodies kaufen. Ein weiterer Punkt, was alle Benutzer haben ist das Nachrichtensystem, wo sie ausschließlich mit ihren eigenen Freunden schreiben können.
Das System braucht also folgende Bausteine (Übersicht):
Rechte
Freunde
Alben
Punkte
Nachrichtensystem
Standard-Funktionen (Benutzer auslesen, bearbeiten, löschen usw.)
Da ich keine Lust habe, das Projekt direkt am Anfang zu "versauen" möchte ich jetzt Rat von ein paar erfahrenen PHP-Nutzern, die vielleicht bereits ein derartiges Projekt geschrieben haben.
Ich gehe mal näher auf die einzelnen Module ein:
Rechte:
Wie bereits erwähnt, hat jeder Benutzer diverse Rechte, die sich aus einer Gruppe ergeben. Das heißt konkret, dass jeder Benutzer mehrere Gruppen haben kann und die Rechte sich dadurch ergänzen. Das heißt wenn ein Mitglied die Gruppen Mitglieder sowie Moderatoren hat erhält er alle Rechte aus den jeweiligen Gruppen.
Freunde:
Jeder Benutzer kann sich seinen eigenen Freundesstamm aufbauen. Da eine einfache N:M Beziehung hier meiner Meinung nach fehl am Platz wäre, wäre es meiner Meinung nach optimal, dass jede Beziehung zwei mal in der Datenbank geführt wird, dass es einfacher zum auslesen ist. Es gibt in der Tabelle einmal das Feld user_id und einmal das Feld friend_id - da man nun nicht von beiden Seiten ohne weiteres die Freunde herausbekommt, ist es meiner Meinung nach ratsam, die Einträge in beide Seiten zu führen.
Alben:
Benutzer können verschiedene Alben haben in denen es Funktionen gibt, die ich hier leider aus mehreren Gründen nicht nennen darf.
Punkte:
Für diverse Aktionen auf dem Portal erhalten Benutzer Punkte. Da ich einen Missbrauch verhindern möchte, will ich in der Datenbank einen Log haben, wo alle Buchungen festgehalten werden. Einmal in der Nacht, werden alle Benutzer kontrolliert und die Punkte geupdatet sofern sie nicht stimmen.
Nachrichtensystem:
Einer der größten Punkte ist wohl das Nachrichtensystem - wobei ich hier schon eine konkrete Vorstellung habe, wie das ganze aussehen soll. Da ich keinen doppelten Text haben möchte, soll der Text einer Nachricht als UNIQUE in einer seperaten Datenbank gespeichert werden. Desweiteren soll jeder Benutzer seine Nachricht in einen Ordner verschieben können. Das heißt zusätzlich zum Nachrichtensystem benötigt man im Nachrichtensystem folgende Optionen: Nachricht schreiben, löschen, verschieben; Ordner erstellen, löschen, bearbeiten; Postausgang löschen.
Das ganze Benutzerverwaltungssystem soll nach allen Regeln des OOP erstellt werden. Effektiv heißt das, dass ich mit vielen Interfaces sowie Abstrakten Klassen arbeiten werde.
Ich bin derzeit an einem UML-Diagramm dran, muss aber sagen, dass ich nicht so sehr mit den Funktionen eines Diagramms vertraut bin.
Wie mache ich das am schlausten. Ich möchte jetzt nicht darum bitten, dass mir jemand ein UML erstellt oder eine derartige Arbeit macht, allerdings geht es mir rein um die Logik, die ich beachten sollte bei einem derartigen Benutzertool.
Gruß,
Marc
ich bin derzeit an einem sehr großen Projekt und muss mir daher sehr viele Gedanken über die Struktur machen. Natürlich ist das ganze nicht so einfach wie die meisten denken und von daher richtet sich mein größtes Problem an die Benutzerverwaltung.
Ein Benutzer hat immer folgende Daten:
ID* (UNIQUE, PK)
E-Mailadresse* (UNIQUE)
Passwort* (MD5)
Vorname*
Nachname*
Status*
Adresse
Telefonnummer
Geburtstag
Punkte
Foto
Alle mit * gekennzeichneten Felder sind immer hinterlegt. Neben diesen Daten müssen nun natürlich auch noch beziehungen etabliert werden. Das heißt in erster Linie, dass jeder Benutzer Rechte und Freunde sowie eigene Alben haben kann die natürlich auch im Benutzer-Verwaltungs-System etabliert werden möchten. Desweiteren haben Benutzer Punkte, die Sie für diverse Aktionen auf dem Portal erhalten. Durch die Punkte, können die Benutzer sich dann virtuelle Goodies kaufen. Ein weiterer Punkt, was alle Benutzer haben ist das Nachrichtensystem, wo sie ausschließlich mit ihren eigenen Freunden schreiben können.
Das System braucht also folgende Bausteine (Übersicht):
Rechte
Freunde
Alben
Punkte
Nachrichtensystem
Standard-Funktionen (Benutzer auslesen, bearbeiten, löschen usw.)
Da ich keine Lust habe, das Projekt direkt am Anfang zu "versauen" möchte ich jetzt Rat von ein paar erfahrenen PHP-Nutzern, die vielleicht bereits ein derartiges Projekt geschrieben haben.
Ich gehe mal näher auf die einzelnen Module ein:
Rechte:
Wie bereits erwähnt, hat jeder Benutzer diverse Rechte, die sich aus einer Gruppe ergeben. Das heißt konkret, dass jeder Benutzer mehrere Gruppen haben kann und die Rechte sich dadurch ergänzen. Das heißt wenn ein Mitglied die Gruppen Mitglieder sowie Moderatoren hat erhält er alle Rechte aus den jeweiligen Gruppen.
Freunde:
Jeder Benutzer kann sich seinen eigenen Freundesstamm aufbauen. Da eine einfache N:M Beziehung hier meiner Meinung nach fehl am Platz wäre, wäre es meiner Meinung nach optimal, dass jede Beziehung zwei mal in der Datenbank geführt wird, dass es einfacher zum auslesen ist. Es gibt in der Tabelle einmal das Feld user_id und einmal das Feld friend_id - da man nun nicht von beiden Seiten ohne weiteres die Freunde herausbekommt, ist es meiner Meinung nach ratsam, die Einträge in beide Seiten zu führen.
Alben:
Benutzer können verschiedene Alben haben in denen es Funktionen gibt, die ich hier leider aus mehreren Gründen nicht nennen darf.
Punkte:
Für diverse Aktionen auf dem Portal erhalten Benutzer Punkte. Da ich einen Missbrauch verhindern möchte, will ich in der Datenbank einen Log haben, wo alle Buchungen festgehalten werden. Einmal in der Nacht, werden alle Benutzer kontrolliert und die Punkte geupdatet sofern sie nicht stimmen.
Nachrichtensystem:
Einer der größten Punkte ist wohl das Nachrichtensystem - wobei ich hier schon eine konkrete Vorstellung habe, wie das ganze aussehen soll. Da ich keinen doppelten Text haben möchte, soll der Text einer Nachricht als UNIQUE in einer seperaten Datenbank gespeichert werden. Desweiteren soll jeder Benutzer seine Nachricht in einen Ordner verschieben können. Das heißt zusätzlich zum Nachrichtensystem benötigt man im Nachrichtensystem folgende Optionen: Nachricht schreiben, löschen, verschieben; Ordner erstellen, löschen, bearbeiten; Postausgang löschen.
Das ganze Benutzerverwaltungssystem soll nach allen Regeln des OOP erstellt werden. Effektiv heißt das, dass ich mit vielen Interfaces sowie Abstrakten Klassen arbeiten werde.
Ich bin derzeit an einem UML-Diagramm dran, muss aber sagen, dass ich nicht so sehr mit den Funktionen eines Diagramms vertraut bin.
Wie mache ich das am schlausten. Ich möchte jetzt nicht darum bitten, dass mir jemand ein UML erstellt oder eine derartige Arbeit macht, allerdings geht es mir rein um die Logik, die ich beachten sollte bei einem derartigen Benutzertool.
Gruß,
Marc
Kommentar