# Re: Multiple-Attribute Keys and 1NF

From: JOG <jog_at_cs.nott.ac.uk>
Date: Thu, 30 Aug 2007 18:00:17 -0000

> JOG wrote:
>
> >>JOG wrote:
>
>
> >>>>JOG wrote:
>
>
> >>>>>>JOG wrote:
>
>
> >>>>>>>>JOG wrote:
>
> >>>>>>>>>>Write a predicate for the relation schema that when extentially quantified
> >>>>>>>>>>and extended yields a set of atomic formulae that implies all three of the
> >>>>>>>>>>propositions above. I think you'll find that the colour-code concept is in
> >>>>>>>>>>that predicate.
>
> >>>>>>>>>I agree. I hold little stock with set based values so in RM I would go
> >>>>>>>>>for the addition of colour-code foreign key.
>
> >>>>>>>>>But what if we weren't tied to a traditional relational schema and
> >>>>>>>>>tweaked the system so it could allow propositions with more than one
> >>>>>>>>>role of the same name without decomposing them. As Jan pointed out
> >>>>>>>>>'tuples' are no longer functions - they would be unrestricted binary
> >>>>>>>>>relations (subsets of attribute x values). We could produce a
> >>>>>>>>>comparatively simpler and less cluttered schema, predicate in a very
> >>>>>>>>>similar manner as before, and with a few simple alterations could have
> >>>>>>>>>an equally effective WHERE mechanism. My concern however would be the
> >>>>>>>>>consequences to JOIN.
>
> >>>>>>>>What would you offer in place of the RM's logical identity.
>
> >>>>>>>Nothing. I am utterly convinced by Date et al's arguments in favour of
> >>>>>>>logical identity. (Why would I need to replace it?) I just wanna model
> >>>>>>>propositions, and they are always identified by their contents.
>
> >>>>>>In: {{(Color: green), (Color: yellow), (Type: earth)}}
>
> >>>>>>What provides logical identity?
>
> >>>>>I may be misunderstanding you, but let me take a stab. The identity of
> >>>>>any set of course lies in its elements (i.e. in this of a single
> >>>>>propositions, the ordered pairs). Given we know Colors are the
> >>>>>antecedents in the proposition we are modelling, this has to be been
> >>>>>defined in the collectivizing predicate for the whole collection of
> >>>>>rows. We also know therefore there may not exist another set of pairs
> >>>>>containing the same Colors, so we can identify the whole proposition
> >>>>>through examination of just those roles. All works just as per normal
> >>>>>in RM. Is this what you meant?
>
> >>>>I haven't got a clue what you said.
>
> >>>I just regurgitated leibniz identity.
>
> >>>>In the RM, every value is uniquely
> >>>>identifiable by the combination of relation name, attribute name and any
> >>>>candidate key value. That's logical identity as it was originally
> >>>>spelled out.
>
> >>>>Two values above have the same attribute name.
>
> >>>Now you've lost me. A "value" is not identifiable by its relation name
> >>>and attribute name. This makes no sense to me. Where in predicate
> >>>logic does that come from? A value is just a value. It is identifiable
> >>>in its own right as being an individual from a domain.
>
> >>I mispoke. "Any value represented in a relvar"
>
> > Well it is still just a value whether its in a relvar or not - it
> > needs no extra identity. A database table is just a set of
> > propositions. A proposition is encoded as a set of attribute-value
> > pairs. That's it surely?
>
> > Any notion of identity is as defined by set theory.
>
> >>>An individual piece of /data/ however (which is perhaps what you mean
> >>>by a value) has an identity made up of a combination of an attribute
> >>>name and a corresponding value. One needs both to identify the data
> >>>item. A proposition in turn is identifiable by its contents, which is
> >>>a set of those data items. Regards, J.
>
> >>I repeat: two pieces of data have the same name, Color.
>
> > Well no - a piece of data doesn't have a 'name' does it? It's just a
> > combination of attribute and value. The number-7. name-Fred. color-
> > red. A datum's identity is defined by the /combination/ of these two
> > parts, and that alone - not by a label, or an alias, or an OID (as I'm
> > sure you'd agree).
>
> No, I don't agree. I suggest you see the definition of Logical Identity
> in Codd's 12 rules.

Well, I have to contest again - you are no doubt referring to "rule 2:The guaranteed access rule", and that makes no reference to the term identity (...and that is what you asked me about.) Rule 2 is stating : "every individual value in the database must be logically addressable by specifying the name of the table, the name of the column and the primary key value of the containing row."

Logically "addressable" - that's a very different kettle of fish to identity. In your original question did you mean to ask then: "What provides logical addressibality?" if one has two attributes playing the same role? I won't respond to that in advance, because I don't want to put words into your mouth. Regards, J. Received on Thu Aug 30 2007 - 20:00:17 CEST

Original text of this message