Web Development: Database Design

If you ask any developer what is the most important stage of the application development process almost every time you will hear the same answer: Good and accurate requirements gathering and analysis of the customer's needs. This should be done before writing down a single line of code, before choosing the application, and even before anyone decides whether or not an application will actually be written.

The purpose of this exhaustive design is to come up with a meaningful data model, which will consist of an accurate graphical description of a client's information needs and business processes.

The consequences of bad data modeling:

  • You end up having records in the database for people whose name you don't know because you allowed the name column of mailing_list to be NULL.
  • You are database is getting filled with garbage because you did not constrain the phone numbers in any way. American users are adding and deleting digits by mistake. Overseas users are mistyping country codes.
  • You cannot send out any postal mailers to customers in your mailing list. Even though now this sounds like a great idea, no one thought of it when the application was being designed and now you do not have any way to store your customer's home addresses.
  • You will not be sending out any electronic mail to partners who work at companies with Lotus Notes configurations; Sometimes Lotus Notes results in email addresses that are longer than 100 characters.
  • You are not being able to serve rich people because the number_type column may be too constrained. Mr. Donald Trump, a customer of yours, wants to record some extra phone numbers for his "boat", "ranch", "island", and "private_jet". Unfortunately, the check (number_type in ('work','home','cell','beeper')) statement prevents Mr. Trump from doing this.
  • Changing a user's email address ends up requiring expensive development resources and precious time because someone decided to use email as a key in two tables and therefore will have to update both tables.
  • You want to allow users to update their own information online to save time and resources, however, you run the risk of malicious modifications because passwords or authentication fields were not included in the first release of your database.

Technical Architechture   |||  Interface Design / Usability

Copyright © 2001 Lantia. All rights reserved. All wrongs righted.
Back to the Home Page