Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como generar localizador de reserva aleatorio tipo ZX32B1

Estas en el tema de Como generar localizador de reserva aleatorio tipo ZX32B1 en el foro de Mysql en Foros del Web. Hola estoi montando una base datos para una agencia de reserva de cruceros en la que tengo una tabla con una clave primaria que viene ...
  #1 (permalink)  
Antiguo 11/03/2007, 12:34
 
Fecha de Ingreso: marzo-2007
Mensajes: 26
Antigüedad: 17 años
Puntos: 0
Como generar localizador de reserva aleatorio tipo ZX32B1

Hola estoi montando una base datos para una agencia de reserva de cruceros en la que tengo una tabla con una clave primaria que viene a ser el identificador de la reserva que se le da al cliente al finalizar la compra.
La historia es que de momento esa clave es un entero que se autoincrementa tomando valores conecutivos. Quisiera saber si existe alguna forma de pedirle a mysql que genere una clave de 6 caracteres (dígitos y letras) pero con valores aleatorios no consecutivos teniendo en cuenta que no pueden repetirse.

Algunos ejemplos de localizadores podrían ser los siguientes:
TR45D3S
XZCC301
HLPO961


Con seis caracteres es más que suficiente porque cada uno puede tomar valores desde la A a la Z y del 0 al 9 es decir 37 valores distintos.
37 ^6 = 2.565.726.409 reservas posible.
En el peor de los casos la agencia podría realizar 600.000 reservas al año asi que me da de sobra. Al tomar valores aleatorios de alguna manera tengo que garantizar que entre reservas queden suficientes valores sin asignar para evitar que al tratar de asigmar un valor ya utilizado tenga bastantes probabilidades de encontrar aleatoriamente otro que este libre para usar.

Gracias por la ayuda y perdon por el rollo del final
  #2 (permalink)  
Antiguo 11/03/2007, 16:13
 
Fecha de Ingreso: febrero-2006
Mensajes: 134
Antigüedad: 18 años, 1 mes
Puntos: 10
Re: Como generar localizador de reserva aleatorio tipo ZX32B1

Mejor que lo hagas programándolo y no dejando a MySQL solo con eso...

Si usas php podrías usar algo como
Código PHP:

function genera_aleatorio() {
$cars = array('0''1''2''3''4''5''6''7''8''9',
 
'A''B''C''D''E''F''G''H',
 
'I''J''K''L''M','N','O','P','Q',
 
'R','S','T','U','V','W','X','Y','Z');

$longitud 6;


$aleat '';
for(
$i 0$i $longitud$i++) {
$aleat .= $cars[rand(0count(cars))];
}

// Ahora consultas si ya existe.
// Si existe, vuelves a llamar a la funcion

$r mysql_query(SELECT FROM `tutablaWHERE id $aleat);
if(empty(
mysql_fetch_array($r))) {
 return 
$aleat
} else {
 return 
genera_aleatorio(); 
}


  #3 (permalink)  
Antiguo 14/03/2007, 16:42
 
Fecha de Ingreso: marzo-2007
Mensajes: 26
Antigüedad: 17 años
Puntos: 0
Re: Como generar localizador de reserva aleatorio tipo ZX32B1

Gracias por la respuesta,en mi caso estoi trabajando con JSP y Servlet pero me sirve igual. Cuando lo adapte y lo pruebe lo publico por si le sirve de utilidad a alguien.
Gracias


PD: he conseguido generar el localizador aleatorio con procedure y trigger. Lo podeis ver en este foro en el hilo:
Generar Localizador Reserva aleatorio con PROCEDURE Y TRIGGER
En w w w . forosdelweb.com/showthread.php?t=474036

Un saludo Jorge F.M. (UAX Calico)

Última edición por digdig; 18/03/2007 a las 22:17
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:18.