Re: No exceptions?

From: J M Davitt <>
Date: Sat, 01 Jul 2006 16:54:43 GMT
Message-ID: <nNxpg.3134$>

Bob Badour wrote:

> Jon Heggland wrote:

>> J M Davitt wrote:

>>> Jon Heggland wrote:
>>>> There is some confusion here on both parts, I think. Any relvar can
>>>> have an empty key, regardless of the number of attributes in the
>>>> relvar. It follows that such a relvar can have no other keys. A
>>>> relvar has a set of (candidate, if you will, but I consider that
>>>> term meaningless) keys, in general, but this set cannot be empty
>>>> ---there is always at least one key.
>>> I understand your point about candidate keys; I believe the term
>>> is used to distinguish the irreducible set of attributes that hold
>>> unique values from the sets of values that comprise superkeys.
>> In my experience, it is used to distinguish "primary" keys from the
>> rest. No matter.
>>> The rest of your post confuses me. I understand that the last
>>> sentence refers to a set of keys, but I'm not sure how it is that
>>> there is only one key in that set of keys if that key's set of
>>> attributes is empty. It seems to me that every attribute would be
>>> a key and every combination of attributes would be a superkey. I
>>> don't see how an empty attribute key precludes other keys.
>> "Every attribute" would also be a superkey (speaking loosely). The empty
>> set is a subset of every set.
> I respectfully suggest the confusion caused by your use of key without 
> the 'candidate' qualification demonstrates exactly why we have the term. 
> I suppose irreducible key would do just as well, but for historical 
> reasons, candidate key already means an irreducible key.

I think I got it. Am I correct in understanding that JH said, "If an empty candidate key is declared, any other keys are superkeys?"

I appreciate JH's preference for the terms key and auperkey and think the idea has some merit - everyone seems to understand the uniqueness of key values and his terminology neatly distinguishes keys which are and are not irreducible.

I'm still pondering...

Using JH's definitions: if an empty key is declared, any other keys are superkeys. This would be the case if one presumes that the "no attribute" is also a component of all those superkeys, right? And I don't understand why that must be so. Once a key without attributes is declared, the relation value can hold no more than one tuple - but I don't see why every other attribute cannot also be a key.

On other words, I don't understand why "[i]t follows that such a relvar can have no other keys." Received on Sat Jul 01 2006 - 18:54:43 CEST

Original text of this message