Re: Dominios

From: Juan Martínez <jeugenio(at)umcervantes(dot)cl>
To: Daniel Carrero <dxduke(at)gmail(dot)com>
Cc: Jaime Casanova <systemguards(at)gmail(dot)com>, postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Dominios
Date: 2006-06-09 23:22:16
Message-ID: 1149895337.11673.42.camel@localhost.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El vie, 09-06-2006 a las 18:44 -0400, Daniel Carrero escribió:
> On 6/8/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> >Jaime Casanova escribió:
> > > Ademas, hasta hace poco los lenguajes pl no exigian que se
> > > cumplieran
> > > los constraints del dominio si regresaban uno...
> >
> > > en el ejemplo anterior una funcion que regresara un tipo_mes
> > > permitiria regresar 13 aun cuando el dominio no deberia
> > > aceptarlo...
> >
> > > creo que alguien estaba arreglando eso, pero no recuerdo como
> > > quedo o si ya esta...
>
> > Ya esta AFAIK, en 8.2dev.

> Gracias a todos por la informacion, util por cierto, pero queria
> plantearles lo siguiente, en el caso del Rut (Chile)

Chile no es el unico pais que usa un rut (o un numero de identificacion
con verificacion basada en modulo 11)

> , es mejor usar un trigger o definir un "tipo" rut que tenga un largo
> especifico? como es mejor obtener el digito verificador?

Mmm...la experiencia me dice mas o menos lo siguiente:

1. Un tipo de dato obdece a que tu requeriras realizar ciertas
operaciones sobre el dato (logicas, matematicas, busqueda). El rut, es
un valor que por si mismo es un dato (lease, def. de unidad minima de
informacion), como lo es un numero de telefono, o un nombre de persona.
Ahora me parece que las necesidades de un RUT (en terminos de
operaciones) ya estan cubiertas por los tipos de datos existentes en
postgres. Podria ser text o var char(n) con n especifico. No tiene
sentido cosas como las siguientes: sumar 2 rut, saber cual es menor y
cual es mayor (excepto para ordenarlos claro esta)...

2. El digito verificador es totalmente parte del rut. En teoria, no
debiese guardar por separado. La formula para ser calculado es mas o
menos conocida por todo el mundo. No es complejo entender el algoritmo.
Podria hacerse un trigger/funcion, pero pl/pgsql (o cualquier lenguaje
procedural) tienen las estructuras necesarias para crear un
validador/calculador del DV para generar un codigo fuente facil de
entender?

3. Si los datos que tendras en tu BD, practicamente van a ser
manipulados en un 100%, a nivel de informacion pura (es decir,
informacion con sentido humano), por una aplicacion hecha a la medida en
un lenguage de alto nivel, entonces la tarea de validar o calcular el
DV, perfectamente se le puede entregar a ese lenguaje, puede ser una
alternativa mas facil.

Siempre he usado un atributo (campo) llamado rut de largo fijo donde lo
guardo completamente. En la practica mas se pierde de lo que se gana
separandolo. Separar el DV del rut lo unico que te garantiza es
posibilidad de tener el DV erroneo guardado en otro campo, creo yo al
menos esa experiencia he tenido. La validacion o calculo la hago en la
apps que maneja los datos...(un codigo en php, por ejemplo, con
recursividad no usa mas de 6 u 9 lineas)

> Se que existe la funcion ya creada pero queria saber sus opiniones

Mmm...no lo sabia, si existe entonces, por que no usarla?

> Espero no latearlos demasiado :D

No, para nada.
--
Juan Martínez
Depto. Inf.
UMC

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan Martínez 2006-06-09 23:31:04 Re: duda sobre secuencias
Previous Message Alejandro D. Burne 2006-06-09 23:10:49 Re: Noticias sobre la versión 8.2