Sam Mason <sam(at)samason(dot)me(dot)uk> wrote:
> I've not read much of his writings, any canonical references for
> this sort of discussion?
I think this is the one, although it's been a while since I read it,
and I might be getting it confused with something else he wrote:
Codd, E.F. (1990). The Relational Model for Database Management
(Version 2 ed.). Addison Wesley Publishing Company.
ISBN 0-201-14192-2.
I believe that he puts forward a list of about 200 things he feels
should be true of a database in order for him to consider it a
relational database. Since he was first and foremost a mathematician,
and was something of a perfectionist, I don't think some of these are
achievable (at least in the foreseeable future) without tanking
performance, but it makes for an interesting read. I find most of it
to be on target, and it gives a unique chance to see things from the
perspective of the inventor of relational model for database
management.
I don't, of course, agree with him on everything. If you think that
the SQL standard date handling is weird, wait until you see how a
perfectionist mathematician attempts to deal with it. :-) Also, the
requirement that, to be considered a relational database, it must be
impossible to write two queries which can be shown to be logically
equivalent but which optimize to different access plans to be, well, a
bit "ivory tower."
It appears that the "no duplicate rows in a relation" rule is to
Codd's relational theory what the speed of light is to relativity. I
think it is basically a corollary to the rule that each datum must be
addressable by specifying its table name, column name, and some set of
key values which uniquely identify the row.
-Kevin