Re: Constraints and Functional Dependencies

From: paul c <toledobythesea_at_oohay.ac>
Date: Wed, 28 Feb 2007 17:45:54 GMT
Message-ID: <mdjFh.1171953$5R2.290407_at_pd7urf3no>


Walt wrote:
> ...
> Excuse me. b doesn't even need to be a candidate key for S. ...

That point has already been made, ie., Marshall's definition doesn't require any primary or candidate keyness. (By the way, apart from his prime notation, Marshall's definition per se isn't anything new - I've used the gist of it for years and seen it said similarly.)

I think the relevant questions are:

  1. why did Codd want it to be primary?
  2. why have SQL products promoted the same?
  3. is there a reputable quote where Codd says the term "referential integrity" must involve primary keys? (various sites give varying renditions of his 1985 Computerworld articles)

Above, I'm talking about keys as sets of attributes whose values are unique in a relation, ie., in the conventional way, even though I've never liked the term "key". I'm using "primary" as I think Codd meant it, a choice among candidates. I'd like to know what advantage people see in requiring the reference, if you will, to be a key of any sort.

For the most part, it makes no sense to me for what Marshall called "keyness" to persist when we talk about references because whether referenced attributes are "key" should be determined by the definition of the referenced relation.

Call the primary constraint C1 and the RI constraint C2. If one accepts that a valid db state requires all constraints to hold true, then C1 AND C2 must be true for any values of R and S.

Suppose for argument's sake we conjecture that C1 is somehow "part" of R's definition but not part of S's definition. If C1 were false, R would always be empty. Perhaps people can see a use for that, but if so, I think another concept is needed, one I don't have a name for, perhaps "application constraint". That term might encourage some people to think of taxonomies of constraints which I wouldn't like, but let that ride for the moment. In terms of a particular database, the only notion I can come up with for "drawing a line" around an application is to enumerate the relations/tables it makes use of. But in this view of things, any application that referred to R would necessarily refer to S.

    So I'd say this conjecture is bogus, ie., an impossibility.

p Received on Wed Feb 28 2007 - 18:45:54 CET

Original text of this message