Foros del Web » Programando para Internet » PHP »

Normalizar datos recibidos

Estas en el tema de Normalizar datos recibidos en el foro de PHP en Foros del Web. Hola a todos y gracias de antemano, espero que podáis ayudarme con una duda que tengo para añadir una función a un proyecto que estoy ...
  #1 (permalink)  
Antiguo 10/04/2013, 05:12
 
Fecha de Ingreso: marzo-2013
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 1
Normalizar datos recibidos

Hola a todos y gracias de antemano, espero que podáis ayudarme con una duda que tengo para añadir una función a un proyecto que estoy realizando. Os comento:

Estoy con un proyecto donde recibo varios XML de diferentes lugares, son datos parecidos entre sí pero cada uno me lo manda con su formato. Lo que quiero hacer es normalizar los datos antes de guardarlos en la base de datos.

Ejemplo: Como recibo los datos…


XML1: FB Barcelona
XML2: Barcelona
XML3: Futbol Club Barcelona
XML4: F.C Barcelona

Lo que quiero hacer es una función donde antes de guardar los datos en la base de datos los normalice todos a F.C Barcelona por ejemplo y guarde cada dato de los diferentes XML todos con el mismo nombre. Un saludo y Gracias a todos.
  #2 (permalink)  
Antiguo 10/04/2013, 05:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Normalizar datos recibidos

Necesitaras un par de tablas de conversión, tipo diccionario de sinonimos....

TerminosNormalizados
idTM
termino

Sinonimos
idSn
idTM FK referenciando TerminosNormalizados
sinonimo

Donde tengas

TerminosNormalizados
1 F.C Barcelona
....

Sinonimos
1 1 FB Barcelona
2 1 Barcelona
3 1 Futbol Club Barcelona
4 1 F.C Barcelona
....

(Tambien se puede implementar con una sola tabla de sinonimos y un campo mas donde se marque cual es el termino correcto o dejando como nulo el idTN, idTN ahora seria una FK a la misma tabla sinonimos, referenciando idS)

Luego jugar con sql para que te substituya el sinonimo por el termino normalizado. No hay otra forma de hacerlo... y obviamente no es facil de implementar ni de prever todos los sinonimos posibles....

Un sistema seria que la aplicación busque el terminio en Sinonimos y si no esta pregunte si se trata de un nuevo termino normalizado o de un nuevo sinonimo para alguno de los terminos existentes.

En el primer caso se agrega en las dos tablas y

en el segundo solo se agrega a la tabla de sinonimos (con el identificador de termino normalizado al que corresponda).

Si implementas este funcionamiento podrías guardar solo el id del termino normalizado en la tabla de datos, ahorrando mucho espacio.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 10/04/2013, 05:59
 
Fecha de Ingreso: marzo-2013
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: Normalizar datos recibidos

Y no se podria hacer antes de escribirlo es decir.

Lo leo, lo estandarizo, lo grabo en la BD.
  #4 (permalink)  
Antiguo 10/04/2013, 06:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Normalizar datos recibidos

Si eso es lo que te estoy diciendo pero... con algo tienes que comparar lo que lees, no?

Tu y yo si vemos FB Barcelona, Barcelona, Futbol Club Barcelona o F.C Barcelona entendemos lo mismo, the best, pero la maquina solo ve cadenas de texto distintas.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 13/04/2013, 09:53
 
Fecha de Ingreso: marzo-2013
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: Normalizar datos recibidos

Hola amigos, gracias por la información ahora tengo un pequeño "problema". Más bien no sé por dónde empezar, ya tengo las tablas creadas con los datos de los sinónimos y todo eso. Bien ahora quiero hacer el proceso de como preguntar a la base de datos y comparar los valores, para que escriba el valor estandarizado. Espero que puedan ayudarme gracias.
  #6 (permalink)  
Antiguo 13/04/2013, 09:58
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: Normalizar datos recibidos

mira parece que lo que preguntas es como conectarte a mysql...

Lee la documentacion

http://php.net/manual/es/book.mysqli.php

Aqui va un ejemplo

http://www.dacostabalboa.com/es/como...n-mysqli/16888
  #7 (permalink)  
Antiguo 13/04/2013, 10:18
 
Fecha de Ingreso: marzo-2013
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: Normalizar datos recibidos

Creo que me explique mal, me explico de nuevo:

Tabla Equipos.

Columna 1: ID Equipo
Columna 2: Nombre Equipo (Estandarizado)
Columna 3: Sinonimos.

El proceso seria preguntar a la base de datos que busque en la columna "Sinonimos" y cuando lo encutre me duvuelva el "Nombre Equipo" que seria el estandarizado.
  #8 (permalink)  
Antiguo 13/04/2013, 10:23
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: Normalizar datos recibidos

Código PHP:
Ver original
  1. select * from tabla_sinonimos where campo_a_buscar like '%algo%'
ó
Código PHP:
Ver original
  1. select * from tabla_sinonimos where campo_a_buscar ='algo'
  #9 (permalink)  
Antiguo 13/04/2013, 10:26
 
Fecha de Ingreso: marzo-2013
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: Normalizar datos recibidos

Cita:
Iniciado por alex1084 Ver Mensaje
Código PHP:
Ver original
  1. select * from tabla_sinonimos where campo_a_buscar like '%algo%'
ó
Código PHP:
Ver original
  1. select * from tabla_sinonimos where campo_a_buscar ='algo'
Ese algo puede ser una variable? o tiene que ser una cadena de texto?
  #10 (permalink)  
Antiguo 13/04/2013, 10:28
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: Normalizar datos recibidos

tendría que ser una variable con la información que el usuario debería ingresar supongo, ahi tu sabras lo que estas haciendo lo que quieres hacer....
  #11 (permalink)  
Antiguo 13/04/2013, 10:28
 
Fecha de Ingreso: marzo-2013
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: Normalizar datos recibidos

Cita:
Iniciado por alex1084 Ver Mensaje
tendría que ser una variable con la información que el usuario debería ingresar supongo, ahi tu sabras lo que estas haciendo lo que quieres hacer....
Ok muchisimas gracias por tu informacion voy a ponerme a hacer pruebas. Un saludo y gracias otra vez.
  #12 (permalink)  
Antiguo 14/04/2013, 05:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Normalizar datos recibidos

Cita:
Tabla Equipos.

Columna 1: ID Equipo
Columna 2: Nombre Equipo (Estandarizado)
Columna 3: Sinonimos.
Esto no se ajusta a la estructura que te di

Opción con dos tablas

Equipos
idEquipo PK
Nombre
...otros campos la dirección por ejemplo

Sinonimos
idSinonimo PK
idEquipo FK
sinonimo


Opción con una tabla

Sinonimos
idNombre PK
nombre
idNombreStandar FK a idNombre de la misma tabla (Null si es el valor standar)


Pensandolo bien yo iria a la primera opción ya que te permite guardar mas campos como la dirección y otros... en la segunda opción seria un error.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #13 (permalink)  
Antiguo 14/04/2013, 09:11
 
Fecha de Ingreso: abril-2013
Mensajes: 1
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Normalizar datos recibidos

Gracias por compartir este real muy útiles.






http://www.juegodeautos.es

Etiquetas: normalizar
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:12.