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

Consejo por favor de administracion de mis tablas

Estas en el tema de Consejo por favor de administracion de mis tablas en el foro de Mysql en Foros del Web. Hola a todos amigos espero y puedan ayudarme con este dolor de cabeza lo que pasa es quiero realizar una base de datos sobre servicios ...
  #1 (permalink)  
Antiguo 14/05/2009, 11:49
 
Fecha de Ingreso: enero-2009
Ubicación: Tijuana
Mensajes: 80
Antigüedad: 15 años, 3 meses
Puntos: 2
Consejo por favor de administracion de mis tablas

Hola a todos amigos espero y puedan ayudarme con este dolor de cabeza
lo que pasa es quiero realizar una base de datos sobre servicios automotrices
y pues tengo que buscar esta informacion:

Giro, Direccion, Estado. estos son los datos que necesito buscar en mi base de datos.

ahora bien me podrian ayudar a acomodar mis tablas o como unirlas para conseguir mi consulta. de antemano gracias.

hasta ahora tengo una tabla que se llama fundador
mis campos son giro, direccion, estado, palabra

y no se que me recomiendan si hago una tabla de giro, otra de estado y otra de palabra para realizar mas exacta mi busqueda o con una sola tabla estaria bien.

Muchas gracias. buen dia.

atte. Jose-web
  #2 (permalink)  
Antiguo 14/05/2009, 13:58
 
Fecha de Ingreso: mayo-2009
Mensajes: 8
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Consejo por favor de administracion de mis tablas

Hola!
Si deseas hacerlo de la forma técnicamente correcta, lo mejor es tener una tabla "catálogo" por cada entidad que se repertirá N veces en otra tabla.

Es decir, tendrías al menos tres tablas: giros, Estados, y fundadores (?), lo de palabras queda en duda según el tipo de uso que pretendas darle al dato.

cada registro de cada tabla "catálogo" debe tener un id único para que pueda relacionarse con otra tabla para hacer un query eficiente.

por ej. yo lo haría más o menos así

giros
id_giro, descrip
1, concesionaria
2, taller eléctrico
3, taller mecánico
etc.

estados
id_edo, clave, estado

1,AGS,Aguascalientes
2,BC, Baja California
3,BCS, Baja California Sur
etc

fundadores
id,nombre,direccion,id_giro,id_estado
1,serivicios mayoral, calz independencia #100,3,2
etc

los id de cada tabla catálogo deben ser campos autoincrementables y fungir como llaves primarias.

La cosa de los queries ya es otra historia

Para lo de las palabras se me ocurre que estás buscando definir un set de palabras claves para cada registro, ahí tienes dos caminos:
1. hacer un catálogo de palabras
Esto, complica un poco más las cosas ya que necesitarías una tabla auxiliar para relacionar la tabla fundador con la tabla palabras, y ésta tendría un registro por cada relación. este enfoque tiene ventajas y desventajas que quizá de momento no vale la pena explicar... si quieres lo detallo después.

2. hacer en fundadores un campo texto que contenga un indice de tipo fulltext para realizar busquedas eficientes en dicho campo. En cuestión de la base de datos es una muy buena opción si tienes cuidado en tu programación para evitar que se convierta en una ineficiencia. También este enfoque tiene sus ventajas y desventajas que si gustas comentamos.

Como ves? espero te sirva.

Saludos
  #3 (permalink)  
Antiguo 14/05/2009, 14:12
 
Fecha de Ingreso: enero-2009
Ubicación: Tijuana
Mensajes: 80
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Consejo por favor de administracion de mis tablas

Cita:
Iniciado por Grutzen Ver Mensaje
Hola!
Si deseas hacerlo de la forma técnicamente correcta, lo mejor es tener una tabla "catálogo" por cada entidad que se repertirá N veces en otra tabla.

Es decir, tendrías al menos tres tablas: giros, Estados, y fundadores (?), lo de palabras queda en duda según el tipo de uso que pretendas darle al dato.

cada registro de cada tabla "catálogo" debe tener un id único para que pueda relacionarse con otra tabla para hacer un query eficiente.

por ej. yo lo haría más o menos así

giros
id_giro, descrip
1, concesionaria
2, taller eléctrico
3, taller mecánico
etc.

estados
id_edo, clave, estado

1,AGS,Aguascalientes
2,BC, Baja California
3,BCS, Baja California Sur
etc

fundadores
id,nombre,direccion,id_giro,id_estado
1,serivicios mayoral, calz independencia #100,3,2
etc

