Re: Codd's Information Principle

From: Mr. Scott <do_not_reply_at_noone.com>
Date: Thu, 29 Oct 2009 22:40:59 -0400
Message-ID: <gICdnbUHcuChz3fXnZ2dnUVZ_gadnZ2d_at_giganews.com>


"paul c" <toledobythesea_at_oohay.ac> wrote in message news:iWpGm.49811$Db2.27317_at_edtnps83...
> Mr. Scott wrote:
>> "paul c" <toledobythesea_at_oohay.ac> wrote in message
>> news:2h1Gm.50615$PH1.9648_at_edtnps82...
>>> I can't remember where in his papers Codd stated the Information
>>> Principle but here's a version of a quote by Date: "The entire
>>> information content of a relational database is represented in one and
>>> only one way: namely, as attribute values within tuples within
>>> relations."
>>>
>>> Recently there has been mention of logical connectors being implicit in
>>> tuples, eg. Mr. Scott wrote: "Each row of the join represents a
>>> conjunction of propositions, one for each operand", ie., what I think is
>>> called a compound proposition. I sometimes write similar, as well
>>> regarding disjunctions. But usually my purpose is simply to understand
>>> the algebra.
>>>
>>> I would like to ask where is the "information" to the effect that
>>> certain rows represent compound propositions recorded?
>>
>> Where is the "information" to the effect that 2 + 2 = 4 recorded?
>> Certainly not as attribute values within tuples within relations.
>
> The values to satisfy that equation might well be recorded in relational
> form but I presume you are not referring to that, rather to the general
> truth of the equation as far as conventional arithmetic interpretation is
> concerned.
>
> I usually try to stay out of the discussions here about truth because a
> database mechanism is not capable of appreciating that concept the way
> humans can, just as a database doesn't record persons, only the symbols we
> use for their names. No offense intended, but I think the question
> borders on mysticism, imputing human concepts to a db, what Bob B uses the
> anthrop-word to describe. We are all susceptible to those two attitudes
> but I think we should make an effort to fall prey to them.

Let's explore a simple example. Suppose that a database embodies the following sentence,

forall x forall y forall z Pxy \/ Qxz

The database has two tables, let's call them P and Q, with predicates Pxy and Qxz respectively.

Now suppose that at a given moment,

P has rows {{x:a,y:b},{x:a,y:c},{x:b,y:c}} Q has rows {{x:a,z:d},{x:c,z:d}}

then P JOIN Q would have rows {{x:a,y:b,z:d},{x:a,y:c,z:d}}

Now let's apply logic.

The ground formulas represented in P are Pab, Pac, Pbc. The ground formulas represented in Q are Qad, Qcd.

What is represented in P JOIN Q? Pab /\ Qad, Pac /\ Qad. That's because P JOIN Q has the complex predicate Pxy /\ Qxz.. x being free in both P and Q is important because only those ground formulas in P and Q that have a common x value satisfy the predicate of P JOIN Q.

It should be clear now that it is the nature of join that dictates that certain rows represent compound propositions, but there is more. The dependencies defined on the database also have an impact. There really isn't space here to go into detail, but suppose that the database embodies the sentence,

forall x forall y forall z Pxy -> Qxz

Now the database still consists not only of the same two tables, but also an inclusion dependency from P[x] to Q[x].

forall x forall y forall z Pxy iff Qxz

Here the database would consist of just one table but each row would represent a biconditional. Received on Fri Oct 30 2009 - 03:40:59 CET

Original text of this message