Date: Mon, 31 Dec 2007 10:49:20 -0800 (PST)
On Dec 31, 5:33 am, JOG <j..._at_cs.nott.ac.uk> wrote:
> On Dec 31, 8:32 am, "Brian Selzer" <br..._at_selzer-software.com> wrote:
> > There is a functional relationship between a key and each non-key column.
> > If null can only indicate that there should be a value but it hasn't been
> > supplied, then the presence of a null doesn't alter that functional
> > relationship. In other words, for each particular key value, there is one
> > and only one value for each non-key column--even if it is unclear what that
> > value is. In a perfect world, there is no missing information, and a table
> > that permits nulls becomes a relation that doesn't. In such a relation, the
> > relationship I'm referring to would be called a functional dependency. By
> > separating a nullable column into its own table, that functional
> > relationship is lost.
> But by allowing a column to be nullable aren't you saying that the
> "functional relationship" wasn't valid in the first place.
Well, if the database has only partial information, the function is a partial one no matter how you slice it. (That is, no matter what the schema.) It isn't "not valid" it's "not total."
The question of what the relationship is between the schema and reality is always something that only exists in our head. If we decompose a nullable column into its own table because information is missing, then that's part of the predicate of the decomposed table. If we do so for some other reason, then *that* reason is part of the predicate of the decomposed table.
Marshall Received on Mon Dec 31 2007 - 19:49:20 CET