los id de cada tabla catálogo deben ser campos autoincrementables y fungir como llaves primarias.

La cosa de los queries ya es otra historia

Para lo de las palabras se me ocurre que estás buscando definir un set de palabras claves para cada registro, ahí tienes dos caminos:
1. hacer un catálogo de palabras
Esto, complica un poco más las cosas ya que necesitarías una tabla auxiliar para relacionar la tabla fundador con la tabla palabras, y ésta tendría un registro por cada relación. este enfoque tiene ventajas y desventajas que quizá de momento no vale la pena explicar... si quieres lo detallo después.

2. hacer en fundadores un campo texto que contenga un indice de tipo fulltext para realizar busquedas eficientes en dicho campo. En cuestión de la base de datos es una muy buena opción si tienes cuidado en tu programación para evitar que se convierta en una ineficiencia. También este enfoque tiene sus ventajas y desventajas que si gustas comentamos.

Como ves? espero te sirva.

Saludos
Me agrada tu idea grutzen, asi que tendria problemas al hacer el query con fundador y catalago.....mmmm

pues solamente que haga pruebas, pero como podria relacionar el catalogo, seria solamente con fundador entonces seria algo asi no? :

id_palabra
palabra
id_giro
id_edo
id_

estoy en lo correcto? para obtener mi resultado exacto.

por que estaba usando algo asi:

SELECT * FROM fundador where match(nombre,direccion,estado,palabra) against ( '$giro*' '$ubicacion*' '$localidad*' in boolean mode)

este es mi query, el problema era tal vez que lo tenia en una sola tabla y tal vez por eso no estaba bien mi consulta.

lo que pasa es que si ponia "auto lavado tijuana" me aparecia todos los registros que contenian la palabra auto, lavado, tijuana y pues en realidad eso no queria por que aparecian unos que tenian en su palabra : "auto partes, auto estereos" y este es mi problema que no encontraba exactamente aquel fundador que buscaba solamente por "auto lavado"

muchas gracias por la ayuda, espero y puedas aconsejarme sobre lo que pongo aqui
  #4 (permalink)  
Antiguo 14/05/2009, 14:44
 
Fecha de Ingreso: mayo-2009
Mensajes: 8
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Consejo por favor de administracion de mis tablas

Cita:
Iniciado por jose-web Ver Mensaje
...

por que estaba usando algo asi:

SELECT * FROM fundador where match(nombre,direccion,estado,palabra) against ( '$giro*' '$ubicacion*' '$localidad*' in boolean mode)
Ojo, fíjate que precisamente esas cláusulas match/against funciona bien solamente con campos indexados fulltext... precisamente algo así necesitarías usar eso con el esquema 2 que te ponía para las palabras.

y el match against es lo que hace, busca los registros que coinciden total o parcialmente con las palabras deseadas, que en realidad no es mala idea, de hecho es deseable si lo que estás haciendo es una búsqueda.

Yo hice un caso similar para personas y si por ej ponía LUIS MARTINEZ MARQUEZ
en primer lugar me salía LUIS MARTINEZ MARQUEZ pero abajo me salían MARTINEZ, MARQUEZ y LUISes, en ese orden, lo que le gustó mucho al cliente.

Eso lo logras con el query que tienes pero ordenando por score.

Chécate esta liga donde hay un super buen artículo para las búsquedas full text: devzone.zend.com/article/1304
  #5 (permalink)  
Antiguo 14/05/2009, 15:08
 
Fecha de Ingreso: enero-2009
Ubicación: Tijuana
Mensajes: 80
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Consejo por favor de administracion de mis tablas

grutzen me parece muy bien, osea que unicamente el de catalogo de palabra seria fulltext indexados verdad?

oye y podrias ponerme un ejemplo con score? es que esta algo confuso talvez con tus palabras lo aprenderia mucho mejor, te lo agradeceria mucho.

y tu liga me parece muy buena, buen aporte !!!, pues voy a trabajar con eso lo que pasa es que aqui el cliente no quiere que aparezcan otros que no se "auto lavado" que no corresponda, y tu ventaja es que a ellos si les agrado que aparecieran mas personas.

Pues voy a intentar de conjugar las tablas y ver resultados, me gustaria que despues nos contactaramos por otro medio. tal vez que me permitieras agregarte a mis contactos, no se que opines, que tengas un excelente dia.

me voy a comer jejejjeje te agradezco tu ayuda y tu atencion. bye.
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 03:55.