Erstellen eines eindeutigen Primärschlüssels und Speichern als int oder bigint [Duplikat]

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Erstellen eines eindeutigen Primärschlüssels und Speichern als int oder bigint [Duplikat]

by Guest » 18 Jan 2025, 20:08

In einer Anwendung erstellen wir wie folgt eine eindeutige Benutzer-ID mit 10 Ziffern.

Code: Select all

function random_number($length) { // Creates random number
$original_string = array_merge(range(0,11));
$original_string = implode("", $original_string);
return substr(str_shuffle($original_string), 0, $length);
}

function unique_user_id() {   //Check if number is unique from database
$user_id = random_number(10);
$query = "Select count(*) from users where user_id=?";
...
if($row[0] !=0) { unique_user_id();}
else {return $user_id;}
}

Diese 10-stellige Benutzer-ID kann entweder als int oder bigint gespeichert werden. Dies sind drei mögliche Szenarien.
  • Benutzer-ID als int(10) speichern: Das Problem beim Speichern einer 10-stelligen Benutzer-ID als int ist der maximale Bereich 2 147 483 647. Wenn die obige Funktion eine eindeutige ID 9 999 999 999 generiert, wird diese nicht in der Tabelle gespeichert.
  • Benutzer-ID speichern als int(9): Es kann die maximal generierte Zahl bis zu 999.999.999 speichern. Die obige Funktion muss jedoch die Tabelle mehrmals durchsuchen, um sicherzustellen, dass diese Zahl eindeutig ist.
  • Benutzer-ID als bigint(10) speichern: Dadurch wird das Problem der Speicherung einer eindeutigen Nummer gelöst. Aufgrund der Leistung von bigint im Vergleich zu int als Primärschlüssel entsteht jedoch ein Problem.
Ist der Ansatz zum Erstellen einer eindeutigen Benutzer-ID Gut?
Was ist die beste Option, um diese 10-stellige Benutzer-ID zu speichern?

Top