First Normal Form
For a database to be in First Normal Form (1NF), each column must contain only one value (this is sometimes described as being atomic). A table containing one field for an address would not be in 1NF because it stores the street address, city, state, ZIP code, and possibly countryfive different bits of informationin one field. Similarly, a field containing a person's first and last name would also fail this test (although some would suggest that a person's full name is sufficiently atomic as is).
I'll continue the normalization process by checking the existing structure for 1NF compliance.
To make a database 1NF compliant:
- Identify any field that contains multiple pieces
Looking back at Table 3.1, two columns are not 1NF compliant: Client Information and Expense Category & Description. The date fields contain a day, month, and a year, but subdividing past that level of specificity is really not warranted.
- Break up any fields found in step 1 into separate
fields (Figure 3.3).
To fix this problem, I'll separate Client Information into Client Name, Client Street Address, Client City, Client State, Client Zip, and Client Phone. Next, I'll turn Expense Category & Description into Expense Category and Expense Description.
Figure 3.3 After running through the 1NF rules, I've separated two fields into more logical subfields.