Re: Relational and multivalue databases

From: Eric Kaun <ekaun_at_yahoo.com>
Date: Mon, 23 Feb 2004 12:39:57 GMT
Message-ID: <xwm_b.27232$Zn.5493_at_newssvr16.news.prodigy.com>


"Dawn M. Wolthuis" <dwolt_at_tincat-group.com> wrote in message news:c12rgj$4e1$1_at_news.netins.net...
> [...]
> Think of a "file" as a function that maps an identifier to a set of
> attributes. For example, the STUDENTS function could be
>
> STUDENT(identifier)={string-of-attribute-data-with-delimiters}
>
> This string of data could be:
> Joan<field-delimiter>
> Doe<field-delimiter>
> 6165551234<value-delimiter>7615552222<field-delimiter>
>
MATH<sub-value-delimiter>2002<value-delimiter>PHIL<sub-value-delimiter>2003<
> field-delimiter>
>
> There are also
> <record-delimiter>
> <file-delimiter>
>
> and one can define delimiters to any desired level, with typically at
least
> this many included in the packaged functions for the database
implementation
>
> Then associate this with vocabulary functions such as
>
> FirstName(STUDENTS, identifier) = string-field-in-location-1
> SecondaryPhoneNumber(STUDENTS, identifier) =
string-value-in-field-3-value-2
>
> So it is the vocabulary functions that make the queries very easy for
users.
> A vocabulary entry can contain many other types of functions, including
> those that reach to any other files within the system.
>
> So, the details about a major, for example, would be in a subject file
such
> as MAJORS, which would also be a function
>
> MAJORS(identifier) = {string}
>
> Then a vocabulary entry could be defined for students such as
>
> MajorRequirement(STUDENTS, identifier) = MAJORS(StudentMajor, field n)
>
> So, everything is defined in terms of functions including stored data and
> any other vocabulary (for stored or virtual fields)

But the functions are only naming things, right? They don't really establish any typing, nor are they computational functions (or can they be?). It's just to establish that field 3 is phone number? In any event, should you choose to, relational can do exactly the same thing - establish a PHONELIST type, and write SECONDARY_PHONE as a function over it. Or even a LIST type, and SECOND_ELEMENT on it, if you care to.

  • erk
Received on Mon Feb 23 2004 - 13:39:57 CET

Original text of this message