From: | Lew <lew(at)lwsc(dot)ehost-services(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: "advanced" database design (long) |
Date: | 2008-02-10 08:08:08 |
Message-ID: | atadnfrsPdV0LTPanZ2dnUVZ_sWdnZ2d@comcast.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
SunWuKung wrote:
> I always thought that having nullable columns in a table is a Bad
> Thing (http://technet.microsoft.com/en-us/library/ms191178.aspx) and
Ridiculous. The argument provided in that article is specious and likely SQL
Server-specific. NULLable columns should occur wherever your data model calls
for them, typically when you want to have a marker for "unknown" data. The
advice in that article to move NULLable columns off to a separate table will
actually cause worse, manual "special handling that increases the complexity
of data operations" than the built-in and optimized handling the engine
provides for NULLs. You should ignore this terrible advice.
> shows that you try to put different type of entities into the same
> table - having 90 in a column ... brrrrr.
Is that a technical evaluation? As another respondent stated upthread, 90
NULLable columns is possibly a sign of a bad data model.
> I think its much better to avoid it whenever you have the info but
> when you don't you just have to use the EAV model.
Also ridiculous. You should never "have to use" the EAV so-called "model".
> E.g. If I knew what info I wanted to store on a person I could create
> columns for that, but since in our application users create the
> questionnaires that is used to store info on persons I see little
> choice - I must have a subjectID, questionID, value table.
That's not EAV. When you're modeling a questionnaire, "subject", "question"
and "answer" (as I interpret your meaning for "value" here) is natural. EAV
would have a row with "question" as a value in a column, not the name of a
column as you suggest.
It's very hard to actually think in EAV. The mind naturally thinks of things
like "question" being a column, but in EAV that wouldn't be; "question" would
be a value of a generic column in some row that represents a fragment of the
question being described. The difficulty of conceptualizing data structures
as EAV is one of the big strikes against it. The quoted citation evidences
that difficulty quite well - even trying to come up with an example of an EAV
structure wound up with a non-EAV description.
--
Lew
From | Date | Subject | |
---|---|---|---|
Next Message | Scott Marlowe | 2008-02-10 09:39:40 | Re: Lockless pg_buffercache |
Previous Message | Scott Marlowe | 2008-02-10 06:42:16 | Re: help optimizing query |