no names allowed, we serve types only

From: Keith H Duggar <>
Date: Sat, 13 Feb 2010 12:53:56 -0800 (PST)
Message-ID: <>

Of course the conventional definition of a relation's header is a set of ordered pairs of "attributes" of the form <A, T> where A is the "name" of the attribute (which must be unique within the header) and T is a type.

I'm wondering, do we really need A? Can we not simplify this header notion to just a set of types? All we need do then is supply operators to conveniently "copy" types if or when one needs multiples attributes of the "same" type. Often we don't even require this. Here are some examples:

   no type copy necessary if we already have unique types

      DateTime  = {Date, Time}
      Inventory = {Supplier, Part, Integer}

   type copy used to generate unique types

      Point2D = {copy Integer X, copy Integer Y}

So aren't the "ordered pair" and "attribute names" a perhaps sometimes convenient yet always unnecessary complication? We can do all we need to solely with types and sufficiently rich type systems. One nice result is that now a header is just a plain simple set without ordered pairs demanding an auxiliary uniqueness constraint on names across all the pairs. What are your thoughts?

KHD Received on Sat Feb 13 2010 - 21:53:56 CET

Original text of this message