|
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
|