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

[SOLUCIONADO] Mejor diseño para una BD

Estas en el tema de Mejor diseño para una BD en el foro de Bases de Datos General en Foros del Web. Buenas amigos. Estoy diseñando un sistema, y estoy teniendo algunas dudas con el diseño de la base de datos, no se como hacerlo de la ...
  #1 (permalink)  
Antiguo 06/10/2013, 13:07
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 9 años, 7 meses
Puntos: 17
Mejor diseño para una BD

Buenas amigos.

Estoy diseñando un sistema, y estoy teniendo algunas dudas con el diseño de la base de datos, no se como hacerlo de la mejor forma. Les pasaré a explicar el sistema para que puedan ofrecerme consejos.

¿Conocen series.ly? Para el que no lo conozca, es una web en la cual puedes ver/descargar series y películas, y llevar un "control" del contenido que ves, mediante el seguimiento de series, el marcado de capítulos vistos y toda esta historia.

Yo estoy diseñando algo parecido, y a la hora de diseñar la base de datos, me encuentro con la siguiente duda, y es que a la hora de que un usuario empiece a seguir una serie, cómo controlar los capítulos que lleva vistos, ademas de que habría la posibilidad de marcar algunos capítulos como favoritos, o añadir notas a algún capítulo concreto.

La primera opción que puede ocurrirse es una tabla solo para esto, donde cuando un usuario empiece a seguir una serie, introduzca en esta tabla el ID de todos los capítulos de esa serie y el del usuario, y un campo que sea "visualizado", otro "favorito" y otro para "notas", pero si ponemos como ejemplo una serie como "Friends", la cual consta de 10 temporadas con unos 24 capítulos cada una, se generarían 240 registros para cada usuario que esté siguiendo esa serie, y creo que esa no es la mejor forma.

Pues ese es mi problema, espero haberme explicado bien y a ver si algún compañero puede ofrecer ayuda.

Gracias.
  #2 (permalink)  
Antiguo 09/10/2013, 09:01
 
Fecha de Ingreso: agosto-2010
Ubicación: Montevideo
Mensajes: 107
Antigüedad: 9 años, 3 meses
Puntos: 3
Respuesta: Mejor diseño para una BD

Yo lo haría así

Tabla series

id series
nombre
........


Tabla Capitulos
id Capitulo
Id Serie
nombre
...........

tabla usuario
id usuario
nombre
........

tabla capitulos vistos
id usuario
id capitulo
...............
  #3 (permalink)  
Antiguo 09/10/2013, 10:26
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 9 años, 7 meses
Puntos: 17
Respuesta: Mejor diseño para una BD

Pero ahí faltarían bastantes cosas de las que expongo, no?

Agradezco tu respuesta, pero eso no me valdría.

Gracias.
  #4 (permalink)  
Antiguo 09/10/2013, 10:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Mejor diseño para una BD

Cita:
pero si ponemos como ejemplo una serie como "Friends", la cual consta de 10 temporadas con unos 24 capítulos cada una, se generarían 240 registros para cada usuario que esté siguiendo esa serie, y creo que esa no es la mejor forma.
Esa no sólo es la mejor forma. Es la forma correcta de hacerlo. de lo contrario no tendrías jamás trazabilidad histórica y al mismo tiempo normalización de la base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 09/10/2013 a las 11:29
  #5 (permalink)  
Antiguo 09/10/2013, 12:04
 
Fecha de Ingreso: agosto-2010
Ubicación: Montevideo
Mensajes: 107
Antigüedad: 9 años, 3 meses
Puntos: 3
Respuesta: Mejor diseño para una BD

Si quieres llevar un seguimiento de cada capítulo, tendrás por lo menos que generar un registro por cada capítulo al que hagas referencia.


La solución que pensé es en base a que a veces uno comienza una serie y ve algún capitulo, luego se olvida.

Entonces guardarías en la tabla:

tabla capitulos vistos
id usuario
id capitulo
................

puedes agregar en los puntos suspensivos los camopos:
visualizado
favorito
nota

cambiar el nombre de la tabla a :capitulos_usuarios.

Quedaría así:

tabla capitulos_usuarios
id usuario
id capitulo
visualizado
favorito
nota

