Entwickler-Ecke

Datenbanken - User-Tabellen-Design


Martok - Mi 30.01.08 18:37
Titel: User-Tabellen-Design
Hallo!

Ich bin grade etwas ins grübeln gekommen. Ich habe eine Tabelle mit allen angemeldeten Spielern. Da stehen zum Beispiel Anmeldeinformationen drin, aber auch Statistiken und später noch Optionen.

Ist das sinvoll, alle diese Sachen in der Haupttabelle rumgeistern zu lassen? Oder ist es sinnvoll, Optionen, Statistiken usw. in eigene Tabellen auszulagern?

Wenn man für diese Entscheidung noch mehr Infos braucht... sagts mir ;)

mfg
Sebastian


ub60 - Mi 30.01.08 19:06
Titel: Re: User-Tabellen-Design
user profile iconMartok hat folgendes geschrieben:
Wenn man für diese Entscheidung noch mehr Infos braucht...

Man braucht!

Such doch mal nach Normalform einer Datenbank bzw. Redundanz, da solltest Du genügend Hinweise bekommen.

ub60


Martok - Mi 30.01.08 19:41

Hm, eigentlich ist doch das nicht das eigentliche Problem. Mal ein Beispiel:


Quelltext
1:
2:
3:
(alles zusammen)
users:
ID|NAME|PASS|LAST_LOGIN|LAST_ACTION|SKILL_* (4 mal)|SHOW_ONLINE_STATUS(+weitere Optionen)

oder

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
(maximal aufgetrieselt)
users:
ID|NAME|PASS|LAST_LOGIN

last_action:
UID|LAST_ACTION

skills:
UID|SKILL_* (4 mal)

options:
UID|SHOW_ONLINE_STATUS(+weitere Optionen)


Redundant ist da ja nie was. Das Problem ist ja nur eins der Verteilung der Daten. Und hier gehts mir eher um die Geschwindigkeit, da bestimmte Sachen selten gelesen, andere selten geschrieben und die last_action z.B. jedes mal geschrieben und gelesen wird.
Wobei man mit geschickt verteilten Indices auch was erreichen dürfte oder?


ub60 - Mi 30.01.08 22:31

Wenn Du keine redundanten Daten hast, sollte eine große Tabelle eigentlich kein Problem sein. Ein Geschwindigkeitsvorteil sollte bei kleineren Tabellen auch nicht auftreten, da man ja (über SELECT) auswählen kann, welche Daten man übers Netz transportieren möchte. Die Indizes zum Sortieren und zum Zugriff funktionieren bei Tabellen mit vielen und mit wenigen Feldern gleich schnell.

ub60