Gente, buenos días. Quisiera consultar lo siguiente.
Necesito almacenar y gestionar ciertos datos.
Se trata de información que va a trabajarse según el estado de un campo y cada 
registro posee aproximadamente 10 atributos mas, de distinto tipo (date, 
varchar, numeric...)
La tabla tiene su pk con un campo serial.
Ej:

Table: test

Id serial
Estado smallint(1) not null -CAMPO A TRATAR
Campo1
Campo2
CampoN

El campo "estado" es 1,2,3,4 o 0 (cero). Posiblemente en algún futuro se 
agreguen otros estados "5", "6", etc.
Este campo nace en 1 y luego pasa al resto de estado. Cuando llega al estado 4, 
el próximo estado es 0 (cero) que sería la identificación del registro para 
interpretar la "historia" o que ya fue tratado y se lo explotará en conjunto 
con otros campos. Ej. "estado" = 0 and "cliente" = 'PEPE' (solo listados, no 
interactivo)

Las búsquedas "interactivas" y de gestión simultanea (varias terminales) en 
esta tabla serán solamente por el campo "estado", 1,2,3 o 4.
La tabla va a crecer en 20 mil registros por mes aproximadamente.

El registro nace en estado "1", a los 10 minutos (dependiendo la gestión) pasa 
a estado "2"  (update)
El registro en estado "2" a los 10 minutos (dependiendo la gestión) pasa a 
estado "3" (update)
El registro en estado "3" a los 10 minutos (dependiendo la gestión) pasa a 
estado "4" (update)
El registro en estado "4" a los 10 minutos (dependiendo la gestión) pasa a 
estado "0" (update)

Si no se generan registros en 1h, posiblemente todos los registros de la tabla 
tendrán el estado "0" hasta que se genere un nuevo registro.
Cada 30 segundos debo ejecutar 4 consultas. Una consulta para cada estado 
(1,2,3, y 4)

Cabe aclarar que el resto de atributos de esta tabla, también se actualizaran 
en cada paso de estado....

La consulta final es, como me convendría gestionar los datos?

1-      Creo la tabla directamente con todos los datos y ejecuto las consultas 
de forma tradicional? Select * from table where estado = 1?

2-      Creo una tabla con id y estado donde se hagan los insert y update 
esenciales y luego una segunda tabla donde tenga el resto de atributos para 
joinearla con el id de la tabla "cabecera"?

3-      Me conviene hacer "delete" de los campos es estado 0 (o sea, luego del 
estado 4) e insertarlos en una tabla consolidada?

4-      Aclaro que el mantenimiento de la bd no será diario por la gestión 
(24x7), autovaccum activado


Bueno, cualquier sugerencia, a disposición.
Saludos,

Conrado

PD:
PostgreSQL: 9.3
Version string:  PostgreSQL 9.3.1, compiled by Visual C++ build 1600, 32-bit
SO: Windows.
Desarrollar  : C# .NET (Npgsql y Mono)

Responder a