Jules Bohanon on Database Design

Answers to database design questions by Jules Bohanon, Incwebs, Inc., Lakeland, Florida
Date: 1 January 2015

Please explain (or briefly describe) the general philosophy behind your database design approach.

     Without knowing it, I've been following the Agile development philosophy for several years. Customers rarely are able to adequately define their requirements. I "throw together," as quickly as possible, a rough draft solution based solely on an initial or subsequent conversation ("discovery meeting") with the customer. When I walk them through it on a web conference, they typically have several "ah-ha" moments and are then able to give meaningful instruction.

Where do you live?

     Halfway between Tampa and Orlando, in Lakeland, FL

Briefly describe your pertinent work and/or educational background.

     My original career path was journalism, but I've always had a knack for computers. While working for a publishing company after graduating with a BA in Political Science, I began moonlighting creating websites in 1996. In 1997 I was hired as a consultant for a small hardware/software consulting company, and by 2001 I became its president.

What are the industries you have the most experience working within?

     Government, education and health care.

Your rate is higher what other programmers and freelancers charge. How does what you do with database design save clients and companies money in the long run?

     I have had many, heartbreaking conversations with prospective customers who spent five (to six!) figures and 2-3 years on solutions that ultimately never worked! Somehow I have an almost unique ability to translate the customer's needs into a strictly normalized database design that also features an intuitive, user-friendly interface. I've never written a user manual, nor have I been asked for one. Never, not a single time, have I had an unhappy customer in my career. Yesterday I updated an Access solution I'd originally written in 2008 :)

You have special expertise in database design. How is what you do different from what a generalist computer programmer might do when it comes to creating a database back end?

     Sorry, but I don't know the mind of a generalist programmer, so I'm not sure I can answer this. I will say, I am very strict about normalizing databases, and on several projects I've "taken over," the database design has been sloppy. "Normalizing" is a technical term, and I don't tend to use it with my customers, so if you're not familiar with it I'd be glad to define it.

When you look at database design work done by generalist programmers or other people with limited DB design expertise, what is the most insane or annoying thing you see repeatedly?

     Repeating data in two tables, e.g., in a customer/sales database, saving the CustomerID and the Customer Name, address, etc. in the "order" table, in addition to having that identifying information in the Customer table. When you change the customer's address in the Customer table, then the old address remains stored in the Order table. Not good. The other major annoyance is the insistence on saving dynamic data in a static field, e.g. Current Balance.

How is the database design work you do distinct from and also integrated with other aspects of overall software/technology systems?

     How is the database design work you do distinct from and also integrated with other aspects of overall software/technology systems?

Describe how the database design work you do now is similar to or different from "textbook database design," such as one might learn in college or read in a text book or software manual.

     I've never taken a class, but I've taught a few. One key departure, I guess, from my programming style and what I've taught in classes is, I rarely (if ever) use a macro. I opt for VBA instead.

What is the biggest example of a "rule" you routinely break? (Or another way of putting it is: what popular tradition are you most likely to depart from, if any?)

     Can't think of any offhand.

What RDBMS have you used extensively, or are at least somewhat familiar with based on first-hand experience?

     SQL. On occasion mySQL if I'm taking over an existing project, but I'd never choose it.

Given an assignment to create a website from scratch for Company X, what RDBMS are you using? (website specs: principle table has 10,000 rows and will grow to 200,000 over next five years; admin back-end, general browsing, user logins; no more than 100 concurrent users)

     SQL, every day of the week and twice on Sundays.

What other technologies are you using for this website?

     Microsoft VB .NET running on IIS. DevExpress.

What tools would you be using? (IDEs, code editors, database design tools, if any)

     I've only personally done one web solution, in Visual Studio Express. Generally our other programmer (in Incwebs) does the web programming and I work with the customers.

Aside from the database design, how much other development do you typically do? How much would you prefer to do?

     Rudimentary graphic design.

Table names: plural? singular? or something else? why?

     Singular. I name tables Customer_T and Order_T instead of tblCustomer because I prefer to have them in alphabetical order. I use State_lu and City_lu for lookups.

How do you name your primary identity fields?

     CustomerID, OrderID

Describe your relationship (if any) with WordPress?

     None, I have a local guy to whom I outsource when necessary.

If you use stored procedures, how do you decide to use them or not use them? What are your alternatives?

     SPs are indispensible when writing an Access front end to a SQL back-end, especially when working with tables of 1 million+ records.

Why would a client who needs database design work done be making a wise move to hire you (if you're available)?

     They should be so lucky :) I stopped taking new customers in February 2014 and have three customers who have been waiting on me that long. There's no doubt in my mind I'm in the top 10 best Access developers in the country, if not the world. I'm fast, I'm good, and I can actually communicate in plain English. I make time for production emergencies even if it means 9 pm on a Saturday. My customers love me, and the feeling is mutual, I help them run more efficiently and I get to work from home and set my own hours.