Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von November

SELFHTML Forumsarchiv
Login: Alle Daten in eine Tabelle?

Informationsseite
  1. Seite (PHP) Login: Alle Daten in eine Tabelle? von Sven, 30. 11. 2007, 18:37
nach unten

Login: Alle Daten in eine Tabelle?

Die folgende Nachricht zum Thema stammt von: Sven, 30. 11. 2007, 18:37

Hey ihr,

spricht etwas dagegen, dass ich alle Daten eines Users, also:

id, username, password, bday, sex, lang, city...

in eine Tabelle packe? Oder sollte ich eine extra Login-Tabelle erstellen, mit den Daten:

id, username, password

Macht das einen Unterschied?

Lg
Sven

nach obennach unten

Login: Alle Daten in eine Tabelle?

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 19:01

Hello,

»» spricht etwas dagegen, dass ich alle Daten eines Users, also:
»»
»» id, username, password, bday, sex, lang, city...
»»
»» in eine Tabelle packe? Oder sollte ich eine extra Login-Tabelle erstellen, mit den Daten:
»»
»» id, username, password
»»
»» Macht das einen Unterschied?

Ja, macht es.
Mit der Eintabellenlösung kann jeder reale User auch nur einen virtuellen User haben.
Mit der Zweitabellenlösung kann jeder reale User beliebig viele virtuelle User, sogar mit unterschielichen Rechten, haben.




Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Login: Alle Daten in eine Tabelle?

Die folgende Nachricht zum Thema stammt von: Sven, 30. 11. 2007, 19:43

»» Mit der Eintabellenlösung kann jeder reale User auch nur einen virtuellen User haben.
»» Mit der Zweitabellenlösung kann jeder reale User beliebig viele virtuelle User, sogar mit unterschielichen Rechten, haben.

Hey,

achso... und von der Geschwindigkeit her? Die Admins haben ihren eigenen Zugang, bei den Usern gibt es keine unterschiedlichen Rechte. Aber wäre es ein Geschwindigkeitsvorteil, die Zweitabellenlösung zu verwenden?

Lg
Sven

nach obennach unten

Login: Alle Daten in eine Tabelle?

Die folgende Nachricht zum Thema stammt von: Tom, 30. 11. 2007, 21:58

Hello,

»» »» Mit der Eintabellenlösung kann jeder reale User auch nur einen virtuellen User haben.
»» »» Mit der Zweitabellenlösung kann jeder reale User beliebig viele virtuelle User, sogar mit unterschielichen Rechten, haben.
»»
»» Hey,
»»
»» achso... und von der Geschwindigkeit her? Die Admins haben ihren eigenen Zugang, bei den Usern gibt es keine unterschiedlichen Rechte. Aber wäre es ein Geschwindigkeitsvorteil, die Zweitabellenlösung zu verwenden?

Es ist ein konzeptioneller Unterschied.

Du must Dir nur merken, was Du zum Betrieb des Potals später dauernd benötigst, und was nur selten.

Wenn ein User sich angemeldet hat unter seinem sicherlich eineindeutigen Loginnamen und seinem Passwort, dann wirst Du doch wahrscheinlich Daten, wie seine emailadresse, seine Kontonummer, seine Wohnanschrift und seinen Klarschriftnamen nicht bei jedem Request benötigen, aber seinen Nickname, seine Rechte, je nach Sesssionverfahren auch das Passwort (wenn Du die Session über Auth Basic führen willst und nicht über Cookie).

Also wären zwei getrennte Tabellen dafür besser. Das hält den ständig benötigten Datensatz kleiner.
Übrigens habe ich immer drei Tabellen, weil ich die Rechte noch wieder in einer eigenen Tabelle führe. Erstens gibt es diverse verschiedene Rechte (es könnte auch mal eines dazukommen) und außerdem unterschiedlicze Module. Für jedes entsteht dann pro User ein Datensatz.

Fang also mit zwei Tabelen an, trenne zwischen Wirtschafts- und Webdaten des Users, nimm die Adminsitratoren mit rein in die Verwaltung (warum zwei Systeme, wenn es eins auch tut?). Noch ein Tipp. Der "Notadmin bekommt die die Usernummer 1 (so ähnlich, wie bei Linux mit der 0) und Dein Programm sträubt sich "hartverdrahtet", die zu löschen, wobei die 1 jeztzt nur als Beispiel dient, weil Du von dort aus weiterzählen lassen kannst.

Was benötigst Du dann für den Datensatz?

userlogin
---------
id_userlogin    bigint  autoincremt primary      ## id des datensatzes, eigentlich redundant
id_useroffline  biging  indexed                     # zu Nickname, aber _nicht_änderbar_
writecount      bigint                           ## für konkurriernden Betrieb
lastvisit       timestamp
inserted        datetime
updated         datetime
nickname        varchar (30)   indexed unique    ## änderbar
password        varchar (16)
session         varchar (16)
enabled         tiniint (1)
rights          varchar (100)  ## das sollte man später auslagern

Mehr fällt mir jetzt nicht ein
Vielleicht weiß sonst noch jemand was.


Was muss impelementiert werden?
   Welche MySQL-Version hast Du?
   Wie sicher (und komplex) willst Du es machen?








Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach obennach unten

Login: Alle Daten in eine Tabelle?

Die folgende Nachricht zum Thema stammt von: dedlfix, 01. 12. 2007, 10:04

echo $begrüßung;

»» Du must Dir nur merken, was Du zum Betrieb des Potals später dauernd benötigst, und was nur selten.
»» Also wären zwei getrennte Tabellen dafür besser. Das hält den ständig benötigten Datensatz kleiner.

Wenn man davon ausgeht, dass es nur »SELECT *« gäbe statt »SELECT benötigte_feldnamen« hielte ich eine solche Trennung unter diesem Gesichtspunkt auch für sinnvoll.

Bei einem hoch belasteten System ist eine Trennung nach Session- und Benutzerdaten möglicherweise schon sinnvoll. Wenn die persönlichen Daten der Benutzer ständig gelesen werden, die Verwaltung der Sessiondaten aber aufgrund von Locking-Mechanismen diesen Lesefluss blockiert, stelle ich mir durch die Trennung eine Entlastung des Gesamtsystems vor. Doch wie bei jedem Optimierungsvorgang sollte man diesen Fall genau untersuchen. Erst die wirkliche Ursache von Performance-Engpässen ermitteln, dann gezielt dort ansetzen, sonst optimiert man sich zu Tode, ohne einen Nutzen nachweisen zu können.


echo "$verabschiedung $name";

nach obennach unten

Login: Alle Daten in eine Tabelle?

Die folgende Nachricht zum Thema stammt von: Tom, 01. 12. 2007, 10:18

Hello Dedlfix,

»» Wenn man davon ausgeht, dass es nur »SELECT *« gäbe statt »SELECT benötigte_feldnamen« hielte ich eine solche Trennung unter diesem Gesichtspunkt auch für sinnvoll.

Das war doch nicht der einzige Grund.
Der zweite ist, dass so jeder Real Life User mehrere Vituals haben kann.




Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von November

© 1998-2006 Seite Impressum, Software: Classic Forum