Re: Campo con entero variable según el año

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: jam1138 <jam1138+pgsql(at)gmail(dot)com>
Cc: Lista PotsgreSQL-español <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Campo con entero variable según el año
Date: 2007-07-31 18:03:17
Message-ID: 20070731180317.GF15602@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

jam1138 escribió:

> Estoy planteando una aplicación para manejar documentos a los cuales
> es necesario darles un seguimiento, para ello, dichos documentos
> manejan un identificador con un formato especificado:
>
> - Una cadena de 4 caracteres
> - Un entero que sirve como *número de folio* (irrepetible, auto-incremental)
> - Año en que se generó el documento

Creo que lo mejor seria almacenar los tres identificadores por separado
(tres columnas), y crear una vista (CREATE VIEW) que haga la
concatenacion. Asi puedes hacer el auto-incremental de manera sencilla,
usando una secuencia, y cuando llegue el fin de año haces un setval()
para que vuelva a 1. Esto lo puedes programar usando crontab.

Lo de usar una vista te evita tener que hacer la concatenacion en el
codigo de la aplicacion, lo cual puede llegar a ser problematico.

Otra sugerencia es que guardes la cadena de 4 chars en una tabla
separada. Asi te aseguras que los valores que se ingresen correspondan
al conjunto de valores permitidos (es decir debes tener una FK). En la
tabla principal simplemente guardas un INT que seria la llave primaria
de la tabla de identificadores. Ademas, eso es mas normalizado: si
algun dia quieres cambiar nombre a alguno de esos identificadores es
sencillo hacer un UPDATE sobre la tabla de identificadores. El JOIN
entre la tabla de identificadores y la tabla principal seria parte de la
vista que te sugiero mas arriba.

El año es simplemente un entero más -- puedes usar DEFAULT
extract('year' from current_date) en el CREATE TABLE para que se ingrese
automaticamente.

> Con haberme explicado me doy por satisfecho... sigo agradeciendo su
> anterior ayuda, espero igual me den un empujoncito con esto.

Te explicas, asi que date por satisfecho :-P

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Neil Peter Braggio 2007-07-31 18:25:29 Re: Campo con entero variable según el año
Previous Message jam1138 2007-07-31 17:15:39 Campo con entero variable según el año