User-Schema Evaluation Checklist
Use this checklist as a guide through the steps of a user-schema evaluation.
February 20, 2002
I use the following checklist to guide me through each step of a user-schema evaluation. You can make this part of your own bag of tools if you like.
Set the context—I get a high-level understanding of what the database is about by reviewing the physical, external, and logical layers of the database environment.
Create a physical design—I create a physical model of the database, either by using the SQL Server diagram function or by reverse-engineering the database with a CASE tool.
List ambiguous tables—I make a list of tables that have an unclear purpose or ambiguous names. I clarify why they're in the database because some might be work or temporary tables that are left over from previous operations.
Find hidden arrays—I look for hidden arrays (lists of values contained in a table). A table that contains a list of values is prefirst normal form (1NF) or unnormalized. I make a note to decompose that table into third normal form (3NF).
List ambiguous field names—I look for fields that have ambiguous names. I find out what the fields are and what they mean. You can't properly determine a database's normalization level without looking at the data and understanding what it means.
Look for dirty data—I look for incomplete or incorrect data so that it doesn't distract me.
Locate redundancy across tables—I locate metadata redundancy across tables. I resolve such redundancies by removing all but one instance of duplicate attributes or by renaming attributes to make them more meaningful and accurate.
Find transitive dependencies within tables—I analyze each table for a transitive dependency (the existence of second normal form—2NF—data). If one or more transitive dependencies exist in a table, I make a note to decompose that table into 3NF.
Identify less-than-full functional dependency—If a table has less-than-full functional dependency (existence of 1NF data), I make a note to decompose that table into 3NF.
Propose database changes—I propose the list of changes to the database and get the client's approval to make the changes. Then, I check with the DBA to arrange a time to make the changes.
Design views that support existing applications—I list the views, either materialized or regular, that I need to build to support applications that were written against under- or overnormalized data.
Implement the changes—I implement the architectural changes to the database and create the compensating views.
Monitor performance—After I've completed the restructuring, I work with the DBA to measure performance. If a problem still exists, I suggest that the client move to more powerful hardware and a greater-bandwidth network.
About the Author
You May Also Like