Autor Tema: Duplicidad de datos  (Leído 919 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Agrus

  • Novato
  • *
  • Mensajes: 14
  • Puntuación: 0
    • Ver Perfil
Duplicidad de datos
« : 05 de septiembre de 2009, 01:38:17 pm »
Buen dia.

Estoy desarrollando una aplicacion en la que se reciben numeros telefonicos con averias, en la tabla de averias uso el numero telefonico como campo clave, pero un mismo numero puede tener varias averias y por tanto estar repetido, como se podria solucionar eso? Aun pudiendo tener al numero telefonico como campo clave

Desconectado cyberjunior

  • Usuario Junior
  • **
  • Mensajes: 53
  • Puntuación: 1
    • Ver Perfil
Re: Duplicidad de datos
« Respuesta #1 : 05 de septiembre de 2009, 04:15:50 pm »
Buenas Tardes.-

Lo mas idóneo es que coloques otra columna como clave primaria (un numero consecutivo) y si lo deseas estableces al numero telefónico como clave foránea dentro de dicha tabla.

Saludos
Lic. Luis Vásquez

Desconectado Agrus

  • Novato
  • *
  • Mensajes: 14
  • Puntuación: 0
    • Ver Perfil
Re: Duplicidad de datos
« Respuesta #2 : 05 de septiembre de 2009, 07:24:54 pm »
Buenas Tardes.-

Lo mas idóneo es que coloques otra columna como clave primaria (un numero consecutivo) y si lo deseas estableces al numero telefónico como clave foránea dentro de dicha tabla.

Saludos

Hmm... Dejame ser un poco mas especifico. Los datos son extraidos de un documento .csv a la tabla en Postgres (es una sola tabla con todos los campos existentes en el documento .csv), vi en otro foro algo sobre una base de datos en MySQL donde un el campo clave le asignaban un AUTO_INCREMENT, no se si esto pueda aplicar a Postgres y mas importante, aumente solo cuando le pase la sentencia que copia los registros del .csv a la bd

Desconectado cyberjunior

  • Usuario Junior
  • **
  • Mensajes: 53
  • Puntuación: 1
    • Ver Perfil
Re: Duplicidad de datos
« Respuesta #3 : 06 de septiembre de 2009, 04:10:28 pm »
Buenas tardes.-

Es exactamente lo que te dije, crea otra columna auto_incremnt (es lo mismo que un numero consecutivo) y que dicha columna sera tu campo clave, de que existe este tipo de dato en postgre no lo aseguro pero me imagino que si existe.

En cuanto a: "aumente solo cuando le pase la sentencia que copia los registros del .csv a la bd" los campos auto_increment segun su consepcion se incrementa cuando insertas en la BBDD

Saludos.
Lic. Luis Vásquez

Desconectado oyepez003

  • Usuario Dedicado
  • ***
  • Mensajes: 143
  • Puntuación: 6
  • Sexo: Masculino
  • La suerte esta en el conocimiento
    • Ver Perfil
    • Soluciones tecnológicas YepSua C.A.
Re: Duplicidad de datos
« Respuesta #4 : 07 de septiembre de 2009, 10:02:36 am »
Como te dice cyberjr debes crear otro campo id en tu tabla.... si el numero de telefono se puede repetir entonces no es clave primaria como dices.... en postgres que yo sepa no existe AUTO-INCREMENT este DBMS utiliza igual que ORACLE secuenciadores.

Saludos.

CREATE SEQUENCE "nombre_tabla_SEQ" INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE ORDER;

asi seria en oracle en postgres debe ser muy parecido.

Saludos.
--
Omar Yepez
http://www.yepsua.com The YepSua team
http://jquery4php.sourceforge.net/ The jQuery4PHP project
Sigueme: http://twitter.com/oyepez003

Desconectado cyberjunior

  • Usuario Junior
  • **
  • Mensajes: 53
  • Puntuación: 1
    • Ver Perfil
Re: Duplicidad de datos
« Respuesta #5 : 07 de septiembre de 2009, 04:27:49 pm »
Buenas Tardes.-

en oracle es asi como dices !!!!

Saludos
Lic. Luis Vásquez

Desconectado csalazart

  • Novato
  • *
  • Mensajes: 30
  • Puntuación: 0
  • Sexo: Masculino
    • Ver Perfil
Re: Duplicidad de datos
« Respuesta #6 : 08 de septiembre de 2009, 08:54:11 am »
Andale si ha dado vueltas este tema

creo que ya la solucion esta planteada la mejor manera es claro que hagas de crear un ID autonumerico o autoinrementado o bien secuencia como en oracle.. viene a ser lo mismo lo que creo que te esta matando es que estas confundiendo indices con claves primarias ya que puedes tener un indice de búsqueda que seria el numero de telefono asi tendrias la busqueda por el numero de telefono y no tendrias problemas con la busqueda en los querys y lo otro seria una clave no repetitiva en la cual indexas tambien la tabla. ahora bien tambien puedes crear una tabla sin calve primaria y solo indexarla asi tienes los índices de busqueda y sin clave que te problemas, a menos claro que sea estrictamente necesaria, Entonces te recomeindo un poco de Normalización de Bases de datos :P

Exitos.. Espero que ayude un poco..
 

Desconectado Agrus

  • Novato
  • *
  • Mensajes: 14
  • Puntuación: 0
    • Ver Perfil
Re: Duplicidad de datos
« Respuesta #7 : 09 de septiembre de 2009, 02:00:41 pm »
Ok, entendi lo de crear una tabla nueva con una clave primaria bigint que se autoincremente, adicionalmente a esa tabla le creo una columna de numero telefonico.

Esa tabla la relaciono con el numero telefonico de la primera tabla (la de las averias), pero me da un error de que los tipos de datos son diferentes, alguien me podria orientar como hacer para solventar esto por favor?

Las tablas son asi:
Código: [Seleccionar]
Tabla que almacena los datos del .csv:

CREATE TABLE averias_entrantes
(
  num_av_ppal text NOT NULL,
  central_ppal text,
  empresa_ppal text NOT NULL,
  cola_ppal text,
  tipo_av_ppal text,
  cuadrilla_ppal text,
  nombre_ppal text,
  apellido_ppal text,
  estado_ppal text,
  area_ppal text,
  nom_area_ppal text,
  hora_ppal time without time zone,
  uni_n_ppal text,
  "cc/cd_ppal" text,
  "pc/pd_ppal" numeric,
  asd_ppal text,
  p_local_ppal text,
  fuente_ppal text,
  fecha_ppal date,
  dias_pend_ppal numeric,
  rango_ppal text,
  id bigint NOT NULL,
  CONSTRAINT id PRIMARY KEY (id)
)

segunda tabla:

CREATE TABLE numeros_av
(
  id bigint NOT NULL,
  num_averias text,
  CONSTRAINT id_ PRIMARY KEY (id)
)

Desconectado cyberjunior

  • Usuario Junior
  • **
  • Mensajes: 53
  • Puntuación: 1
    • Ver Perfil
Re: Duplicidad de datos
« Respuesta #8 : 09 de septiembre de 2009, 02:23:36 pm »
Buenas Tardes.-

Revisa en el .csv que tipo de datos es el numero telefonico y en tu tabla el tipo de datos es y verifica que sean iguales.

Saludos.
Lic. Luis Vásquez

Desconectado Agrus

  • Novato
  • *
  • Mensajes: 14
  • Puntuación: 0
    • Ver Perfil
Re: Duplicidad de datos
« Respuesta #9 : 09 de septiembre de 2009, 05:59:38 pm »
Buenas Tardes.-

Revisa en el .csv que tipo de datos es el numero telefonico y en tu tabla el tipo de datos es y verifica que sean iguales.

Saludos.

En el csv son VARCHAR, por lo que los coloco como text en la tabla para que no me de error de incompatibilidad

Y ahora al poner el campo extra en la tabla de las averias_entrantes(el campo extra es id, de tipo bigint y con secuencia de manera que se incremente), cuando copio el csv, me da un error
Código: [Seleccionar]
ERROR:  faltan datos en la columna «id» :(

« Última Modificación: 09 de septiembre de 2009, 06:26:39 pm por Agrus »

Desconectado cyberjunior

  • Usuario Junior
  • **
  • Mensajes: 53
  • Puntuación: 1
    • Ver Perfil
Re: Duplicidad de datos
« Respuesta #10 : 09 de septiembre de 2009, 08:33:59 pm »
coloca el Insert q estas usando.....por favor!
Lic. Luis Vásquez

Desconectado Agrus

  • Novato
  • *
  • Mensajes: 14
  • Puntuación: 0
    • Ver Perfil
Re: Duplicidad de datos
« Respuesta #11 : 09 de septiembre de 2009, 10:20:28 pm »
coloca el Insert q estas usando.....por favor!

Código: [Seleccionar]
COPY captura FROM 'c:/captura.csv' USING DELIMITERS ';'

PHP de Venezuela

Re: Duplicidad de datos
« Respuesta #11 : 09 de septiembre de 2009, 10:20:28 pm »

 

PHP de Venezuela on Facebook