Re: Sixth normal form

From: Brian Selzer <brian_at_selzer-software.com>
Date: Sun, 19 Aug 2007 04:03:16 GMT
Message-ID: <8iPxi.28363$RX.22026_at_newssvr11.news.prodigy.net>


"JOG" <jog_at_cs.nott.ac.uk> wrote in message news:1187485136.226999.22730_at_w3g2000hsg.googlegroups.com...

> On Aug 18, 8:26 am, "Brian Selzer" <br..._at_selzer-software.com> wrote:

>> "Jan Hidders" <hidd..._at_gmail.com> wrote in message
>>
>> news:1187391299.353682.322830_at_w3g2000hsg.googlegroups.com...
>>
>>
>>
>> > On 17 aug, 19:15, "Brian Selzer" <br..._at_selzer-software.com> wrote:
>>
>> >> [... big snip ...]
>>
>> >> If the goal is a database schema that can represent exactly the same
>> >> information content, then the cyclical interrelational constraint is
>> >> required; if the goal is a schema that can represent additional
>> >> information
>> >> without contradicting the closure of the set of FDs and INDs for all
>> >> schemata that are equivalent to the less normalized schema, then the
>> >> cyclical interrelational constraint is not always required, except, of
>> >> course, when moving from 5NF to 6NF.
>>
>> > *sigh* You already said this, and I already explained that under the
>> > usual definitions of those terms they are *never* required, including
>> > when going from 5NF to 6NF. You replied that you are using other
>> > definitons but apart from some informal examples you never gave a good
>> > definition nor a good motivation why that should be the definition. I
>> > think the onus is on you here to show why you want to depart from
>> > rather well-established terminology.
>>
>> It all boils down to the domain closure assumption, which states that the
>> only individuals that exist are represented by values in the body of the
>> database, and the identity relation, =, which guarantees that no matter
>> how
>> many times a value appears, there is only one individual represented by
>> that
>> value. If you have a database schema consisting of a single relation
>> schema
>> that satisfies the functional dependency A --> B, then due to the domain
>> closure assumption, the existence of an individual that is represented by
>> a
>> value for A depends upon the existence of a specific individual that is
>> represented by a value for B. So if the values a1 and b1, for A and B
>> respectively, appear in the same tuple, then a denial of the existence
>> of
>> the individual represented by b1 denies the existence of the individual
>> represented by a1, but a denial of the existence of the individual
>> represented by a1 does not necessarily deny the existence of the
>> individual
>> represented by b1, since there could be another tuple that has the values
>> a2
>> and b1.
>>
>> Now suppose that the relation schema also satisfies the functional
>> dependency B --> C. Then if the values a1, b1 and c1, for A, B and C
>> respectively, appear in the same tuple, then a denial of the existence of
>> the individual represented by c1 denies the existence the individual
>> represented by b1 and transitively the existence of the individual
>> represented by a1. When the relation schema is decomposed into a family
>> of
>> relation schemata such that A and B appear in one relation schema and B
>> and
>> C appear in another, then the denial of the existence of the individual
>> represented by c1 no longer denies the existence of the individuals
>> represented by b1 and a1. This is the problem. This is why I think that
>> an
>> inclusion dependency is required.
>>
>> This issue is not limited to database schemata with only one relation
>> schema, but if you limit the scope to the decomposition of a single
>> relation
>> schema into a family of relation schemata, then it follows from the above
>> two paragraphs that if the relation schema satisfies the functional
>> dependency A --> B then the appearance of an individual that is
>> represented
>> by a value for A depends upon the appearance of a specific individual
>> that
>> is represented by a value for B. Thus it also follows that the denial of
>> the
>> appearance in the family of relations of the individual represented by c1
>> no
>> longer denies the appearance in the familiy of relations of the
>> individuals
>> represented by b1 and a1.
>>
>> The issue is also not limited to decomposition due to transitive
>> functional
>> dependencies. If a relation schema satisfies the functional dependency
>> A --> BC, then the appearance of an individual represented by a value
>> for A
>> depends upon the existence of both the individual represented by a value
>> for
>> B and the individual represented by a value for C. When the relation
>> schema is decomposed into a family of relation schemata such that A and B
>> appear in one relation schema and A and C appear in another, then if the
>> values a1, b1 and c1, for A, B and C respectively, appear in the same
>> tuple
>> of the original relation, then in the family of relations the denial of
>> the
>> appearance of the individual represented by c1 no longer denies the
>> appearance of the individual represented by a1 and the denial of the
>> appearance of the individual represented by b1 no longer denies the
>> appearance of the individual represented by a1. This is why I think that
>> in
>> this case a circular inclusion dependency is required.
>>
>> I would argue that the requirement for an inclusion dependency that is
>> due
>> to the failure for a denial of the dependent to deny the determinant is
>> differs from the other interrelational constraints that would be required
>> for a goal of equivalence in that the one describes a 1:1 relationship,
>> and
>> the absence of the inclusion dependency changes the relationship to
>> 1:0..1;
>> whereas the other interrelational constraints are similar to "whenever
>> there
>> is a value for X, there must be at least one value for Y," which
>> describes a
>> 1:1..n relationship, and the absence of one of those other
>> interrelational
>> constraints changes the relationship to 1:0..n.
>>
>> I'm not sure if the last paragraph is coherent. I'm a little bit tired
>> right now.
>
>
> Does anyone else understand any of this? Am I losing the plot -'
> Individuals', 'denial of existence', etc, etc... what on earth does
> any of this have to do with the price of fish? Sigh, I remember the
> good ol' days of logical models. Propositions with roles and values.
> Predicates describing which of these propositions were acceptable.
> Looks like they've gone the way of betamax, walkmans, and those darned
> talented kids from Fame. I wonder if they ever did learn how to fly.
>

To deny the existence of an individual represented by a particular value, one need only issue a delete or a multiple delete that targets every tuple in which that particular value appears. I would have thought this obvious, but it appears I am mistaken.

It has nothing to do with the price of fish, but it has everything to do with whether cyclical referential constraints are required when moving from 5NF to 6NF.

The balance of your post does not make any sense. In what way does what I posted deny the import or applicability of propositions, predicates or logical models? Received on Sun Aug 19 2007 - 06:03:16 CEST

Original text of this message