6Danke
ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
333
333
EMPFEHLEN
-
Hallo

Ich bin seit gestern am überlegen für das richtige Datenbank Design. Ich habe ein Registrierung mit anschließender Aktivierung durch ein Code der per Mail versandt wird.
Meine erste Idee war zwei getrennte Tabellen, einmal User und einmal Registration. Nach der Aktivierung wird ein Teil des Inhalts der Registration Tabelle in die User Tabelle übertragen. Den Vorteil seh ich hier das ich einfach über die Registration Tabelle gehe und alle Einträge älter als 24h rausschmeiße falls nicht aktiviert!
Alternative wäre eine Spalte in der User Tabelle 'acitve', die entweder true oder false ist. In einer weiteren Tabelle müsste ich zusammen mit der UserID den Aktivierungscode und das Erstellunsdatum speichern. Hier wäre es ein wenig aufwendiger die abgelaufenen User raus zu schmeißen da ich über zwei Tabellen operieren muss.
Was haltet ihr für sinnvoller, oder gibts noch eine weiter alternative/verbesserungen?Wenn dir mein Beitrag hilfreich war darfst du gerne Danke klicken! :)
watch my blog @ websocialist.blogspot.com
-
Und wieso nicht alles in einer Tabelle?
Du hast keinerlei Vorteile, die Infos auszulagern. Zum einen gehören sie zum User, zum anderen beeinflusst es die Laufzeit beim Speichern und Löschen negativGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Weil ich ja spezielle Metadaten habe die ich am nach der Aktivierung nicht mehr brauche. Zum Beispiel der Aktivierungscode.
Wenn dir mein Beitrag hilfreich war darfst du gerne Danke klicken! :)
watch my blog @ websocialist.blogspot.com
-
Hi
Das erklärt aber nicht, warum du den Laufzeitverlust (und zusätzlichen Speicherbedarf) in Kauf nehmen willst.
Für eine Abfrage der Userdaten kannst du die Spalten ja weglassenGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Ja natürlich kann ich die Spalten bei der Abfrage weglassen. Aber wenn ich für jeden User ein Aktivierungcode (z.B. 32 Zeichen MD5 Hash) speicher, obwohl dieser nicht benötigt wird da der User sein Account aktiviert hat, dann verschwende ich ja schon Speicher!
Ich brauche also eine Möglichkeit den Aktivierungscode separat zu speichern, sodass er nach der Aktivierung wegfallen kann. Und ich muss natürlich in der User Tabelle kennzeichnen ob der User bereits aktiv ist.Wenn dir mein Beitrag hilfreich war darfst du gerne Danke klicken! :)
watch my blog @ websocialist.blogspot.com
-
Die Möglichkeit brauchst du nicht zwingend. Du brauchst den Aktivierungscode nicht mal in der DB sondern du brauchst ihn genau zweimal: Beim Versenden und beim anschließenden Vergleichen. Davor, dazwischen und danach brauchst du den Code nicht und musst ihn somit auch nicht persistieren
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Ich kann dir leider nicht ganz folgen. Das ich ihn nach der Aktivierung nicht mehr brauche ist mir klar. Aber irgendwo muss er abgelegt werden solange bis der User sein Account per Mail aktiviert. Ich will vllt auch die Möglichkeit bieten das man sein Account sofort benutzen kann, noch bevor man ihn Aktiviert hat über die Mail.
Wenn dir mein Beitrag hilfreich war darfst du gerne Danke klicken! :)
watch my blog @ websocialist.blogspot.com
-
Hallo,
Aus reiner Datenmodellierungssicht wäre es am günstigsten die letzte von dir erwähnte Variante zu wählen, wobei du sogar darauf verzichten kannst eine active Spalte zu führen. Die Information ob ein User aktiviert ist oder nicht ergibt sich dann einfach daraus, dass aktivierte User keine Zeile in der zweiten Tabelle haben.
Von der Variante mit nur einer Tabelle würde ich stark abraten, eben aus dem von dir schon oben genannten Grund des Speicherverbrauchs. Und im Normalfall wirst du ein große Menge an aktivierten Nutzern haben, und nur sehr wenige die noch aktiviert werden müssen --> viel unnötiger Speicherverbrauch.
-
Hallo

Von der ersten Variante werde ich jetzt auch absehen!
Bei der zweiten von mir genannten Variante müsste ich bei jedem Login natürlich auch prüfen ob der User in der Aktivierungstabelle vorhanden ist. Deswegen dachte ich an eine Spalte 'active'.
Mir kam jetzt auch eine dritte Idee:
Nur eine Tabelle User mit der Spalte 'active'. Falls diese auf 'false' steht hat der User sein account nocht nicht aktiviert. Der Aktivierungscode ist der Hash aus seiner ID, Username und Passwort, gegebenfalls auch noch das Erstellungsdatum. Hier würde ich eine ganze Tabelle sparen.
Was meint ihr dazu? Bin auch offen für weitere Vorschläge
Wenn dir mein Beitrag hilfreich war darfst du gerne Danke klicken! :)
watch my blog @ websocialist.blogspot.com
-
Hi
Du kannst denn Schlüssel doch bei Bedarf erzeugen. Dieser wird doch sicherlich anhand der Userdaten generiert.
Demzufolge kannst du in bei der Aktivierung durch den User generieren. Der User sendet den Aktivierungscode, du generierst den Code auf dem Server und vergleichst beide
Der Nachteil der Prüfung des Vorhandenseins von Datensätzen in der zweiten Tabelle ist neben Laufzeitverlust beim Speichern und Löschen auch noch ein Laufzeitverlust beim Lesen während des LoginsGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Hallo,
jetzt hab ich es begriffen! Das enspricht ja dem, was mit gestern noch eingefallen ist:
Ich muss nur trotzdem den Status merken, also aktiviert oder nicht. Aber diesen kleinen Overhead kann man ja in kauf nehmen.Mir kam jetzt auch eine dritte Idee:
Nur eine Tabelle User mit der Spalte 'active'. Falls diese auf 'false' steht hat der User sein account nocht nicht aktiviert. Der Aktivierungscode ist der Hash aus seiner ID, Username und Passwort, gegebenfalls auch noch das Erstellungsdatum. Hier würde ich eine ganze Tabelle sparen.
Liege ich nun vollkommen richtig?Wenn dir mein Beitrag hilfreich war darfst du gerne Danke klicken! :)
watch my blog @ websocialist.blogspot.com
-
Hi
Das ist das, was ich gemeint hab
Nur eine Marker ob aktiviert oder nicht, der Rest muss nicht persistiert werdenGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Wenn dir mein Beitrag hilfreich war darfst du gerne Danke klicken! :)
watch my blog @ websocialist.blogspot.com
-
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
Ähnliche Themen
-
[Datenbank-Design] Aufbau sicherer Kunden & logischer Datenbank
Von Ken89 im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 22.03.11, 21:59 -
Datenbank-Design
Von roybehr im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 02.04.09, 19:31 -
Registrierung wird nicht in Datenbank gespeichert
Von Delta-787 im Forum PHPAntworten: 38Letzter Beitrag: 29.05.06, 23:47 -
Registrierung-Script (eigenes) schickt keine Daten an die Datenbank
Von giga-cooperation im Forum PHPAntworten: 9Letzter Beitrag: 15.03.05, 20:09 -
Datenbank Design
Von boelkstoff im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 03.08.03, 14:51





Zitieren


Login





