How NOT to Design a Database-Driven Web Application

Say you are designing a web application. This application has a few basic components, including vendors, parts, and sales of said parts. How many database tables would you require to make such an application?

If you answered 3-5, you’re thinking waaaaay too small. Think more like 1,300 over the course of a few months of use. Why? Because naturally you’ll want to make a new table with each new sale made by a vendor!

If this is too technical for you, average reader, think of it this way: every customer who comes into a coffee shop to buy something gets their own, dedicated cash register, installed, at the time of purchase.

Yeah, that makes a hell of a lot of sense.

Multiple Choice Bookkeeping

Let’s say you’re a bookkeeper and you reconcile a checking account. You receive the statement for the month of April, then May, then June. You reconcile the accounts each month. Each month, there is an outstanding check for several thousand dollars, payable to the United States Treasury, dated April 15.

Do you:

  1. Immediately look at the register to find out if some error has occurred internally.
  2. Notify your boss that there may be a “slight problem.”
  3. Contact the IRS to confirm receipt of payment.
  4. Drool

Guess which happened here.

If 1 is Good, 10 is Gooder!

Last week I ordered some parts from one of our suppliers. The parts where 10 Hewlett-Packard desktop systems, 10 copies of Microsoft Office, and 1 nVidia display adapter.

The quote arrived that afternoon, for 10 HP PCs, 10 copies of MS Office, and 10 nVidia display adapters.

I’d say “honest mistake,” but this sales rep has done this sort of thing so many times in the past, that I had to request a new rep, because the last time he did this, I had requested an HP server with Windows Server 2008 Foundation.

He replied, saying this edition of Windows Server was not available with this server.

I replied saying I understood, and requested the same server with a copy of Windows Server 2008 Standard edition.

He quoted me the HP server with two copies of Windows Server 2008 Standard edition (one retail, one OEM, so he didn’t technically try to sell me two of the same thing). I told him we didn’t need two copies, so he should just send us the OEM edition.

A few days later the server arrived with its copy of Windows Server 2008 Standard edition… and Windows Server 2008 Foundation edition – you know, the one that isn’t available with this server.

Need More Information

I have worked with a lot of stupid people in sales. Here’s a sample of this week’s gems:

Me: “I need Brand X firewall with 1 year of Standard Support and 1 year of Web Filtering. This is for the office of
Doctor Client
123 Any Street
Anywhere US 12345
[email protected]

Sales Rep: “Here is your quote on one Brand X firewall with one year of Standard Support and one year of their Full Boat Package.”

(Note that the Full Boat Package includes the Web Filtering, Standard Support, and several other services, which we don’t need. So why would I order the Full Boat AND Standard Support?)

Me: We don’t need Full Boat Package, just Standard Support and Web Filtering.

Sales Rep: I need the full end user information.

Me: “I gave it all to you in my first email.”

Sales Rep: <drool>