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

Orden de Item por Usuario

Estas en el tema de Orden de Item por Usuario en el foro de Bases de Datos General en Foros del Web. Hola, como estan? queria hacerles una consulta sobre como armar una seccion de un sitio. En el mismo, los usuarios tienen 2 listados de items, ...
  #1 (permalink)  
Antiguo 15/06/2013, 13:25
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Orden de Item por Usuario

Hola, como estan?

queria hacerles una consulta sobre como armar una seccion de un sitio.
En el mismo, los usuarios tienen 2 listados de items, uno de los creados por ellos mismos y el otro, los que pertenecen a otros usuarios pero han decidido guardar.

La idea es que ambas listas puedan reordenarse a criterio del usuario (usando sortable de jQuery), y luego guardar el nuevo orden.

Hasta ahora, la forma que se me ha ocurrido hacerlo es con 2 tablas "orden_creado" y "orden_guardado":

- Al crear un item, ingreso una fila en "orden_creado" con el id de Item, Usuario y ultima posicion segun la cantidad que ha creado.
- Al guardar un item, ingreso una fila en "orden_guardado" con el id de Item, Usuario y ultima posicion segun la cantidad que ha guardado.

Pero a la hora de actualizar cualquiera de las 2, se hace poco practica. Ej: si el usuario borra un item guardado cuya posicion es la 1era, debo actualizar todo el resto de los items restandoles una posicion..

se entiende?

es la mejor manera (optima, organizada)? o podria tan solo dar una fila a cada usuario en cada tabla y guardar las posiciones en forma de array en el registro.. o bien, un xml..

que creen?

saludos y gracias por cualquier aporte!
  #2 (permalink)  
Antiguo 16/06/2013, 17:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Orden de Item por Usuario

No necesitas hacer cosas tan complicadas. Si diseñas correctamente la estructura de relaciones, simplemente defines esos ordenamientos en base a uso de índices.
Por supuesto que vendría muy bien que nos dijeses en qué DBMS se supone que estás trabajando...

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/06/2013, 08:08
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Orden de Item por Usuario

gracias por tu respuesta,
actualmente estoy trabajando en php y utilizo phpmyadmin para administrar la base de MySql (en realidad el grueso lo hago con HeidiSql)..

podria decirme un ejemplo del ordenamiento en base a indices? esto no implicaria entonces tener todos los avisos en 2 nuevas tablas?
  #4 (permalink)  
Antiguo 17/06/2013, 10:04
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Orden de Item por Usuario

bueno, he estado leyendo un poco mas sobre claves primarias y foraneas (incluso algo sobre normales como aqui

veo entonces que he estado realizando las cosas de manera incompleta (en toda la base).

Si bien cada tabla tiene su clave primaria (mayormente campos incrementales), en las tablas dependientes incluyo ese campo clave pero sin especificar que es una clave foranea.

Creo que pasare un tiempo reacomodando todo..

Particularmente para el caso planteado, corrijanme si me equivoco, debere:

En la tabla usuario dejar el idUsuario como clave primaria y luego el resto de los campos (mail, password, fecha de registro, etc).
En la tabla items, idItem como clave primaria e idUsuario como clave foranea.

En la tabla ordenes, declarar idItem e idUsuario como claves foraneas?
debere agregar aqui tambien un idOrden autoincremental como clave primaria?

es necesario, partiendo de lo nombrado arriba, declarar mas indices por tabla?
  #5 (permalink)  
Antiguo 19/06/2013, 00:08
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 7
Respuesta: Orden de Item por Usuario

@mumraa

La ultilizacion de claves primarias o foraneas, corresponde a un analisis que se realiza cuando diseñas tus tablas y ves como vas a trabajar, y tambien corresponde al modelo entidad - relacion que has definido previamente.

en mension a tu consulta, no se trata de definir claves y repartirlas por todas las tablas, hay que estudiar como vas a interactuar con las tablas. Por ejmplo:

Cita:
En la tabla usuario dejar el idUsuario como clave primaria y luego el resto de los campos (mail, password, fecha de registro, etc).
En la tabla items, idItem como clave primaria e idUsuario como clave foranea.
Con lo que mencionas aqui, me indicas que un item podra tener solo un usuario, pero que un usuario, podra tener mas de un item, es eso lo que deseas lograr ?. Si fuese un ejemplo optmo en que un item puede tener mas de un usuario, y que un usuario puede tener mas de un item, pues entonces tendrias que crear otra tabla mas en la cual tendrias tres tablas:

- tabla usuario.
- tabla items.
- tabla usuario_items.

Y en la cual la tabla items, solo tendria que tener la clave primaria iditem y descripcion, y la tabla usuario_item, tendria que tener una clave primaria como isUsuarioItem, la clave de usuarios: idUsuario; y la clave de items: idItems. Y asi te aseguras que tus tablas esten normalizadas.

espero haberte aclarado tu consulta.
Saludos.
  #6 (permalink)  
Antiguo 21/06/2013, 15:01
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Orden de Item por Usuario

Hola Max, gracias por responder..

quizas no me he hecho entender bien, disculpas por eso..
comprendo que el tema claves primarias y foraneas no consiste en "definir claves y repartirlas por todas las tablas" (es muy descriptiva esa frase :D).

En mi caso en particular, el idUsuario sera usado en casi todas las tablas. Por ello, nombre su importancia.

Para el caso en cuestion:

- Cada usuario puede crear muchos items
- Cada item puede tener un solo usuario creador/editor
- El usuario puede dar orden a los items creados (tabla orden creado)

Lo que planteaba que quizas confundio, es que tambien:
- Un usuario puede guardar items de otros usuarios y ordenarlos (tabla orden guardado), pero solo a modo informativo, porque dichos items le resultaron atractivos.

Como estas nuevas tablas (orden_creado y orden_guardado), plantean relacion muchos a muchos, considere que deberian tener idRelacion - idUsuario - idAviso - Posicion en ambas..

Etiquetas: php
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:58.