# Re: Codd's Information Principle

Date: Sat, 31 Oct 2009 15:16:20 -0700 (PDT)

Message-ID: <9b91dd73-0074-4d78-a536-b14c27e85366_at_m16g2000yqc.googlegroups.com>

On Oct 31, 6:00 am, "Mr. Scott" <do_not_re..._at_noone.com> wrote:

> "paul c" <toledobythe..._at_oohay.ac> wrote in message

*>
**> news:urFGm.49866$Db2.28279_at_edtnps83...
**>
**>
**>
**>
**>
**> > paul c wrote:
**> >> Mr. Scott wrote:
**> >> ...
**> >>> 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.
**>
**> >> I have no argument about the application of logic. Perhaps my point has
**> >> more to do with the language devices, such as 'insert', that are
**> >> essentially an assignment. While they are defined in logical terms they
**> >> are outside logic in the sense that when they are applied, something
**> >> special happens, a 'die is cast', as it were.
**>
**> >> (Once we enter the realm of assignment, talk of possible base and view
**> >> differences is inevitable. I don't think it's inapt to say that treating
**> >> views differently from base values amounts to saying that assignment is
**> >> polymorphic, ie., behaves differently depending. I don't see a necessary
**> >> reason for that. But when dealing with a value that is the result of
**> >> assignment, I think it remains clear that the view definition is
**> >> effectively no more than a constraint on the view's value, and not a
**> >> constrain on the base values in the expression of the view's definition.
**> >> This may seem fuzzy and mystical perhaps due to my language not being
**> >> really up to the task but if that can be forgiven, I would say that it is
**> >> better to subtract notions than add them, ie., better to not introduce a
**> >> difference.)
**>
**> > Maybe it's useful to ask this: Was Codd trying to introduce assignment to
**> > logic, (eg. was he trying to augment predicate calculus) or was he trying
**> > to apply logic to the assignment of recorded values?
**>
**> Neither. Codd wasn't trying to introduce assignment to logic because
**> assignment is an integral aspect of logic. Under an interpretation, meaning
**> is assigned to the terms of the first-order language and truth values are
**> assigned to the formulas. The terms of the language include variables and
**> function applications. Elements of the domain are assigned to variables,
**> and function applications evaluate to elements of the domain (constant
**> symbols being nothing more than 0-ary functions). Formulas are then
**> assigned truth values in the following way: once each term has been mapped
**> to an element of the domain, each ground atom is analyzed to judge whether
**> or not it is true. For example, if c evaluates to a particular car and Px
**> is the predicate "<x> is red," then the ground atom Pc is assigned a
**> positive truth value if and only if the car that c evaluates to is in fact
**> red at the time of interpretation. The relational model provides a
**> framework for recording those judgements so that they can be used to answer
**> queries. Codd wasn't trying to apply logic to the assignment of recorded
**> values; instead, he provided a framework whereby conclusions can be drawn
**> from recorded judgements by applying logic. More importantly, since only
**> what has been judged to be true can appear in a database, conclusions can be
**> drawn from what is in the database independent of what the symbols recorded
**> actually mean. What you refer to as assignments, inserts, updates and
**> deletes, merely correct what is recorded to reflect the current
**> interpretation. The database before an update reflects a different
**> interpretation than the database afterward. For example, if the car
**> referenced in the ground atom Pc has been painted blue, then Pc should be
**> judged to be false, since that particular car is no longer red at the time
**> of interpretation; consequently, the row in the database that represents Pc
**> should be removed since only what is judged to be true should be represented
**> in the database.- Hide quoted text -
**>
**> - Show quoted text -
*

I appreciate this text.

However I would like to add some thoughts. Loosely speaking a database
is a model for a schema. Not necessary a relational schema. Sometimes
we also need all databases which were a model for the schema.
Sometimes we must keep wrong (false) data in our database because
there are procedures based on these false data (for example a
procedure at a court). More important, there are big DB fields of
general character where we maintain all data - good, wrong and false.

Vladimir Odrljin Received on Sat Oct 31 2009 - 23:16:20 CET