Databases Reference
In-Depth Information
Figure 4-3. The normalization process
However, there is an even more important reason to go through the process of designing
a normalized database. You can benefit from normalization because of the planning
process that normalizing a data design entails. By really thinking about the way the
intended applications use data, you get a much clearer picture of the needs the system
is designed to serve. This understanding leads to a much more focused database and
application.
Gaining a deep understanding of the way your data will be used also helps with your
other design tasks. For instance, once you've completed an optimal logical database
design, you can go back and consider what indexes you should add to improve the
anticipated performance of the database and whether you should designate any tables
as part of a cluster or hash cluster.
Since adding these types of performance-enhancing data structures doesn't affect the
logical representation of the database, you can always make these types of modifications
later when you see the way an application uses the database in test mode or in
production.
Should You Normalize Your Data?
Whenever possible, we recommend that you go through the process of designing a
normalized structure for your database.
Data normalization has been proven, both theoretically and in decades of practice, to
provide concrete benefits. In addition, the process of creating a normalized data design
is intimately intertwined with the process of understanding the data requirements for
your application system. You can improve even the simplest database by the discoveries
made during the process of normalization.
However, there may be times when you feel that the benefits of a fully normalized design
will counteract the performance penalty that a design imposes on your production sys‐
tems. For example, you may have one, two, or three contact names to be placed in their
own table, with a foreign key linking back to the main row for the organization. But
because you want to see all the contact names every time you request contact informa‐
tion, you might decide to save the overhead and added development effort of the join
 
Search WWH ::




Custom Search