Re: Principle of Orthogonal Design

From: Brian Selzer <brian_at_selzer-software.com>
Date: Sun, 03 Feb 2008 14:45:33 GMT
Message-ID: <hskpj.5245$5K1.1767_at_newssvr12.news.prodigy.net>


"Jan Hidders" <hidders_at_gmail.com> wrote in message news:865d2599-6d49-4799-ba48-0c168a66f468_at_u10g2000prn.googlegroups.com... On 2 feb, 23:53, "Brian Selzer" <br..._at_selzer-software.com> wrote:
> "Brian Selzer" <br..._at_selzer-software.com> wrote in message
>
> news:de0pj.1810$xq2.1777_at_newssvr21.news.prodigy.net...
>
>
>
>
>
> > "Jan Hidders" <hidd..._at_gmail.com> wrote in message
> >news:febcf846-2d53-4979-af65-573b373ef6e9_at_l1g2000hsa.googlegroups.com...
> > On 29 jan, 19:24, "Brian Selzer" <br..._at_selzer-software.com> wrote:
>
> > [huge snip]
>
> >> > Or are you saying
> >> > that there must always be an inclusion dependency of one sort or
> >> > another for
> >> > there to be a POOD violation?
>
> >> Yes, I am. You can verify this in the definition of the POOD rule I
> >> already presented to you.
>
> >> -- Jan Hidders
>
> > There is something about this that just doesn't seem right to me.
>
> > Suppose you have two second order predicates, p and q, such that
>
> > p(s(A, B), C) \/ q(s(A, B), D),
>
> > represented by database schema with relations
>
> > P {A, B, C}
> > KEY {A}, and
>
> > Q {A, B, D}
> > KEY {A}.
>
> > Wouldn't there be meaning overlap between relations with those
> > predicates
> > regardless of whether there is an inclusion dependency?

<<<<<<<<<<<<<<<
No. You have split the predicate 's' into 's in p' and 's in q' and these two have no overlap. Of course the same tuples might appear in both, but these are not linked in the sense that updates to one imply updates to the other.
>>>>>>>>>>>>>>>

That doesn't make any sense in either of the sentences,

exists A exists B exists C exists D p(s) \/ q(s),

exists A exists B exists C exists D p /\ s \/ q /\ s

presumably, the same values for A and B would be in effect for each appearance of s.

> > Suppose that the FD A --> B on both P and Q is due to the predicate, s.
> > Wouldn't that require that whenever there is a value for A that appears
> > in
> > both a tuple in P and a tuple in Q, the value for B in each of those
> > tuples must also be identical?

<<<<<<<<<<<<<<<<<

That would imply a qualified inclusion dependency: for ever tuple t in P[A,B] such that t.A is in Q[A] it holds that t is in Q[A,B]. The same in the other direction. So in that case there would be overlap according to my definition.
>>>>>>>>>>>>>>>>>

This is interesting. I think I need to go back and review your definition of qualified inclusion dependencies. I was thinking more in terms of the subset/superset relationship that implies containment that is usually found with inclusion dependencies.

Also the idea of implied inclusion dependencies is interesting.

> I think the same could be said using first order predicates. For example,
>
> s(A, B) /\ p(A, C) \/ s(A, B) /\ q(A, D)
>
> represented by the schemata,
>
> P {A, B, C}
> KEY {A}, and
>
> Q {A, B, D}
> KEY {A}
>
> In both cases, the FD A --> B on both P and Q is due to the predicate, s.

Same argument here. There is an implied qualified inclusion dependency.

  • Jan Hidders
Received on Sun Feb 03 2008 - 15:45:33 CET

Original text of this message