Foros del Web » Programando para Internet » PHP »

Selects combinados - Base de datos VS ficheros

Estas en el tema de Selects combinados - Base de datos VS ficheros en el foro de PHP en Foros del Web. Buenas, tengo que hacer un buscador de coches que permita escoger marca, modelo y versión, en 3 selects diferentes, que se vayan cargando según el ...
  #1 (permalink)  
Antiguo 29/03/2012, 05:21
danihxh
Invitado
 
Mensajes: n/a
Puntos:
Selects combinados - Base de datos VS ficheros

Buenas, tengo que hacer un buscador de coches que permita escoger marca, modelo y versión, en 3 selects diferentes, que se vayan cargando según el valor del anterior.

En una tabla de la base de datos se encuentran todos los vehículos, y pensé en utilizar DISTINCT para buscar los modelos de una marca concreta y DISTINCT y WHERE para buscar las versiones de un modelo, pero no me convence la idea, porque en la tabla aparecen muchos más datos que no tienen nada que ver con esto.

También pensé en tenerlo todo en archivos txt, de manera que haya uno para el primer select que sea MARCAS.txt, luego por cada marca habría otros llamados (MARCA)-MODELOS.txt y luego otros con las versiones: (MARCA)-(MODELO)-VERS.txt. Ya sé que saldrían muchos archivos, pero creo que esto será más rápido que tener que buscar en una base de datos entre todo su contenido.

¿Qué creéis vosotros? ¿Alguna otra idea?

Gracias!
  #2 (permalink)  
Antiguo 29/03/2012, 08:52
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Selects combinados - Base de datos VS ficheros

creo que tendrías que tener 3 tablas, marcas, modelos y versiones, aparte de las que ya tenes:
marcas ----
id
marca

modelos----
id
id_marca
modelo

versiones----
id
id_marca
id_modelo
version
__________________
la la la
  #3 (permalink)  
Antiguo 29/03/2012, 15:28
danihxh
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Selects combinados - Base de datos VS ficheros

Bueno, eso es parecido a lo que había pensado, pero como marcas y modelos no hay tantos como versiones, creo que sería mejor hacerlo todo en una sola tabla, porque las dos primeras tendrían pocas filas.

Para buscar las marcas se buscaría WHERE modelo="" AND version="" y para buscar modelos WHERE versio="" AND NOT modelo="".

Pero sigo pensando que hacerlo con ficheros sería mejor en este caso, porque la búsqueda es más directa: Seleccionas una marca y se carga todo el contenido de el fichero con ese nombre; seleccionas un modelo y se cargan todas las versiones del fichero asociado.
  #4 (permalink)  
Antiguo 29/03/2012, 18:13
Avatar de Silkon  
Fecha de Ingreso: mayo-2011
Ubicación: Lugo
Mensajes: 201
Antigüedad: 12 años, 10 meses
Puntos: 20
Respuesta: Selects combinados - Base de datos VS ficheros

Yo lo crearía así de fácil.

Una sola tabla con todos los coches y con los campos marca, modelo y versión.

Primer select digamos marca. Muestra consulta por marca y guarda variable de marca

segundo Select digamos modelo. Consulta por modelo y la guardada variable marca + guarda var modelo.

Tercer Select digamos versión. Consulta por versión y las guardadas var marca y modelo.

Creo que es sencillo y efectivo. Espero te sea de ayuda
  #5 (permalink)  
Antiguo 09/04/2012, 16:34
danihxh
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Selects combinados - Base de datos VS ficheros

Bueno, de momento veo que más o menos todo el mundo va por el lado de las bases de datos y me gustaría que me explicasen por qué.

Según lo que me habéis dicho tendría una base de datos coches con 4 campos: ID (int, primary_key), marca (enum, index), modelo (varchar) y version (varchar), a parte de otros que indiquen información de cada vehículo.

La idea sería cargar primero el <select> de las marcas:

Código:
SELECT DISTINCT marca FROM coches
Cuando el usuario escoja una marca, se cargaría el <select> de los modelos con lo siguiente:

Código:
SELECT DISTINCT modelo FROM coches WHERE marca=marca_escogida
Y cuando escoja un modelo, se cargarían las versiones en otro <select> con:

Código:
SELECT version FROM coches WHERE marca=marca_escogida AND modelo=modelo_escogido
.
Pero de todas maneras creo que con archivos sería más rápido, puesto que por ejemplo para cargar todos los modelos de Peugeot, no habría que recorrer los de otros marcas, simplemente cargar linea a linea el contenido de MODELOS_PEUGEOT.txt. Si no es así me gustaría saber por qué y si sería mejor utilizar enum e index también en el campo modelo de la base de datos o si al haber bastante más variedad de modelos que de marcas es mejor varchar sin indexar.

Gracias (:

Última edición por danihxh; 09/04/2012 a las 17:21
  #6 (permalink)  
Antiguo 09/04/2012, 19:20
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Selects combinados - Base de datos VS ficheros

ah menos que tengas millones de registros en las tablas y crearas la peor relación y diseño en la base de datos no hay diferencia en las sentencias que vas a hacer si tienes miles de registros, aparte de que puedes acceder a los datos de manera simultanea, cosa que con los archivo no es, mientras un usuario tenga abierto un archivo para leerlo no será posible que otro usuario lea el mismo archivo, este tiene que esperar a que el otro termine, aparte de esto, si en un futuro deseas cambiar algo o agregar mas items a algún archivo tendrás que hacerlo manualmente, con la base de datos no es así
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 11/04/2012, 03:15
danihxh
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Selects combinados - Base de datos VS ficheros

De acuerdo, gracias. Eso era lo que necesitaba saber (:
  #8 (permalink)  
Antiguo 12/04/2012, 08:41
danihxh
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Selects combinados - Base de datos VS ficheros

Sólo una pregunta más, había pensado en utilizar indices distintos en los campos marca, modelo y versión, pero supongo que utilizar un solo índice para los tres campos (INDEX vehiculos_IND (marca, modelo, version)) será mucho mejor ¿no?

¿Afectará a la velocidad de las búsquedas que estos campos sean VARCHAR?
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 06:47.