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

[DUDA] Sugerencias sobre como realizar esta idea

Estas en el tema de [DUDA] Sugerencias sobre como realizar esta idea en el foro de Mysql en Foros del Web. Como están? Simplemente comentarles que estoy realizando una base de datos, en la cual se van a contener ordenes de trabajo. Las mismas pueden corresponder ...
  #1 (permalink)  
Antiguo 04/06/2013, 19:26
 
Fecha de Ingreso: enero-2008
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Pregunta [DUDA] Sugerencias sobre como realizar esta idea

Como están?

Simplemente comentarles que estoy realizando una base de datos, en la cual se van a contener ordenes de trabajo.

Las mismas pueden corresponder a diferentes locales, los cuales tienen sus clientes propios y otras a particulares directos.

Bien, el tema es el siguiente. La idea con dichas ordenes es ir realizandolas siguiendo según cuando entraron. Es decir la primera que llego sería la primera que se realizará y así sucesivamente... Esto también es sencillo ya que teniendo en cuenta el Numero de ID (por ejemplo) se puede saber y llevar a cabo sin problema.

Ahora bien, la idea es que los locales los cuales pueden enviar por ejemplo 5 máquinas juntas de diferentes clientes, quiero que ellos desde su panel de control, puedan cambiar el orden en el que se realizaran los trabajos que envían, por las dudas que necesiten alguno más urgente que otro sin importar si llego primero o no! Obivamente solamente podrán cambiar el orden en sus trabajos nunca en referencia a los demás.

Les comento que he pensado yo y luego por favor diganmé que les parece o como lo harían si quieren echarme una mano.

primero que nada la tabla ordenes contaría con un ID, con un local, y demás datos como fecha garantía etc etc etc...

yo en dicha tabla agregaría otra columna la cual sería igual a los ID (en principio) ya que sería una columna codigo_prioridad int(8) unsigned NOT NULL auto_increment

de esta manera se iria generando este codigo de prioridad cada vez que ingrese una orden nueva, entonces el orden de los trabajos no se tomaría de la columna ID, sino de esta otra.

Luego desde el menú de administración de los locales, les permitiría seleccionar 2 ordenes y variar su prioridad. entonces en la consulta, seleccionaría el valor de "codigo_prioridad" de una de las ordenes lo guardaría, y lo mismo con el otro, y luego actualizaría las mismas tablas pero con los valores cambiados. de esta manera pasaría a tener más prioridad el trabajo que se eligio y el otro pasaría a estar en la posición del anterior.

Sinceramente creo que debe haber una forma más sencilla, ya que al pensarlo de esta manera entro en un problema que es por ejemplo cuando haya muchas ordenes por ejemplo 5 ordenes del mismo local.

Si el local quiere que la orden número 5 se haga primero, el cambiaría la prioridad de la orden 1 por la orden 5, pero ahora la orden 1 sería la última a realizar... y eso no es realmente lo que yo quiero, yo en realidad quiero que la 5 pase a ser la 1 pero la 1 anterior sea la 2.

Espero qeu se haya entendido mi duda. y espero sus consejos.

Muchas gracias
  #2 (permalink)  
Antiguo 04/06/2013, 20:36
 
Fecha de Ingreso: agosto-2003
Mensajes: 174
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: [DUDA] Sugerencias sobre como realizar esta idea

Bueno, a ver

Yo haría una tabla máquinas
id autoincrement
maquina texto
inicio_garantia fecha
fin_garantia fecha
id_local foreign key de locales

Tabla locales
id autoincrement
direccion texto
telefono texto
contacto texto

ordenes
id autoincrement
id_maquina foreign key de maquinas
fecha datetime
descripcion
prioridad entero
cumplimentada boleana

La relación sería maquinas locales uno a muchos y maquinas ordenes uno a muchos
La prioridad inicial podría establecerse por la fecha Yo pondría el serial de la fecha por ejemplo para que tengas las órdenes clasificadas numericamente

Para cambiar la prioridad intercambias la prioridad entre dos ordenes del mismo local y fecha. Por ejemplo para poner la tercera la primera guardas la prioridad de la primera, haces un update prioridad de primera=prioridad de tercera y haces otro update prioridad de tercera=valor que guardaste. Eso podrías hacerlo con algún procedimiento almancenado y una tabla temporal. No creo que tenga mas de cinco lineas de código.

Cumplimentar una orden supone poner cumplimentada a true

Espero haberte entendido bien
  #3 (permalink)  
Antiguo 05/06/2013, 06:36
 
Fecha de Ingreso: enero-2008
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: [DUDA] Sugerencias sobre como realizar esta idea

Si me has entendido bien. Esta bien la idea de separar las maquinas de las ordenes voy a pensar si vale la pena realmente implementarlo para mantener las maquinas por separado. Esta muy bien para otras cosas también que se me ocurren.

La idea esta bien entendida. Ahora. Si yo quisiera poner la orden numero 4 primera pero que la primera sea segunda la segunda tercera y la tercera 4ta. Como lo podria hacer?

Porque con tu procedimiento y el mio cuando la 4ta pasa a 1ra. La primera se convierte en 4ta. Y no es realmente lo que quisiera.

Gracias.
  #4 (permalink)  
Antiguo 06/06/2013, 01:50
 
Fecha de Ingreso: agosto-2003
Mensajes: 174
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: [DUDA] Sugerencias sobre como realizar esta idea

Es que si haces que la cuarta sea la primera la primera se convierte en cuarta, pero la primera ya la tienes puesta. Ahora la nueva cuarta puedes cambiarla por ejemplo a la segunda con lo que la segunda pasa a ser cuarta, ..., etc.

Hay otros procedimientos posibles, pero ya depende de los medios que quieras usar. Podrías sacar esos datos en un formulario y que el usuario les escribiera los numeros correspondientes (uno para la primera, 2 para la segunda,..., etc). Yo he utilizado el serial de una fecha pero no tiene porque ser eso. Si al principio tienes en el campo prioridad el serial significa que la prioridad está por orden de llegada pero ¿porque no vas a poder cambiar esos números por cualquier otro?

Lo que si es importante en lo conceptual es que te des cuenta de que las maquinas son una entidad. Cuando vas a planificar una base de datos y quieres establecer las tablas y sus relaciones tienes que establecer primero que entidades tienes y que datos le corresponde a cada una. Una tabla por entidad y luego a pensar como las relacionas. En tu caso tienes una entidad de maquinas, otra de ordenes y otra de locales. Lo sabes porque hay datos que necesitas que son específicamente de la maquina y no del local o de la orden. Por eso necesitas una tabla para las maquinas y luego pensar como vas a relacionar esa tabla con las demás.

Etiquetas: idea, sugerencias, tabla
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 12:51.