ON BOYCE-CODD NORMAL FORM (BCNF)
with Fabian Pascal

 

 

 

From:  Troy Ketsdever

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: Troy Ketsdever

 

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