-
Consulta a expertos en bases de datos...
A ver, solicito ayuda.
Estoy creando una base de datos con direcciones y demás. El caso es que estas direcciones provienen de diversas fuentes (todo controlado con la LOPD), y muchas veces están repetidos.
¿Existe algún programa que a medida que vayas metiendo los datos te "avise" de que ya existen registros similares?
Me sería de gran ayuda :sudor. Gracias mil...
Manu1oo1
-
Re: Consulta a expertos en bases de datos...
Profano no eres en la materia, así que como no especifiques con ejemplos...
1- ¿Qué son dos registros "similares"?
2- ¿La dirección viene correctamente "troceada" o es un churro que viene en un campo único?.
3- La base de datos donde las cargas, ¿tiene estructurada la dirección?.
Ejemplo de dirección no estructurada:
DIRECCION: C/ Doce de Septiembre, 14, 5º dcha. Madrid
Ejemplo de dirección estructurada:
VIA/PSEUDOVIA: Vía
TIPO DE VIA: Calle
NOMBRE DE VIA: Doce de Septiembre
NUMERO INFERIOR: 14
LETRA INFERIOR: Null
NUMERO SUPERIOR: Null
LETRA SUPERIOR: Null
KILOMETRO: Null
HECTOMETRO: Null
ESCALERA: Null
PLANTA: 5
PUERTA: dcha.
MUNICIPIO: Madrid
PROVINCIA: Madrid
PAIS: España
-
Re: Consulta a expertos en bases de datos...
Es una base de datos de direcciones... Campos, pues nombre, apellido1, apellido2, dirección, CP, localidad, provincia... lo típico.
Hay duplicados por que las estamos pillando de sitios públicos (páginas amarillas, QDQ, etc.), y claro... hay gente que está en varios sitios a la vez.
Gracias.
Manu1oo1
-
Re: Consulta a expertos en bases de datos...
Es que si lo que pretendes es buscar direcciones diferentes, el tema está en que es lo que se quiere diferenciar realmente, a ver si sonsigo explicarme.
Suponiendo que la direccioón venga sólo troceada en DIRECCION, LOCALIDAD y PROVINCIA, se supone que entonces en DIRECCION viene todo el "churro".
¿Qué clase de "casi igual" pretendes tratar?.
a) "C/ Venezuela 16, 2" y "C/ Venezuela 16 - 2" son diferentes
b) "C/ Venezuela 16, 2" y "C/ Venezuela 16 - 2" son iguales
¿O te refieres a que si el campo DIRECCION es idéntico en contenido al de otro registro, no introduzcas el segundo porque ya existe?
-
Re: Consulta a expertos en bases de datos...
No, más sencillo que eso... Lo ideal sería que, por ejemplo, si yo voy poniendo "López" en el primer apellido, me salgan en algún sitio los demás "López" que ya hay metidos. Así, si veo que ya estaba, cancelo la introducción de datos (aclaro que los estamos metiendo a pedal, con teclado). No sé si me explico... :sudor
manu1oo1
-
Re: Consulta a expertos en bases de datos...
Vale, ahora creo que lo he pillado.
Ignoro si existe ya una aplicación genérica que haga eso. Hacerlo a medida, no obstante, en un lenguaje como Delphi, no llevaría mucho tiempo, y se me ocurren formas de hacerlo más cómodas como que te vaya diciendo el número de coincidencias con tu base de datos según vas rellenando los campos, porque "López" habrá 3000, pero "López Gallego" ya habrá muchos menos, y si además son "López Gallego, José Ramón" pues ya ni te digo.
-
Re: Consulta a expertos en bases de datos...
¿Qué base de datos es, Manu? ¿Oracle, Access, SQL Server ...?
-
Re: Consulta a expertos en bases de datos...
Cualquiera. Si de hecho aún las estoy metiendo en Excel... :cuniao
Manu1oo1
-
Re: Consulta a expertos en bases de datos...
-
Re: Consulta a expertos en bases de datos...
Mientras pueda importarle los datos de Excel... :)
Manu1oo1
-
Re: Consulta a expertos en bases de datos...
Manu, yo podría ayudarte, aunque es un follón de 3 pares de narices, te aviso. Voy a investigar, pero no hay ningun producto comercial que te haga eso por las buenas. :/
-
Re: Consulta a expertos en bases de datos...
Manu, primero la buena noticia. Se puede hacer. Y ahora la mala noticia, al menos desde Oracle te tendrás que currar un procedimiento almacenado que pese a no ser muy dificultoso, sino tienes conocimientos de programación ya vas rendido a la batalla.
Un abrazo!
-
Re: Consulta a expertos en bases de datos...
Cita:
Iniciado por
Txema5
Manu, primero la buena noticia. Se puede hacer. Y ahora la mala noticia, al menos desde Oracle te tendrás que currar un procedimiento almacenado que pese a no ser muy dificultoso, sino tienes conocimientos de programación ya vas rendido a la batalla.
Un abrazo!
A eso mismo es a lo que yo me refería, yo lo he tenido que hacer, no lo mismo pero sí algo similar, y hace falta liar una buena.
-
Re: Consulta a expertos en bases de datos...
Nada, entonces no os preocupéis, no quiero daros trabajo. Solo quería saber si había alguna aplicación comercial que lo hiciera. Ya iremos metiendo gente, ordenaremos por apellido y borraremos los que veamos duplicados.
MUCHAS gracias por vuestra ayuda. :hola
Manu1oo1
-
Re: Consulta a expertos en bases de datos...
Pa que coño meter oracle en una base de datos tan sencilla?
no creo que llegue a mas de 10.000 registros
con un access va que se las pela.
-
Re: Consulta a expertos en bases de datos...
Ojalá llegara a 10.000 :D Son podólogos. Imagino que rondarán los 4.000 en toda España.
Manu1oo1
-
Re: Consulta a expertos en bases de datos...
Cita:
Iniciado por
Manu1001
Nada, entonces no os preocupéis, no quiero daros trabajo. Solo quería saber si había alguna aplicación comercial que lo hiciera. Ya iremos metiendo gente, ordenaremos por apellido y borraremos los que veamos duplicados.
MUCHAS gracias por vuestra ayuda. :hola
Manu1oo1
Es la mejor opción, y como dice Astolfo usa Access que será muy compatible con Excel, al ser ambos de Microsoft.
Yo es que creía que era muuuchas más filas. :agradable
-
Re: Consulta a expertos en bases de datos...
Según veo yo hay dos formas básicas de controlar esto.
Una, la fina, la que ya han apuntado más arriba: una aplicación hecha expresamente para introducir estos datos en una tabla y que aproveche para controlar que no se meten repetidos. Una opción secundaria sería el procedimiento almacenado, que no es tan fino como la aplicación pero tambien controla que no hayan repetidos. Lo malo es que en ambos casos tendrás que programar, por lo que si no te desenvuelves en estas lides mejor dejarlo (aunque siempre puedes intentarlo, por supuesto).
La otra opción es más asequible aunque no tan fina; consiste en marcar los campos que deben ser únicos (vamos, que no se deben repetir) como campos primarios de la tabla. Esto se hace en el momento de diseñar la tabla (de crearla y definir la cantidad de campos, nombre, tipo y longitud de cada campo). Haciendo esto, cuando el gestor de la base de datos (Access, por ejemplo) vea que intentas insertar un registro cuyos campos primarios contengan los mismos datos que un registro ya existente, te sosltará un escupitajo en forma de mensaje de error y no te dejará insertar ese registro hasta que alguno de dichos campos primarios sea diferente al que intentas "copiar" (vamos, lo que andabas buscando).
Una aclaración a esta segunda opción: imaginemos que tienes dos campos marcados como primarios, Nombre y Apellidos. Para que el Access (o el gestor que sea) no te deje insertar un registro, deberías poner en ambos campos los mismos valores que tenga otro registro ya existente; si en el campo Nombre pones un nombre ya existente en otro registro pero en el campo Apellidos pones unos apellidos que no existen en ningún otro registro, y Access considera que no se esta copiando ningún registro y te dejará introducirlo. Resumiendo, que para que se considere el nuevo registro como copia, TODOS los campos marcados como primarios deben de contener los mismos valores que los de un registro existente.
Menudo rollo que he soltao (esto me pasa por no explicarlo más a menudo jijiji).
-
Re: Consulta a expertos en bases de datos...
Es que hacerlo con claves únicas no soluciona el problema principal, que es e evitar rascarlo todo y que al darle a guardar, meeeeeeeec, "clave duplicada". La cosa es ahorrarse el curro y que lo antes posible ya te lo diga.
Un programa que haga eso es coser y cantar, y es que cuando leí lo de "expertos", pensé que sería una mastodóntica base de datos, de ahí que pusiera los ejemplos de direcciones estructuradas y no estructuradas.
-
Re: Consulta a expertos en bases de datos...
Creo que estamos mareando la perdiz inutilmente y quizás se nos haya escapado la manera mas sencilla y lógica de hacerlo.
Sere breve para no dartelo todo hecho. Si partimos que lo tienes en una hojuca Excel y quieres averiguar aquellas tuplas que se repitan para tal o cual campo, la solución es usar la formula CONTAR.SI() de Excel. Mano de santo.
En internet y en castellano tienes mucha información sobre el manejo de esta formula! :hola
Un abrazo!
-
Re: Consulta a expertos en bases de datos...
Ufffffggghhhhh... :P
Yo, es que de Excel y sus fórmulas... cero patatero. ¿Podrías explicármelo para tontitos? :cortina
Manu1oo1
-
Re: Consulta a expertos en bases de datos...
A ver, ya verás que es mas facil que postear en un foro:
a) De entrada, deberás tener todos tus registros en una hoja Excel (como saupongo que los tienes).
b) Ordena los datos por el campo que contiene la información que se repite y que por ejemplo estará en la columna B.
c) En una columna vacia, llamemosla X, aplica la siguiente función:
=SI(Condición;Verdadero;Falso)
...en tu caso:
=SI(A1 = A2;X2 = 1;X2=2)
Extiende esta formula a toda la columna X. Como resultado en todas aquellas tuplas que se repitan (exceptuando una), la columna X tendrá el valor 1. A continuación filtra para que solo te salgan estos, y voila! Ya tienes los registros que se repetian. Borralos o ponles un lacito y los regalas.
Un abrazo!
-
Re: Consulta a expertos en bases de datos...
Ahhhhh... eso me temía. Que es para buscar y eliminar duplicados. Me será útil, una vez haya acabado. Hubiera preferido que me fuera avisando a medida que los meto, pero eso ya lo doy por imposible.
Gracia mile... :hola
Manu1oo1
-
Re: Consulta a expertos en bases de datos...
Leñe, Manute! Pues limitate a volcarlo todo sin distinciones a la hoja excell, y luego con la formula lo dejas limpito de repetidos! :hola
Un abrazo!
-
Re: Consulta a expertos en bases de datos...
Pos eso es lo que voy a hacer... :cuniao
Muchas gracias, Chemita. ;)
Manu1oo1