Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Representation for Heterogeneous Attribute Set

Re: Representation for Heterogeneous Attribute Set

From: Neo <neo55592_at_hotmail.com>
Date: 11 Feb 2005 11:41:36 -0800
Message-ID: <1108150896.062150.71190@c13g2000cwb.googlegroups.com>


> Are there any other that I overlooked?

RM has a scope which works best with data where groups of things have similar attributes. When modelling data that is highly variable, one method is generic modelling (ie everything in a few tables, possibly even one) however it quickly becomes impractical due to the impact on performance and diminished SQL support. There is no practical solution for this type of problem using RM. The core problem is a limitation of the RM data model and to a lesser degree limited processing power.

The script shown below for an experimental db models a few bonds. The experimental db allows each thing to have a variable number of classifications, attributes, values and yet things are automatically normalized by the db. Another such example posted at www.xdb2.com/example/ex108.asp

// Create items in directory to classify things
(CREATE *bond.item ~in = dir)
(CREATE *yearly rate.item ~in = dir)
(CREATE *amount.item ~in = dir)
(CREATE *principle portion payment.item ~in = dir)
(CREATE *period.item ~in = dir)
(CREATE *date.item ~in = dir)
(CREATE *due date.item ~in = dir)
(CREATE *issue date.item ~in = dir)
(CREATE *start date.item ~in = dir)
(CREATE *end date.item ~in = dir)
(CREATE *put back date.item ~in = dir)
(CREATE *call by issue date.item ~in = dir)

// Create bond A with a yearly rate and an issue date
(CREATE *bondA.cls = bond)
(CREATE bondA.yearly rate = +5%)
(CREATE bondA.issue date = (CREATE *1/1/05.cls = date

_                                  & it.cls = issue date))

// Create bond B with a yearly rate
// and 2 dates on which a portion of principal is due
(CREATE *bondB.cls = bond)
(CREATE bondB.yearly rate= +6%)
(CREATE bondB.principle portion payment =

_  (CREATE *.cls = principle portion payment
_          & it.amount = +$345
_          & it.due date = (CREATE *1/1/11.cls = date
_                                & it.cls = due date)))

(CREATE bondB.principle portion payment =
_  (CREATE *.cls = principle portion payment
_          & it.amount = +$456
_          & it.due date = (CREATE *1/1/12.cls = date
_                                & it.cls = due date)))

// Create bond C with different rates in 2 periods, // one put back date and two call by issue dates.
(CREATE *bondC.cls = bond)
(CREATE bondC.period =

_   (CREATE *.cls = period
_           & it.yearly rate = +8%
_           & it.start date = (CREATE *1/1/05.cls = date
_                                     & it.cls = start date)
_           & it.end date   = (CREATE *1/31/05.cls = date
_                                     & it.cls = end date)))

(CREATE bondC.period =
_ (CREATE *.cls = period
_         & it.yearly rate = +9%
_         & it.start date = (CREATE *2/1/05.cls = date
_                                   & it.cls = start date)
_         & it.end date   = (CREATE *2/28/05.cls = date
_                                   & it.cls = end date)))

(CREATE bondC.put back date = (CREATE *1/1/25.cls = date
_ & it.cls = put back date))
(CREATE bondC.call by issue date =
_ (CREATE *7/1/25.cls = date _ & it.cls = call by issue date))
(CREATE bondC.call by issue date =
_ (CREATE *9/1/25.cls = date _ & it.cls = call by issue date)) // Find bonds that has a period that earns 9% yearly
// and has a call by issue data of 9/1/25. // Finds bond C.
(SELECT *.cls = bond
_       & *.period = (*.yearly rate = 9%)
_       & *.call by issue date = 9/1/25)
Received on Fri Feb 11 2005 - 13:41:36 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US