# Re: more on delete from join

Date: Tue, 1 Sep 2009 20:57:32 -0400

Message-ID: <M9OdnUk7xvBhXwDXnZ2dnUVZ_vGdnZ2d_at_giganews.com>

"paul c" <toledobythesea_at_oohay.ac> wrote in message
news:ktcnm.43362$PH1.627_at_edtnps82...

*> Mr. Scott wrote:*

*> ...*

*>> An appeal to logic. Affirming the disjunction of two ground atoms,*

*>>*

*>> Pabc OR Qabc*

*>>*

*>> implies that either Pabc is true or Qabc is true or both are true. *

*>> Similarly, denying the conjunction of two ground atoms,*

*>>*

*>> NOT (Pabc AND Rabd),*

*>>*

*>> is equivalent to affirming the disjunction*

*>>*

*>> NOT Pabc OR NOT Rabd*

*>>*

*>> which implies that either Pabc is false or Qabd is false or both are *

*>> false. Either case involves affirming a disjunction, not a conjunction.*

*>> ...*

*>*

*> Yes, it's true that NOT (Pabc AND Rabd) by itself doesn't imply NOT Pabc *

*> AND NOT Rabd. However, "Pab = Rab AND NOT (Pab AND Rab)" does imply the *

*> conjunction NOT Pab AND NOT Rab. In other words, we can retract equal *

*> projections of subsets of Pabc and Rabd if we can interpret a delete *

*> statement in terms of Pab and Rab.*

*>*

I think you're jumping to the conclusion that (a,b) is a key value.

It's also a big leap to assume that Pab means the same thing as Rab.

*>> Now let's apply this logic to relational theory. Let there be tables *

*>> with predicates P, Q and R, a view that is the union of the table with *

*>> predicate P and the table with predicate Q, and a view that is the join *

*>> of the table with predicate P and the table with predicate R. Inserting *

*>> a row (a,b,c) into the union view affirms the disjunction Pabc OR Qabc; *

*>> deleting a row (a,b,c,d) from the join view affirms the disjunction NOT *

*>> Pabc OR NOT Rabd. Both inserts into the union view and deletes from the *

*>> join view affirm disjunctions, and as a consequence, neither inserts into *

*>> the union view nor deletes from the join view have unique results.*

*>>*

*>> I can see the benefit of recording disjunctive information. If it is *

*>> known that A OR B is true, then it should be possible to assert A OR B, *

*>> even if it is not known which is true. I just don't think that an insert *

*>> into a union view is the correct way to do it. A better way would be to *

*>> use three tables, one for facts like 'It is known that A.' one for facts *

*>> like 'It is known that B.' and one for facts like 'It is known that A OR *

*>> B, but not which.'*

*>> ...*

*>*

*> That's a clear, logical and very direct position. Mine is more *

*> complicated, maybe I should try to be more formal about it. *

Received on Tue Sep 01 2009 - 19:57:32 CDT