Re: Temporal operations

From: Paul G. Brown <paul_geoffrey_brown_at_yahoo.com>
Date: 7 Sep 2003 00:59:20 -0700
Message-ID: <57da7b56.0309062359.1461b1b6_at_posting.google.com>


"Bob Badour" <bbadour_at_golden.net> wrote in message news:<rww6b.622$Lg2.56494215_at_mantis.golden.net>...

> Perhaps, he expects users to make do with the only data type explicitly
> required by Codd, ie. boolean.

  Yes. As a matter of fact, he does.

   There is true. And there is false. (And there is unknown). For the purposes   of automating reason everything else is superflous. I don't know if what   you're storing in my DBMS is true or false, and I sure don't know what   isn't stored there. I can only try to ensure that the way you manage and   manipulate it is consistent with the laws of logic.  

> I don't know whether he takes things out of context so much as he
> demonstrates a profound incomprehension of "independent of" as in
> "orthogonal to", which seems ironic while citing mathematical logic. He says
> the equivalent to "extending the X-axis with the Y-axis". The Y-axis does
> not extend the X-axis. It adds a whole new dimension while leaving the
> original intact.

   There are no axis in formal systems. There are axioms. Adding new axioms   extends the set of axioms. This is what the term mean.

   Do you have any argument here? Any refutation? Or are you obliged to   attribute to me things I did not say in order to support a position you   cannot articulate and are unable to defend?

> > > *correct*
> > > the model by introducing a distinction between relations and and
> > > entirely new thing called a relvar
> >
> > What is the problem in making clear a distinction that was already
> > implicit? Or don't you think the distinction between value and variable
> > is worth making?
>
> I can understand an objection to proliferating jargon. Our industry has far
> too much of that already, but I find this specific jargon useful because the
> symbols "relation variable" and "relation value" look too similar. Relation
> and relvar are shorter, clearer symbols when written and when spoken.

   Jargon is language. We are talking axioms here. We are talking about   the logical model: the building blocks of reason. Your choice of notation   is entirely up to you. I only want consistency in the way you use your   terms.

   What is this distinction between 'relation', 'relation variable' and   'relation value'? It is not a part of mathematical logic (this is a   statement of fact, easily refuted if you can offer a *single* example from   the literature, which contradicts it). I further assert that it is a   confusing and unnecessary distinction in terms of implementing a   DBMS, and provided an example (the relation 'greaterthanorequal<>) which is   neither a value nor a variable. Do you have any logical argument or even   a coherent observation to make about the example?  

> > > But to broaden the theme: why is it illegitimate to 'extend' or
> > > 'pervert'
> > > the relational model with 3VL but OK to add 'domain inheritance' (OO
> > > Prescriptions 2 & 3)?
> >
> > 3VL is easily the most contentious point in the relational field,
> > I wouldn't spend much arguing this in the current loaded context.
>
> It is perfectly legitimate for one to create a 3VL domain and provide
> explicit operations that evaluate to boolean: IsKnown, IsUnknown,
> IsKnownTrue, IsKnownFalse etc. It is not legitimate to pollute the logical
> data model with redundant structural elements like NULL or references.

    Wow. From TRUE, FALSE, and UNKNOWN, you have multiplied entities to include   IsTrue, IsNotTrue, IsKnown, IsUnkown, IsKnownFaslse. You sound like   Donald Fumsfeld! Want to add 'IsKnownKnown', 'IsUnknownKnown', and   'IsUnknownUnknown'?

   But seriously, you're conceding the point. "The relational model needs   no blah blah . ." was the original D&D diktat! Well, apparently, it   does. But I take the argument seriously. The relational model is something   you extend at great hazard. TRUE, FALSE and UNKNOWN. All else   is incoherence.

 [ snip ]

> > How can you compare both, unless you're letting emotions take over
> > your thinking?
>
> Maybe, he just doesn't know any better. Sometimes, it is more effective to
> just answer the question.

     What, in one sentnce, was the question? If I'm supposed to be answering    one then at least I have a right to know what it is. In performing the    comparison I can see no distinction. It is up to the person making the    claim to justify it.

> > > Why does a description of a logical model include
> > > two Prescriptions about transactions? (RP# 17 and OO # 5)?
>
> I don't know. I suggest he contact the authors and ask them. If I had to
> speculate, I would guess they included RM Prescription #17 because data
> management requires managed concurrent update from all logical data models,
> and I would guess they included OO Prescription #5 as a requirement for good
> language design.

   "If you had to speculate." "Ask the authors."

   I don't speculate. I read the text. It says nothing about language in   RP # 17. In OP # 5 it says that the reason you want to do this is to avoid   certain SQL mistakes. *Then* they go on to point out that the "mistake" is   related to the way the SQL standard says "leave it up to the implementation",   implying that whatever practical difficulties arise are not SQL mistakes   at all!

   The DBMS products with which I am most familiar provide a SQL compliant and   a non-SQL compliant flavor. Is the transaction support in SQL a mistake?   Maybe. But it is apparently something the vendors got right. Are you gonna   say that? (And if you do I have a medium, rusty freighter loaded down with   really angry people who would beg to differ.)

   But once again, what is this doing in the logical model? That's the point.   Please address the question I raised, not the strawman you think D&D   were demolishing.  

 [ snip ]

> > > And if (as
> > > they may) D&D remove transactions from their view of the model does
> > > this constitute a 'correction'? Using words like 'pervert' amps up
> the
> > > rhetoric but adds nothing of substance to the argument.
> >
> > Again, if a system will support transactions or simply simultaneous
> > operations (D&D's new proposition) is hardly as essential as making the
> > distinction between values and variables, domains and objects, and logical
> > and physical...
>
> It might constitute an evolutionary step in our understanding of the
> relational model. It might indicate a better understanding of how to meet
> the more fundamental requirement of managed concurrent update. Or they might
> just decide to keep it in. Aftera ll, it is one thing to discourage
> procedural specifications for complex data changes, and it is quite another
> thing to make it impossible to safely specify them.

   THE RELATIONAL MODEL NEEDS NO EXTENSION, CORRECTION, SUBSUMATION or   PERVERSION. (Their words!)

    Oh. But it does. It needs transactions.

    But wait! They're going! Why? Is it because they're an extension? Or   because they're a perversion? Or because they susbsume too much? I don't   care. Transactions define the quality of service guarantees DBMS might   make wrt changes. They don't matter squat to the logical model.

    "Discourage?" Formal systems are sets of axions. You don't "discourage"   an axiom. It's like discouraging the tide. Or gravity.

    Sloppy language, sloppy thinking. I am having fun.

> > Leaving aside for a moment the point that if the U_ operators are
> > > shorthand for simpler operators why go to the trouble
> >
> > Ooops... I won't go into details now for lack of the book by my side
> > now, but it seems you are misrepresenting stuff here.
>
> Because the longhand is cumbersome and errorprone. I assume you cut out part
> of his nonsense.

   Nonsense? (Note: ad homenim, unsustained argumentation). Care to provide   a single piece of evidence or an argument to sustain that assertion?

   I gave specific citicisms and a chain of reasoning. I quoted from the   source material. And the best you can do is to say "nonsense"? Care to   contest any of the citations? See any problem with the logic? Can you   enlighten us as to any dodgy assumptions underlying the thinking? They   are there, Bob. All over the place.

> [further partial excerpts snipped]
>
> > > I would also do away with domain operators, domain
> > > inheritanc (the whole ghastly edifice of the POSREP)
> >
> > Ops... again, POSREPs have little to do with domain inheritance...
> > they certainly don't depend on inheritance, and are useful in its absence.
> > What do you have against them?
>
> I wonder what Brown wants to do with data types if they have no operations.
> Obviously, Brown does not value data independence, but he is a mindless
> vendor after all so I don't really expect much.

   While there was no question mark there, Bob's sentence was a question,   so I'll take that as evidence of some kind of growth.

   Well, take away domain operators, and what is left? Domains, and relations.

   Consider Equals. Pretty unambiguous, huh? But I want you to note that we   call 'equal' a 'relation' in mathematical logic. The term 'operator' is   usually reserved for group manipulation.

   So, here is an example of what the alternative looks like:

   CREATE COMPUTED RELATION Equal ( Domain INTEGER, Range INTEGER );

   CREATE COMPUTED RELATION Equal ( Domain String, Range String );

   RANGE OF Identity ( Domain, Range ) OVER    RETRIEVE ( Domain, Range ) FROM Equal ( INTEGER, INTEGER );

   RANGE OF Identity ( Domain, Range ) OVER    RETRIEVE ( Domain, Range ) FROM Equal ( String, String );

   CREATE REAL RELATION Parts ( PartId INTEGER, Name String )

        Identity ( PartId );

   CREATE REAL RELATION Supplier ( SuppName String,...)

        Identity ( SuppName );

   CREATE REAL RELATION PS ( PartId INTEGER, Supplier String, Price Money )

        Identity ( PartId, Supplier ),
        Exists ( Supplier ( SuppName, ...), Equals ( SuppName, Supplier )),
        Exists ( Parts ( PartId, ...), Equals ( PartId, PS.PartId));

    This is a relation with a 'key' identity, being two elements for which    the 'identity attribute holds in a conjunction. Note the paired rules    which replace 'foreign keys'.    

    Let's see what happens with a slightly more involved example:

   CREATE COMPUTED RELATION Identity ( Domain INTERVAL, Range INTERVAL );

   CREATE COMPUTED RELATION Within ( Domain String, Range INTERVAL );

  • NOTE: No Equal here. Although there might be:

   RANGE Overlap ( Domain, Range ) OVER
   RETRIEVE ( Domain, Range ) FROM Identity ( Domain INTERVAl, Range INTERVAL);

   ALTER RELATION PS ADD ATTRIBUTE ( When INTERVAL );

   ALTER RELATION PS DROP Identity,

                     ADD Identity ( PartId, Supplier, When ); 

    Q1: Show me who supplied part "5" at date "D"? (Values always being    their lives as a keystroke. This is not true, but it serves as an axiom    for now. )

    RETRIEVE ( SuppName )

        FROM PS      ( PartId INTEGER, Supplier String, Price Money, 
                       When INTERVAL),
             Equal   ( PartId, "5"),
             Overlap ( Domain, PS.When ) AS O1,
             Within  ( O1.Domain, "D" );

   What the, constitutes the behavior of a domain? Nothing more than the   set of relations within which its use is indicated. (For those of you   who know about the limits to Datalog, I do too, but the point here is   that we don't need 'domain operators', not about the problem raised by   quantifiers and negation in this class of language.)

    You can wrap all kinds of semantic sugar around this. I'm the   "mindless vendor" here (another ad hominem there). But it is liberating to   reason about the implementation using this model, as opposed to a model   where the domain's behavior is fixed and assumed.

     For example, properties of binary relations -- such as commutivity --   fall out of the definition of the relation. And with other properties   such as transitivity and reflexivity I can automate the exploration of a   plan space.

> > > [1] Codd, E. F. "The Relational Model for Database Management: Version
> > > 2"
> > > Addison-Wesley. 1990.
> > >
> > > (Note that this work pre-dates the publication of the Manifesto by a
> > > whole
> > > four years, pre-empts many of TTM's novelties (though not all)
> >
> > Which ones?
> >
> > BTW, TTM is not about novelties. It is about reaffirming the RM
> > as a solid foundation against the OO Newspeak, and applying it to the
> > needs that supposedly gave birth to OODBs.
>
> Well said. Their whole exercise started as an exploration of the features of
> object orientation that might improve the relational model and ended by
> observing that object orientation had nothing to offer.

   I offered an argument. It has the form of the following syllogism.

  o Date & Darwen said "the relational model needs no . . ."

  o Data & Darwen promptly did " . . ."

  o Therefore, Date & Darwen are inconsistent.

   Having provided the syllogism I then provided the evidence. I showed where   they said what they said , and refuted your claim that the quotation was   out of context. I then showed examples of where they had apparently commited   the offenses they were banning. At every step I have acknowledged the   merits of their work, I have emphasized my respect for it, and I have   demonstrated my knowledge of it through extensive quotation and critical   thinking.

   Let me quote something you just said back to you:

 > Well said. Their whole exercise started as an exploration of the features of
> object orientation that might improve the relational model and ended by
> observing that object orientation had nothing to offer.

   "Of course, we do believe that object technology has important contributions     to make to the database management field as well; indeed, our remarks     above on Object/Relational systems were meant to suggest as much".

    This is from page 1, paragraph 2 of the Manifesto. Once again, you are   either lying (knowingly uttering an untruth) or else you have a shaky grasp   of written comprehension.   

    Let us know which alternative you decide best fits the facts.

     KR

           Pb Received on Sun Sep 07 2003 - 09:59:20 CEST

Original text of this message