Mitglieder Datenbankstruktur in einem Browsergame
Jeder weiß, dass Browsergames sehr schnell wachsen können, wenn man nur die richtige Idee hat. Aus diesem Grund ist es wichtig, dass man gleich am Anfang sehr auf seine Datenbankstruktur achtet. Ist diese einmal am Anfang verpatzt ist es nur schwer möglich den Fehler wieder zu beheben. Hier ist einmal ein kleines Beispiel dafür:
1000 Spieler * 5 kB = 5000 kB(~5 MB)
100000 Spieler * 5 kB = 500000 kB(~500 MB)
1000 Spieler * 20 kB = 20000 kB(~20 MB)
100000 Spieler * 20 kB = 200000 kB(~2000 MB)
Und genau um diese, am Anfach schwer erkennbaren, Unterschiede geht es in diesem Tutorial. Gleich am Anfang sollte man daher die eigentliche Tabelle, diesem Fall bg_user, möglichst klein halten, da auf sie sehr oft zugegriffen wird.
CREATE TABLE bg_user ( id int(10) NOT NULL AUTO_INCREMENT, username varchar(50), password varchar(50), PRIMARY KEY(id) );
Weitere Mitgliederangaben, welche nicht so oft Aufgerufen werden(E-Mail Adresse, Webseite, Signatur, usw..) kommen in eine externe Tabelle.
CREATE TABLE bg_user_ext ( user_id int(10), email varchar(100), homepage varchar(100), signatur smalltext );
Als letztes Stelle ich euch noch eine kleine Datenbank zum Handeling von Einheiten vor. Diese kann man gut wie folgt aufbauen.
CREATE TABLE bg_user_einheiten ( user_id int(10), einheit int(3), stufe int(3), anzahl int(5), verfuegbar int(5) );
Hier wird genau gespeichert, wie viele Einheiten von welcher Einheit noch leben und gerade verfügbar sind. Nicht verfügbare Einheiten greifen beispielweise gerade an. Außerdem kann auch noch die Stufe gleich mit aufgerufen werden.Diese kann man beispielsweise durch Entwicklung der Pfeile oder erreichen eines neuen Zeitalters erreichen.
Ich hoffe, dass euch mit dieser kleinen Anleitung schonmal ein Einblick möglichst ist.
Danke für dieses nette Tutorial. Allerdings ist mir eins noch nicht ganz klar: Wieso ist die E-Mail Adresse so unwichtig, dass sie nur in die Tabelle bg_user_ext kommt und nicht in bg_user? Ich empfinde eine E-Mail immer als sehr wichtig, da es der einzige Kontakt außerdem des BGs zum Spieler ist
Grüße
Dirk
PS: Schön das du die Lücke eines Blogs zu diesem Thema geschlossen hast. Ich habe schon länger nach so etwas gesucht.
Hallo Dirk,
die E-Mail Adresse ist zwar eine wichtige Angabe, sie wird aber nicht oft gebraucht. Die Adresse braucht man in den Fällen wenn man sein Passwort vergessen hat oder um über eine private Nachricht informiert zu werden. Ansonsten braucht man nur das Passwort(Login, Sessionabgleich), die ID(für alle Datenbankzugriffe, die Mitgliederbezogen sind) und den Name(der überall angezeigt wird).
Grüße
Sebastian
Dank daran hatte ich ja jetzt gar nicht gedacht. Ich habe die ganze Zeit immer die E-Mail mit im eine Userspalte geschrieben, da diese mir immer wichtig war.
Wie sieht es denn mit den Spalte aus ob eine User seinen Account bereits aktiviert hat? Kommt dieser denn im die Spalte bg_user weil man es ständig kontrollieren muss?
Grüße
Dirk
Hallo Dirk,
in diesem Fall würde ich tptzdem nur eine Spalte “status” in der Tabelle “bg_user_ext” erstellen. Darüber kannst du dann folgende Werte einstellen:
0 => Noch nicht freigeschaltet
1 => Freigeschaltet
2 => Gesperrt
3 => Gelöscht
Selbst gelöschte User würde ich noch 6 Moate in der Datenbank lassen um zu verhindern, dass er nachher noch irgendwas gemacht hat, weswegen zu seine IP brauchst.
Ich hoffe ich konnte dir helfen.
Grüße
Sebastian