"Count what is countable. Measure what is measureable. What is not measureable, make measureable." -- Galileo

Sunday, August 24, 2008

Plone and Teaching Database Design

In six weeks to the day I'll be hopping a flight to Washington National for seven days of Plone-ness. I've got my slot at Joel Burton's workshop for Mon-Tues, plan on attending the entire 2008 Conference on Wed-Fri, and finish it off with the weekend sprints. I'll get a chance to hook up with Jason, our Python guru who left Sandia two years ago and is now esconced in DC. Should be an excellent week.

Meanwhile, on to today's topic: teaching database design. My CMS-476 class at the College of Santa Fe begins on Wednesday and I have 12 students. Four seniors, three juniors, a single sophomore, and four freshmen round out the class, so I'll have a wide spectrum of experience and IT backgrounds.

Normally, one would consider a database design class to be strictly a design class: ER diagrams and that sort of thing. However, in the single 8-week term at my disposal, I feel like I owe to my students to give them a very, very solid database foundation and skills that will pay the rent.

What does that mean? Well, I start out with the wherefore and why of databases--an assignment for them to spend a day of "database fasting," trying to get through a day without directly using a database (for example, online banking, phonebook, e-mail contact lists, ATM, TV channel guide, and strictly speaking, a computer's file system). I point out the types of databases--hierarchical, relational, and object-oriented--with examples--a computer's file system, a MySQL database, and Zope.

While I spend a portion of every class going over SQL in detail, working from simple to complex statements, I also introduce them to database modeling. I start with the Formal Object-Relational Modeling Language (FORML), now embedded in Visio, which gets them used to using tools to generate ER diagrams and schema.

But nowadays I quickly move on to UML and that means I have an opportunity to teach them how class and state diagrams can quickly generate archetypes in an object-oriented framework. We implement a custom Plone data type from the UML via Joel Burton's online ArchgenXML tool. By that evening's end, we've gone from conceptual model and requirements through to fully integrated, web-enabled data system.

It definitely opens minds and I hope that eventually it opens doors for them. I encourage other database instructors to use Plone and Zope as a model of state-of-the-art object-oriented information management in their classrooms. Providing students with tools to not only design their databases but implement them in a web environment gives them a very valuable toolset, even in a relatively short course.

No comments: