Möglichkeit zur eindeutigen UserID

Status
Nicht offen für weitere Antworten.

kingpin166

Mitglied
Hallo,

ich wollte für meine Datenbankanwendung eine eindeutige User ID generieren. Ich habe mir gedacht, dass ich einfach die Zeilennummer hernehme, aber das scheitern schon dann, wenn ich in der Mitte einen Datensatz wegnehme.
Außerdem schreibt die Datenbank nicht immer hintereinander, sondern immer einfach so wie es gerade am günstigstens ist.

Gibt es also eine Möglichkeit einen eindeutigen Key für jeden User zu generieren sobald er seine Daten in die Tabelle einträgt ?
 

me.toString

Bekanntes Mitglied
Lass das doch die Datenbank für dich machen. IN den meisten DB's gibt es die Möglichkeiten Sequenzen anzulegen, die dir immer eine neue id geben. Oder du hast an einer Stellein deinem Netz, an der ein Prozess läuft, der eine ID nach der anderen herausgibt.
 

jank

Aktives Mitglied
Benutzt du SQL Datenbanken? Dann guck dir mal AUTO_INCREMENT an.
Ansonsten kannst du soetwas machen wie MD5 von der aktuellen Zeit generieren oder so, oder die aktuelle Zeit selbst nehmen. Kommt natürlich drauf an wie oft Benutzer hinzugefügt werden. Ist nur sone Idee.

Grüsse,
Jan
 

kingpin166

Mitglied
Ja, Auto_increment habe ich schon gefunden, allerdings sagt er mir immer wieder, dass der Standardwert falsch sei.

Ich habe eine Spalte mit dem Namen UserID und mit dem Datentyp INT. Dann als Standardwert 0 und auf auto_increment, aber dann kommt der Fehler von oben.

Muss ich einen bestimmten Datentyp angeben ?
 

Ark

Top Contributor
Falls der Username (falls es überhaupt so etwas gibt ^^) eindeutig ist, würde ich einen Hashcode zum Namen berechnen und diesen (Hashcode) verwenden. Das ist aber nur so eine Idee, da ich mich mit Datenbanken usw. nicht wirklich auskenne.

MfG
Ark
 

personenkult

Aktives Mitglied
Hallo, einen Standardwert kannst du nicht benutzen bei auto_increment, da er ja immer einen hochzählt bei einem neuen Datensatz. Bei MsSQL heißt der Befehl übrigens IDENTITY.

Am besten ist wenn du einen Autowert benutzt, oder dir einen IDPool anlegst, aus dem du die IDs ziehst. Für den Anfang sollte aber ein Autowert reichen.
 

SamHotte

Top Contributor
Oder aber, wenn die Relation nicht zu groß wird, kannst du den jeweils höchsten ID-Wert auslesen (SELECT MAX ...) und +1 dazuaddieren.
 

kingpin166

Mitglied
So ich habe jetzt eine Möglichkeit gefunden.

ich lasse mir für die Spalte User ID den jeweils größten Wert geben und zähle ihn für jeden User der sich einträgt um eins hoch. So kann ich User löschen, ohne dass die ID an Eindeutigkeit verliert. Einziger Nachteil , wenn eine User ID vergeben wurde kann sie nicht wieder belegt werden.
 

personenkult

Aktives Mitglied
kingpin166 hat gesagt.:
So ich habe jetzt eine Möglichkeit gefunden.

ich lasse mir für die Spalte User ID den jeweils größten Wert geben und zähle ihn für jeden User der sich einträgt um eins hoch. So kann ich User löschen, ohne dass die ID an Eindeutigkeit verliert. Einziger Nachteil , wenn eine User ID vergeben wurde kann sie nicht wieder belegt werden.

Das ist normalerweise keine so gute Lösung. Wenn du nun 2 User hast, die sich Zeitgleich anmelden suchen sie sich beide die selbe ID raus. Es gibt noch weiter "Macken", die eine solche Lösung hervorrufen kann.
 
G

gast

Gast
J, ich gebe zu, dass diese Möglichkeit ein paar Fehler beehrbergt, allerdings legen wir bei unserem Projekt kein wirkliches Augenmerk auf die Konsistenz unseres Codes.

Man hat uns von uniseiten aus nen bissel verarscht mit Applets und für uns soll das Projekt einmal gezeigt werden können, aber nie eingesetzt werden.
Schon aus dem Grund ist uns jede Lösung die es zu einem bestimmten Problem gibt recht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Apache fop -- welche Möglichkeit gibt es um den Fortschritt anzuzeigen (Progressbar) Allgemeine Java-Themen 5
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
Zrebna Möglichkeit regelmäßige indentation mittels/innerhalb Stringbuilder Allgemeine Java-Themen 14
Q Möglichkeit Online-Programmieren üben. Allgemeine Java-Themen 9
M Praktische Möglichkeit um Studierenden Java zu erklären Allgemeine Java-Themen 33
S Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben Allgemeine Java-Themen 2
W Möglichkeit von java Allgemeine Java-Themen 16
D Möglichkeit mit GAE eine Table auszulesen und eine csv zu schreiben Allgemeine Java-Themen 22
V Gibt es eine Möglichkeit die Internet auslastung mit Java auszulesen Allgemeine Java-Themen 11
C Input/Output Beste Möglichkeit für user non-readable Datei Allgemeine Java-Themen 7
G Threads Gibt es eine Möglichkeit des Nichtblokierens? Allgemeine Java-Themen 5
L Java TimeZone für bestimmten offset -> Bessere Möglichkeit? Allgemeine Java-Themen 2
C Beste Möglichkeit eine jar mit großem Heapspace zu starten ? Allgemeine Java-Themen 8
M Javamail -> andere Möglichkeit für Attachment Allgemeine Java-Themen 5
FoolMoon Elegante Möglichkeit die kleinste Zahl zu ermitteln. Allgemeine Java-Themen 7
M Java lernen, ist das eine gute Möglichkeit? Allgemeine Java-Themen 5
M Andere Möglichkeit zu casten Allgemeine Java-Themen 8
T Schnellste Möglichkeit Datenverarbeitung Allgemeine Java-Themen 5
T Schnellset Möglichkeit Datei einzulesen Allgemeine Java-Themen 11
T Möglichkeit um eine Taste zu drücken? Allgemeine Java-Themen 2
M Funktion als Parameter oder andere Möglichkeit Allgemeine Java-Themen 3
E Ermitteln einer eindeutigen ID eines Objekts möglich? Allgemeine Java-Themen 17
T UserID übergeben Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben