Re: Dominios

From: Juan Martínez <jeugenio(at)umcervantes(dot)cl>
To: "Jaime Casanova" <systemguards(at)gmail(dot)com>, "Daniel Carrero" <dxduke(at)gmail(dot)com>, Juan Martínez <jeugenio(at)umcervantes(dot)cl>, "postgres" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Dominios
Date: 2006-06-12 18:34:18
Message-ID: 1068.190.44.84.25.1150137258.squirrel@correo.umcervantes.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El Dom, 11 de Junio de 2006, 7:17 pm, Alvaro Herrera escribió:
> Jaime Casanova escribió:
>
>> mmm... en realidad concuerdo con Juan Martinez en esto...
>>
>> Lo que sugieres es que se cree un campo que no depende enteramente de
>> la ENTIDAD, sino que se deriva de otro campo (a la final es un campo
>> calculado).
>
> Llevando esa conclusion al extremo, lo que realmente deberias hacer es
> no almacenar el DV en absoluto. Mas bien almacena solamente la mantisa,
> y verificar el DV en la aplicacion antes de insertar el registro.

Creo que eso es demasiado extremo :-)

Pero el problema de no incluirlo claramente es mayor a que incluirlo.

> El unico problema con eso es que eliminas el chequeo del DV en la base
> de datos y solo lo tendrias en la aplicacion, cosa que en la teoria es
> estupenda pero en la practica me parece un poco riesgosa :-)

Exacto. Cuantas mas restricciones (y chequeos de integridad) esten en la
BD, y la calidad o exactitud de los datos dependan lo menos posible de la
apps que manipula la BD, cuanto mejor.

> El problema de _almacenar_ ambas cosas juntas, mantisa y DV, es que es
> mucho menos eficiente.

Este punto es muy importante. Creo que este argumento es lo unico que, a
mi en lo personal, me haria abandonar la idea con respecto al RUT, en
separarlo en dos campos en vez de guardarlo en uno solo.

> Si los almacenas por separado puedes tener dos, campos pequen~os, un INT
> y un "char". En cambio si los almacenas juntos estas obligado a meterlos
> en un campo varlena ==> lento.

Apoyando esta idea, solo me queda por decir que dividir en 2 campos se
gana en velocidad, eso es cierto.

Ahora, se me ocurre algo. En realidad no es ninguna uliminacion divina (lo
he visto implementado hace mucho en una infinidad de sistemas). Pero
guardar el rut en un solo campo y eficientemente es factible (creo).

Usar un INT, para guardar el RUT con DV, en donde el DV sea un
00,01,02,...,08,09,10 (donde 10 es el -K).

A traves de un trigger, se recibe el rut escrito en humano, y este lo
transforma a este codigo (o sea la mantiza con el DV "codificado"), asi
para el usuario es transparente.

Que tal?

--
Juan Martinez
Depto. Inf.
UMC

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guille 2006-06-12 19:15:39 consulta
Previous Message Julio Rivero 2006-06-12 18:03:30 Re: ayuda con tabla