It started like any other trip to the technical book store. I was wandering the isles looking for the second edition of the Sells/Griffiths WPF book. Little did I know I was in for a frightening shock. I wandered into the “Office” section of the store. Books on Infopath 2007 forms services, Word macros and other seemingly innocuous titles lined those shelves, which seemed so harmless and innocent. If this had been a scene in a movie the already-tense music would have reached a fever-pitch. Then, all of a sudden like a huge man-eating shark rising from the deapths to devour a nublie female swimmer, or a pschopath in a hockey mask jumping out from behind a tree wielding a butcher's knife it was there! My head reeled as my eyes scanned over the title. A wave of enterprise horror gripped my intestines. It was as if all that was unholy in software development had been summoned from the depths of the firey abys in which it dwelt and given physical form. As if satan himself had sat down at a firey typewriter, flayed the skin from some still-suffering soul and rolled it through the platen and began banging away, while imps and demons danced in the background. The title will be forever etched into my memory. If you are faint of heart or of weak resolve look away now, for I cannot promise that you won't be physically revolted by the title of this most hideous work. “Excel as your Database”! Excel as a m*th^!5r+==~#|{(.*)ing database!!! The internet doesn't have enough exclaimation points to convey just how alarmed I am at that title. Horror, pure and unadulterated horror! It might as well be called “how to approach a living software developer, drain their soul from their body through their eyes and then cast them into a moltern pit of eternal suffering”. I like to think of myself as an open-minded person, of even temprament and good nature. I'm a minimalist at heart. But there is no way, NOOOO way, I'm going to stand by and let that one slide. Not on my watch.
Why do I think using Excel as a database is such a bad idea? For the same reason I think using a text file, or an XML document as a database is a bad idea - they're not a database. At it's broadest definition a database is a structured collection of records or data that is stored in a computer system which Excel sort of fits, so long as the only structures you care about are cells, rows, columns and sheets. However today a database implies much more than this: Atomicity, Consistency, Isolation and Durability, of which Excel only offers one - durability. It would be the same as if I advocated an application as a workable spreadhseet even though it could only accept the numbers from 0 to 3. While we're at it lets throw out schemas, views, normal forms, indexes and referrential integrity. Concurrency? Scalability? Replication? Clustering? Full-Text Search? The state of the art in databases has risen to the point where features like this are just expected, and are available in any serious DBMS. Cost is no excuse for using Excel in place of a database either - if you're a windows user then SQL 2005 Express is FREE (as in beer). If you're a *nix user then use Postgres. Heck, I'd even go so far as to say you'd be far better off using Access as a database, if a database is what you really need. Bottom line - Excel is not a database. If you need a database then USE a database.