Re: EAV or not to EAV? - Mailing list pgsql-general

From Jeff Davis
Subject Re: EAV or not to EAV?
Date
Msg-id 1196013689.24251.342.camel@jdavis
Whole thread Raw
In response to EAV or not to EAV?  (Reg Me Please <regmeplease@gmail.com>)
List pgsql-general
On Thu, 2007-11-22 at 09:48 +0100, Reg Me Please wrote:
> I have to take into account the update history of every single
> field into a number of tables.
> Those updates can come to the future (next values) but also to the
> past (history fix) and apply only to some fields, usually not to the
> entire record.
> Every lookup in those tables is always related to a timestamp that
> normally is the current timestamp, but can also be a past timestamp.
>
> I've come up with a "traditionally regretted" EAV design with the add of
> timestamps for the history. And the related problems, some of which have
> been solved by Joe Conways's crosstab contrib.

Here are two more ideas:

1) Vertically partition the tables so that each field you want to track
is in its own table, and then track the history of those individual
tables. Then join the tables on a key that doesn't change when you need
to see the whole table. This works well if you only have a few non-key
fields per table.

2) Store a normal history, but also store a bitmap of the fields that
change in each record. You might use partial indexes to be able to
quickly select only those records where a certain field has changed.

EAV will give you many problems down the line, and I don't think it will
solve anything for you.

Regards,
    Jeff Davis


pgsql-general by date:

Previous
From: Никоноров Григорий
Date:
Subject: Re: Error while compiling PostgreSQL with Java
Next
From: Stefan Kaltenbrunner
Date:
Subject: Re: Error while compiling PostgreSQL with Java