Luego solo agregarías un registro cuando el usuario interactúa con el capítulo.
Si el usuario, ve, marca como favorito o crea nota en todos los capítulos de las 24 series tendrías igual los 240 registros por usuario.

Pero ahorrarías mucho espacio si los usuarios no tendieran en su mayoría a interactuar con el 100% de los copítulos una vez que empieza con una serie.

Por último no soy un erudito en esto Simplemente vi que tenía un par de días el post e intenté darte una mano. A veces escuchando otra opinión. aunque no sea la mejor, reafirmamos la nuestra o le podemos modificar alguna cosa y eso nos da impulso para seguir adelante.
  #6 (permalink)  
Antiguo 09/10/2013, 13:08
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 9 años, 7 meses
Puntos: 17
Respuesta: Mejor diseño para una BD

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Esa no sólo es la mejor forma. Es la forma correcta de hacerlo. de lo contrario no tendrías jamás trazabilidad histórica y al mismo tiempo normalización de la base.
Entiendo.

Tampoco tengo mucha experiencia con el diseño de bases de datos, y por eso vine a pedir ayuda aquí, porque me parecía que podría ser un poco burrada si se registrasen 10 usuarios por ejemplo y se ponen a seguir una serie con tantos capítulos, generaría un montón de registros y no se como afectaría eso al rendimiento, pero si la forma correcta es esa, así seguiré implementando el sistema.

Gracias.

Cita:
Iniciado por francap Ver Mensaje
Si quieres llevar un seguimiento de cada capítulo, tendrás por lo menos que generar un registro por cada capítulo al que hagas referencia.


La solución que pensé es en base a que a veces uno comienza una serie y ve algún capitulo, luego se olvida.

Entonces guardarías en la tabla:

tabla capitulos vistos
id usuario
id capitulo
................

puedes agregar en los puntos suspensivos los camopos:
visualizado
favorito
nota

cambiar el nombre de la tabla a :capitulos_usuarios.

Quedaría así:

tabla capitulos_usuarios
id usuario
id capitulo
visualizado
favorito
nota

Luego solo agregarías un registro cuando el usuario interactúa con el capítulo.
Si el usuario, ve, marca como favorito o crea nota en todos los capítulos de las 24 series tendrías igual los 240 registros por usuario.

Pero ahorrarías mucho espacio si los usuarios no tendieran en su mayoría a interactuar con el 100% de los copítulos una vez que empieza con una serie.

Por último no soy un erudito en esto Simplemente vi que tenía un par de días el post e intenté darte una mano. A veces escuchando otra opinión. aunque no sea la mejor, reafirmamos la nuestra o le podemos modificar alguna cosa y eso nos da impulso para seguir adelante.
Muchas gracias de nuevo francap, por supuesto que se agrede mucho la respuesta y la ayuda, solo que como no respondía directamente al problema que planteaba, por eso te dije que no me solucionaba el tema, pero te lo agradezco de veras.

Un saludo.
  #7 (permalink)  
Antiguo 09/10/2013, 13:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Mejor diseño para una BD

Cita:
Tampoco tengo mucha experiencia con el diseño de bases de datos, y por eso vine a pedir ayuda aquí, porque me parecía que podría ser un poco burrada si se registrasen 10 usuarios por ejemplo y se ponen a seguir una serie con tantos capítulos, generaría un montón de registros y no se como afectaría eso al rendimiento, pero si la forma correcta es esa, así seguiré implementando el sistema.
La idea es que esa tabla es la representación de una relación N:N entre Usuarios CapitulosVistos (supongamos).
cada registro representa:
1) Usuario que mira la serie.
2) Serie vista
3) Capitulo visto
4) Inicio de visualizacion
5) Fin de visualziacion
6) Punto de visualizacion (opcional), que repesentaría, si fuese posible, el punto en que interrumpió la reproduccion,por ejemplo. Este es un detalle que surge de la definición de las reglas del ssitema.

En definitiva, estamos hablando de una tabla que conserva sólo Ids, que si fuesen numéricos, serían apenas 48 bytes por registro.
¿Cuánto crees que tardaría en agotarse tu espacio de disco en ese contexto.

Además, piensa que los DBMS se diseñaron precisamente para hacer busquedas de datos de ese tipo y peores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: analisis, diseño, estudio
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

SíEste tema le ha gustado a 1 personas




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