Thursday 6 December 2012

C.J. Date: Database Design and Relational Theory

Or to give its full title : "Database Design and Relational Theory: Normals Forms and All That Jazz"

Recently I found it necessary to re-examine a rather complex database I built over 7 years ago. The database had travelled through MySQL to Postgres with dalliances with ZODB and looked - with much benefit of hindsight - pretty crufty. If I was going to use the dataset, I would be using Django and probably its ORM, for convenience. To do this would require some reconstruction of the table definitions to suit the ORM and well if I had to do that, perhaps I should also spend some time evaluating the schema design and doing it right the nest time DIRTNT (rather than DIRTFOOT).

It has been a seriously long time since I earnestly poked at database theory so I reckoned it was about time I caught up. Hunting the web threw up a bewildering choice of possible guide books but none really seemed to pitch their content at an appropriate level for me; by now I don't need a guide to managing a database nor instruction in SQL. But I did feel the need for some real, man-sized theory.

This little volume was on the money and for once I opted for a dead-tree version even though it took a few days to arrive (instant gratification is not everything when it comes to reading textbooks on a Kindle). This is now sharing my bookshelf along with Donald Knuth and the Gang of Four; I hope they don't mind rubbing shoulders with C.J.Date instead of Dr. Codd.

Mind you, I seem to have forgotten how to learn from heavy-weight textbooks. Grinding through this one is quite demanding, something I only seem to be able to do in small chunks these days. And I am not even convinced the content is actually getting embedded in my grey cells. I am actually forcing myself to attempt and study even the exercises provided with each chapter - I never used to need to do this. There you are, that old tortoise age has almost caught up with me and I think the finish line might be in sight!
✔✔✔✔✔