Re: Attribute-values in separate table

From: Neo <>
Date: Thu, 30 Aug 2007 12:02:44 -0700
Message-ID: <>

> Table:
>   Furniture-attribute
> Attributes:
>   Furniture-ID
>   Attribute-Name
>   Attribute-Type
>   Attribute-Value
>   Validity-begin-date
>   Validity-end-date
> What are the pro's and con's for [above] approach?

Pros: Flexiblity, less NULLs, ability to add new attributes on-the-fly without having to modify db schema, less impact on code. Cons: Less SQL support, more initial coding, slower performance.

Alternatively, in a database that employs a network of nodes, whether things have samilar or different attributes makes little difference, requires no schema and does not incurr NULLs. Following dbd script models some furniture:

(; Note: is, from, to are part of system data)
(new 'component)
(new 'valid)

(new 'table1 'furniture)
(set+ table1 component 'wheel)

(new 'cabinet2 'furniture)
(set+ cabinet2 component 'wheel)
(set+ cabinet2 component 'shelve)
(set+ cabinet2 component 'lock)

(new 'desk3 'furniture)
(set+ desk3 component 'lock)
(set desk3 component (val+ 'drawer)

         is valid
         from (new '070101 'date)
         to (new '080101 'date))

(; Get furnitures with wheel)
(; Gets table1 and cabinet2)
(get * component wheel)

(; Following expression get node that represents:

   desk3 component drawer is valid from 070101 to 080101)
(new '060101 'date) (new '080101 'date)
(get (get furniture instance *) component (get component instance *)

       is valid
       from (>= (get date instance *) 060101)
       to (<= (get date instance *) 080101))

For related example "Persons with Varied Attributes", see Received on Thu Aug 30 2007 - 21:02:44 CEST

Original text of this message