Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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é wink

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

champoul a écrit :

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é wink

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