U. S. General Creighton Abrams of WWII fame said “When eating an elephant, take one bite at a time.” He may not have been the first person to say this or something similar, but as an Army veteran myself, I can hear him say this around a half smoked cigar, in a gravelly voice caused by countless company, battalion and brigade formations. That endears the quote to me.
Though this doesn’t seem like an appropriate quote for database analysis, I find it to be the core of what I do on a daily basis. This quote is supposed to inspire people to break down a seemingly impossible job into smaller, doable steps. That is what I do every day.
The heart of my work is to take the huge jobs that keep getting dropped into my lap and break them down into “bite sized” tasks. I’ll be doing that with this blog project. I’ll be breaking it down into smaller tasks.
For starting this, I remember that the database exists to complement the associated application with data persistence (making sure the data exists between sessions), data integrity (making sure the data says safe) and data processing that is better executed on the database server than on the application system. In the case of this blog project, the standard defines a specific message format. All of the properties will need to be persisted and integrity guaranteed. Additionally, some of the base processing can be done using views and stored procedures.
To begin the blog project, when I’m presented a requirements document, or in this case a standard, I read through it at least once before writing any code. I look for the high level organization of the data to be persisted. This gives me an idea of how I need to break down the data, and how to organize the tables (I’m working on RDBMS systems, not No SQL systems).
To eat this elephant, I’m going to start by breaking this project into three phases. The first phase, and the longest, will be to break down the basic properties defined in the standard by the six different components also defined in the standard; Event, To Do, Journal, Free/Busy, Alarm and Time Zone. The second phase will be to take the complex recurrence rules and implement them. And the third, and final stage, will be to implement the exception rules; a more nebulous set of rules in the standard.
By the end of this project, I hope to have a full database schema for the iCalendar standard worked out as well as the start of a C# and a Java library to access the schema and create a calendaring application.