19 March 2005
Imagine a six-month course devoted to relational databases. For those of you who have never used a relational database, just imagine a formal system of storing objects (e.g. shirts, lamps, bread), and a system of retrieving the objects upon request (e.g. give me all blue clothes). Useful, but dreadfully boring. I wasn't particularly looking forward to this course, nor did I expect much out of it.
Over the past five years I've used relational (SQL) databases from time to time. They're pretty good at storing and retrieving data, as long as it can be shoehorned into a table. But anything other than a clean table quickly degenerates into an ugly hack. Basically SQL is a two-dimensional version of PEEK and POKE with some nifty search options.
I was completely wrong. This course spent the first three months teaching the basic concepts (stuff that anyone can pick up in half an hour just by looking at existing code). Then it started using the concepts as they were intended to be used. Compound statements, groups, restrictions, domains, embedded programming, views, transactions, oh my! SQL isn't about storing data. It's about manipulating data. I grok it now.
It is amazing how one can know the basics of a system, yet sometimes one can entirely miss the intent. Like the gentleman who would use his email client to type out a letter, print it, stuff it into an envelope and mail it to the recipient. Don't laugh, he'd managed to figure out most of the functionality on his own, he simply didn't recognise the full potential.
Who'd have thought that out of all the courses I've taken, it would be a relational database course that would capture my imagination?
Grrr. I was really looking forward to seeing the one-man/one-robot Cognitive Science play Judy in Aberdeen last week. But the stack of end-of-term assignments made this impossible.