And then (2) there is the common inclination to think in terms of Aristotle's categories. Because Aristotle's hierachical approach to categorisation did not survive modern reality, (e.g. a mobile telephone can also be a computer), a flexible solution to this that allows pointwise senior-junior relationships carries then the burden (3) that this doesn't automatically prevent circular categorisation.
(Update: ^I just noticed that Immanuel Kant meanwhile ;) diagnosed and corrected this problem (in Critik der reinen Bernunft, pub. ca. 1781).)
^C In view of this tree of problems with trees ;), I'd be inclined to escape horizontally via having a product class and an attribute class (update: many to many relationship) so that products may have any number of attributes and allow this to do the categorisation (e.g. give both a Mondeo and a Focus the car attribute, maybe the vehicle attribute too and give a truck maybe a vehicle and a truck attribute). You can search for (update: an enhanced implementation of) existence (i.e. that solves problem (1)) in the database based on (combined) attribute values (update: in the ProductAttribute table, see below).
Update: Bachman diagram of what I mean:
Product -< ProductAttribute >- Attribute
More update: to search for whether a particular car design already exists in the database (TRANSACT-SQL), using a notional cars-oriented datrabase design, searching for where in its lifecycle via a phase attribute:
note: only the product/attribute table has attribute values - the attribute table has attribute ids without values (in practice you might have a strongly typed database imposed and have to split the attribute table into several by datatype with supporting navigation tables such as one for enumerated data and one for type-independent lookup)SELECT 1 WHERE EXISTS( SELECT 1 FROM PRODUCTATTRIBUTE a, PRODUCTATTRIBUTE b, PRODUCTATTRIBUTE c, etc. WHERE a.product_id = b.product_id AND b.product_id = c.product_id etc. AND a.attr_id = "doors" and a.attr_value = "4", AND b.attr_val = "productionphase" and b.attr_value > "2" AND etc. )
^M Free your mind!
Key to hats: ^I=white ^B=black ^P=yellow ^E=red ^C=green ^M=blue - see Moron's scratchpad for fuller explanation.
In reply to Re: Reblessing yourself
by Moron
in thread Reblessing yourself
by Ovid
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |