At 2:17 AM +0200 5/7/06, mAsterdam wrote:
I hope (and think) you are right about that regarding
implementing relations. Using them correctly is another
story though. I don't think Date, Darwen & Lorentzos
lightly took the step of introducing 6NF in 2003.

Aside, about RVA (relation valued attibutes): I read at comp.database.theory that Hugh Darwen has introduced
gu(group/ungroup)NF a month ago.

mAsterdam, I think we should end this sub-thread as I see these points you are now bringing up are well beyond the scope of what the Perl 6 language designers need to know or care about so I don't see a need to continue it on list.

Even for me personally, I don't think this is anything to worry about.

But perhaps to explain why I think this ...

Ignoring 1NF, which relations are always in by definition (they contain no duplicate tuples/rows), but things like SQL tables or non-relation collections could possibly not be, the 2NF+ have nothing to do with the actual definitions of relations themselves or the ability to perform relational algebra, which is all that the Perl language and/or extension classes to it need to know about.

The 2nd and higher "normal forms" are just formal labels applied to certain best practices that one can follow when designing a relational database. They are efforts to further reduce redundancy in the collection of relations making up a relational database. Best left to the users to make decisions about rather than the language designers.

So the only real concern here is whether there is a data type that can represent a single piece of temporal data. But one can easily be defined using Perl's standard class definition abilities if it isn't pre-defined.

I really don't yet see how to define point types and interval
(range) types based on those. I think you (we) /will/ need them
(*not* neccesarily Perl 6 built-in) if ...

... you, like I, want temporal and spacial data as simple
and generic as possible.

You can do it simply, kind of like this:

class Point { has Real $x; has Real $y; };

subset Interval of Range where { all( .items ).does(Real) };

-- Darren Duncan

Reply via email to