Re: [OT] "advanced" database design (long) - Mailing list pgsql-general

From Scott Marlowe
Subject Re: [OT] "advanced" database design (long)
Date
Msg-id dcc563d10802040409i583c64d3w69118172e3705dce@mail.gmail.com
Whole thread Raw
In response to Re: [OT] "advanced" database design (long)  ("Alex Turner" <armtuk@gmail.com>)
Responses Re: [OT] "advanced" database design (long)  (Gregory Stark <stark@enterprisedb.com>)
Re: [OT] "advanced" database design (long)  ("Alex Turner" <armtuk@gmail.com>)
Re: [OT] "advanced" database design (long)  ("Alex Turner" <armtuk@gmail.com>)
List pgsql-general
On Feb 3, 2008 10:14 PM, Alex Turner <armtuk@gmail.com> wrote:
> I"m not a database expert, but wouldn't
>
> create table attribute (
>   attribute_id int
>   attribute text
> )
>
> create table value (
>   value_id int
>   value text
> )
>
> create table attribute_value (
>    entity_id int
>   attribute_id int
>   value_id int
> )
>
> give you a lot less  pages to load than building a table with say 90 columns
> in it that are all null, which would result in better rather than worse
> performance?

But you're giving us a choice between two bad methodologies.

Properly normalized, you'd not have a table with 90 nullable columns,
but a set of related tables where you'd only need to store things in
the subordinate tables for the relative data points.

The worst thing about EAV is that it makes it very hard to figure out
what the heck is going on by just looking at the database schema.
It's easy to develop and hard to maintain.  We had a person do
something like that last place I worked and it took weeks for a new
developer to figure it out and replace it with a properly relational
model, because there were little corner cases all through the code
that kept popping up.

pgsql-general by date:

Previous
From: Nicolas KOWALSKI
Date:
Subject: Re: problem with ORDER BY
Next
From: Gregory Stark
Date:
Subject: Re: PostgreSQL Certification