From:
Date: 18 Apr 2005
To: Editor
I was recently reviewing the informal definitions for normal
forms given in Date's AN
INTRODUCTION TO DATABASE SYSTEMS, 7th Edition, alongside the examples
and definitions provided by you in PRACTICAL ISSUES IN DATABASE
MANAGEMENT.
In a note on page 136 of PRACTICAL ISSUES we are
presented an example relvar RESERVE to illustrate Boyce-Codd Normal Form
(BCNF).
As you often note, it is difficult to determine the
conformance to a normal form absent the business rules that led to the design,
but I took the most obvious meaning of the example relvar RESERVE from the
sidebar.
The following is paraphrased from what appears to me to be
the most analogous example of overlapping candidate keys used by Date to
illustrate BCNF:
+----------------+
| +----------+ |
| | ROOM# |
|
| +----------+ |
+----------+
|
|------> DPT_DATE |
| +----------+ |
+----------+
| | ARR_DATE | |
| +----------+ |
+----------------+
and
+----------------+
| +----------+ |
| | ROOM# |
|
| +----------+ |
+----------+
| |------> ARR_DATE |
| +----------+ |
+----------+
| | DPT_DATE | |
| +----------+ |
+----------------+
Again we have two overlapping candidate keys, namely {ROOM#,
ARR_DATE} and {ROOM#, DPT_DATE}, because (a) if we are given a ROOM# and an
ARR_DATE, then there is exactly one
corresponding DPT_DATE, and equally (b) if we are given a ROOM# and a DPT_DATE,
there is exactly one corresponding ARR_DATE. However, the relvar is in BCNF,
because those candidate keys are the only determinants, and update anomalies
such as those discussed earlier in this chapter do not occur with this relvar.
--p. 371, AN INTRODUCTION TO DATABASE SYSTEMS, 7th
Edition
Further, I noticed that in your paper The Costly Illusion:
Normalization, Integrity and Performance, the BCNF example is somewhat
different, although it is taken from the same business domain (hotel
reservations).
Is my assessment correct that the example presented in PRACTICAL
ISSUES in fact does not represent a relvar that must be decomposed in order
to meet BCNF?
From: Fabian Pascal
To:
It's nice to see that there are still readers who take their
reading seriously and can think for themselves. That example was supposed to
test for that. Hehe, I'm kidding.
You are correct. I was not very careful when I chose that
example. The paper supersedes the book, and it has a correct example. Sorry
about that.
Ed. Note:
Interestingly, neither the reviewers of the manuscript, nor any reader to date
caught the error.
Posted 6/17/05