Pages : 1
#1 Le 06/05/2008, à 13:16
- 2Coin
Générer un code aléatoire
Bonjour,
Comment générer un code numérique aléatoire de 5 numéros qui servirai de clé à la table lorsque qu'un nouvel utilisateur s'inscrit dans une BDD sql et qu'il lui servirai d'identifiant numérique
par exemple dans la table :
Code aléatoire :
Nom :
Prénom :
J'espère que vous avez compris ce que je veux dire ?
Merci
Hors ligne
#2 Le 06/05/2008, à 13:23
- alexduf
Re : Générer un code aléatoire
Bonjour,
pourquoi générer une clé aléatoire? En faisant ça tu risque de tomber deux fois sur la même clé. Même si le risque est faible, le risque existe. Quasiment toutes les bases de données te donnent la possibilité de créer des séquences, qui ne sont rien d'autres que des chiffres qui s'incrémentent à chaque fois que tu demande un numéro.
Ainsi, pour ton premier utilisateur, il aura le numéro 1, le deuxième le numéro 2 etc...
Chaque personne est certaine d'avoir un numéro unique sans avoir le risque de "collision" que tu aurais avec une génération de numéro aléatoire.
Après si tu souhaite avoir un identifiant sur 5 caractères, il suffit de combler avec des 0 (00001, 00002, ...) ;-)
Dernière modification par alexduf (Le 06/05/2008, à 13:23)
Hors ligne
#3 Le 06/05/2008, à 15:18
- champoul
Re : Générer un code aléatoire
Il a peut être ses raisons, et rien ne l'empêche de tester si le numéro n'est pas déjà pris après l'avoir généré
Et tu veux faire ça en quel langage au juste 2Coin ?
Hors ligne
#4 Le 06/05/2008, à 15:30
- alexduf
Re : Générer un code aléatoire
Il a peut être ses raisons, et rien ne l'empêche de tester si le numéro n'est pas déjà pris après l'avoir généré
certainement, je trouvais juste l'idée un peu saugrenue... Surtout quand on sait que la création d'identifiant est un problème récurant dans le monde des bases de données, et que des mechanismes ont étés mis en place pour faciliter la tâche.
Pour générer un nombre aléatoire, tout les langages ont ce type de fonctionnalités.
Il s'agit de quoi comme langage?
Hors ligne
#5 Le 06/05/2008, à 15:48
- 2Coin
Re : Générer un code aléatoire
du java
Hors ligne
#6 Le 06/05/2008, à 16:06
- alexduf
Re : Générer un code aléatoire
Hop, ça doit donner ça :
(génère un nombre aléatoire entre 0 et 99999)
public class MaClass {
private static final Random random = new Random();
public static void main(String[] args) {
int monIdentifiantAleatoire = random.nextInt(100000);
System.out.println("Mon identifiant est : " + monIdentifiantAleatoire );
}
}
Juste par curiosité, pourquoi vouloir un nombre aléatoire ?
Dernière modification par alexduf (Le 06/05/2008, à 16:07)
Hors ligne
#7 Le 07/05/2008, à 14:01
- tominardi
Re : Générer un code aléatoire
c'est pas parce que certain site donnent l'impression d'avoir des identifiants aléatoire ? alors qu'il s'agit en fait de données encryptées (md5 tout ça) ?
Hors ligne
#8 Le 07/05/2008, à 16:49
- nicolas66
Re : Générer un code aléatoire
Sauf raison valable, ca me paraît effectivement risqué de prendre un id aléatoire pour la clé d'une table de bd pour deux raisons :
- Tu risques de retomber sur le même id
- Plus tu auras de données dans ta table, plus la probabilité de retomber sur un id existant sera élevée et plus le coût de tester si l'id est déjà pris sera grand.
La plupart des bd possèdent un mécanisme plus simple pour gérer ce genre de souci : les champs auto-incrémentables. Dès que tu insères un nouvel utilisateur, l'id est automatiquement incrémenté. L'auto-incrémentation d'une clé se défini lors de la création de la table.
Exemple en SQL
CREATE TABLE `foo`(
`id` INT(5) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY(`id`)
)
Dernière modification par nicolas66 (Le 07/05/2008, à 16:54)
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
Pages : 1