Re: Attribute-values in separate table

From: Kevin Kirkpatrick <kvnkrkptrck_at_gmail.com>
Date: Mon, 03 Sep 2007 14:24:01 -0700
Message-ID: <1188854641.491926.14710_at_22g2000hsm.googlegroups.com>


On Sep 1, 2:03 am, anjasme..._at_hotmail.com wrote:
> > There are two schools of thought as to whether the addition of a new
> > attribute should or should not require additional data definition.
>
> > Adding a row to a table is data manipulation. altering a table to add a new
> > column is data definition. Creating a new table is likewise data
> > definition.
>
> > I'm of the school of thought that data in a database is managed better when
> > the right to create and alter data definitions is severely restricted,
> > while the right to manipulate data is extended to the applications that
> > interact with the database.
>
> > The other school of thought is that the superior flexibility of defining new
> > attributes without altering any database definitions overrules the data
> > management advantages in prohibiting the same. I can't defend this school
> > of thought (apparently yours) because, in my view, it leads inexorably to
> > undocumented and therefore unusable data.
>
> > Hope this helps.
>
> Good point, David.
> Although here I've found a lot of small attributes only containing Y/N-
> values, for which nobody knows what they're standing for. When
> creating new records, they are always filled with the default. It's a
> beautiful example that adding rows does not lead to more documented
> use.
>
> I do not belong to any school, I'm only open-minded.
> I think I look to data the wrong way. IfI see records with many
> attributes, mostly all 'N', except for the column HasWheels, I get
> confused.
> When I only see one record telling (123, HasWheels,Y), it points me
> directly to the fact that furniture 123 has something special: it has
> wheels!
>
> Is adding a column not forcing the application to stop as it will lock
> the entire table, or am I wrong?
>
> Anja.- Hide quoted text -
>
> - Show quoted text -

Another question - if a programmer writes code for furniture with wheels, he might write code along the lines of: SNIPPET1:
IF furniture_id in (select furniture_id from furniture_properties where property = 'HasWheeels' AND value = 'Y') THEN...
ELSE...
END IF; SNIPPET2:
IF furniture_id in (select furniture_ID from HasWheeels) THEN...
ELSE...
END IF; Do you think she'd like to find out about her typo at compile time or at runtime? With the typo corrected, which code do you consider more readable? Which do you expect to have a greater potential for performance issues? Received on Mon Sep 03 2007 - 23:24:01 CEST

Original text of this message