From: | Javier Chavez Barra <jchavezb(at)gmail(dot)com> |
---|---|
To: | Martin Marques <martin(at)marquesminen(dot)com(dot)ar> |
Cc: | postgresayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Actualizacion en Cascada de llave primaria |
Date: | 2007-11-10 13:02:42 |
Message-ID: | 4735ABF2.5000807@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Martin Marques escribió:
> Javier Chavez Barra escribió:
>> Martin Marques escribió:
>>> Sebastián Villalba escribió:
>>>> On Fri, 9 Nov 2007 15:12:54 -0800 (PST), WILLIAM PARRA wrote
>>>>> Buenas tardes compañeros.
>>>>
>>>> Hola William...
>>>>
>>>>> Necesito que por favor me den luces, de como resolver de la mejor
>>>>> manera la siguiente situación: Debo actualizar un registro, más
>>>>> exactamente el documento de una persona, el cual es la llave
>>>>> primaria de una tabla de inscritos. Esa tabla, tiene registros
>>>>> relacionados en tablas hija.
>>>>
>>>> Es una mala idea de diseño que un documento sea una llave primaria.
>>>> Pueden
>>>> haber muchos tipos de documentos, algunos incluir letras inclusive,
>>>> por lo
>>>> tanto, creo que lo mejor sería alterar la tabla agregándole un
>>>> campo serial,
>>>> que sea éste la clave primaria y el documento quizás una clave
>>>> "candidata"
>>>> (así se les llama no?).
>>>
>>> Definí llave primaria y vas a ver que la llave primaria de una persona
>>> en Argentina (de donde somos nosotros) es la 3-tupla
>>> (tipo-doc,numero,sexo) (la ultima es justamente para evitar esa letra
>>> que decis que a veces aparece).
>>>
>>> Igualmente, yo a todas las tablas le pongo un campo SERIAL (con nombre
>>> de campo unificado en todas las tablas) para usar de PK. Imaginate que
>>> sino seria complicado atar una tabla a otra que tiene una PK formada
>>> por
>>> 3 columnas.
>>>
>>> Simplemente, mis 2 centavos.
>>>
>>> --
>>> TIP 8: explain analyze es tu amigo
>>>
>> Pregunta aparte , dentro de esto mismo ... :o) entiendo que un campo
>> serial es un campo autoincrementable verdad????
>
> Si, pero no es PK. Tenes que usar las palabras claves "PRIMARY KEY"
> para que no haya nulos ni duplicados.
>
>> diganme una cosa como se comportan esos campos en PG porque yo por
>> norma siempre prefiero calcular el valor del campo cuando es una
>> clave primaria porque me han pasado tallas en sqlserver al menos que
>> esos campos a veces se corrompen
>
> Nunca me paso. ¿Qué significa que se corrompe el campo? ¿En qué forma
> se corrompe?
Es una larga historia!! pero por un motivo que no tengo la mas remota
idea me calculo mal unas PK y al tratar de hacer un insert me reclamaba
clave duplicada!!!.. :S fue por eso ... pero bueno puede que PG no sea
asi ... era solo simple curiosidad
>
>> y uffff me dio muuucho trabajo arreglar esas tablas especialmente
>> cuando tienen muuuchos registros.. lo otro siempre por ejemplo en un
>> campo como el DNI o RUT en chile dejo la clave con otro campo porque
>> imaginense lo que significaria si alguien se equivoca al ingresa uno
>> de esos datos y modificar una clave primaria... ufff... no se es solo
>> para compartir experiencias... que me pueden decir???
>
> Yo ya he escuchado muchas veces esto. Se puede actualizar
> perfectamente si las referencias tienen el "ON CASCADE UPDATE".
>
> Una tabla de personas para mi tendria campos algo asi: id (PK de tipo
> BIGSERIAL), tipodoc (INT REFERENCIA a una tabla donde estan los tipos
> de documentos validos), numero (INT8 (y no me alcanza asi siquiera)
> con el numero de documento), nombres (VARCHAR(120) o mas... es por
> experiencia), apellido (VARCHAR(120) idem anterior).
>
> Despues cualquier tabla que tenga que tener como referencia a una
> persona haria un REFERENCE persona(id). :-)
>
Si pero = no se quiza soy un poco mas fundamentalista ... en ese sentido
prefiero tener el control como programador .. y no darle esa
responsabilidad al motor.. no se es simple asunto de crianza no.. no
subirme al auto automatico hasta no aprender bien a manejar el mecanico...
bueno pero es interesante... solo era curiosidad..
Slds.
Javier
From | Date | Subject | |
---|---|---|---|
Next Message | Juan Martínez | 2007-11-10 14:28:04 | Re: Actualizacion en Cascada de llave primaria |
Previous Message | Martin Marques | 2007-11-10 12:20:04 | Re: Actualizacion en Cascada de llave primaria |