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

Como hariais esto??

Estas en el tema de Como hariais esto?? en el foro de Programación General en Foros del Web. Hola, No se si este es el foro aducuado o el de mysql, pero ahí va: Estoy haciendo un videoclub y de momento va todo ...
  #1 (permalink)  
Antiguo 12/08/2008, 02:36
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 11 meses
Puntos: 8
Como hariais esto??

Hola,

No se si este es el foro aducuado o el de mysql, pero ahí va:

Estoy haciendo un videoclub y de momento va todo bien y todas las funcionalidades van perfectas.
Las películas y series se pueden añadir y consultar. Al añadirlas se les añaden los siguientes datos:
  • Titulo
  • Género
  • Año
  • Carátula
  • Comentarios

Pero los usuarios que lo testean se han dado cuenta de que una película puede tener más de un género y yo solo permito seleccionar uno mediante un select. Permitir añadir más géneros no es problema, el problema para mi es cuando tengo que leerlos de la base de datos para cuando se realiza la consulta. En mi base de datos (mysql) hasta ahora solo hay un campo "Genero" y otro "ID_Genero", donde el primero contiene el nombre del género y el segundo la posición dentro del select. Por lo tanto no se como reorganizar mi base de datos para poder realizar la consulta sin problemas.
Un ejemplo:

300 ---> Género: Acción - Drama - Aventuras (según www.tomadivix.org)

Si buscamos todas las películas que sean del género acción, drama o aventuras 300 tendría que aparecer. Tal y como tengo la bbdd montada solo me la encontraría por acción.

Insisto, el problema no es juntar todos los posibles generos de una película y insertarlos en la BD. Para mi el problema es el como leerlos o como almacenarlos para que la búsqueda sea más óptima y no tenga que consultar todas las pelis y hacer split() de todos sus generos. No se si me he explicado...

Muchas gracias de antemano!!!
  #2 (permalink)  
Antiguo 12/08/2008, 03:58
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años, 7 meses
Puntos: 13
Respuesta: Como hariais esto??

Eso es una relación N-N (una película puede tener muchos géneros, y un género puede tener muchas películas) por lo tanto debes crear una tabla de relación Película-Género.

Tienes un ID_Genero no? Y tienes también un ID_Película (deberías tenerlo almenos, ya que hay películas con el mismo título), pues sólo tienes que crear otra tabla que relacione los géneros con las pelis:

[Tabla]
Pelicula-Genero

[Campos]
ID_Pelicula
ID_Genero

(Clave primaria ambas: ID_Pelicula, ID_Genero)

Ahora pongamos por ejemplo que la película 300 tiene el ID de 1234. Tendrías:

Código PHP:
[TablaGenero]
ID_Genero1
Genero
Accion

ID_Genero
2
Genero
Porno

ID_Genero
3
Genero
Terror

ID_Genero
4
Genero
Drama

ID_Genero
5
Genero
Aventuras

(...) 
Código PHP:
[TablaPelicula]
ID_Pelicula1234
Pelicula
300
Director
Zack Snyder
Anyo
2007
(...) 
Código PHP:
[TablaPelicula-Genero]
ID_Pelicula1234
ID_Genero
1

ID_Pelicula
1234
ID_Genero
4

ID_Pelicula
1234
ID_Genero

Ahora cuando busques por género, si por ejemplo buscas por Aventuras (El ID_Genero 5) te saldrá 300 (El ID_Pelicula 1234). Si buscas por Drama (El ID_Genero 4), también te saldrá 300 (El ID_Pelicula 1234).

Espero que me haya explicado con claridad.

Por si necesitas ayuda al hacer consultas con tablas relacionadas, mírate información sobre el INNER JOIN. Aunque sino quieres rallarte, puedes hacerlas desde PHP recojiendo el ID de la consulta de la tabla de pelicula-genero, y luego haciendo una nueva consulta con el ID recogido en la tabla pelicula (para sacar el titulo y la info que quieras), pero por rendimiento es mejor usar INNER JOIN.

Saludos
  #3 (permalink)  
Antiguo 12/08/2008, 04:15
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 11 meses
Puntos: 8
Respuesta: Como hariais esto??

Hola,

Me parece uan solución cojonuda. Simple pero que no había caido en ella, quizás la falta de práctica. Muchas gracias!!!

Saludos!
  #4 (permalink)  
Antiguo 12/08/2008, 08:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Como hariais esto??

Tema trasladado a Ingenieria del Software y Gestion de Proyectos.
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 23:02.