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

MySQL DBMS-Forum
Guest
 Erstellen eines eindeutigen Primärschlüssels und Speichern als int oder bigint [Duplikat]

Post by Guest »

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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post