One of the goals of our database design is to reduce the duplication of data and logically group different types of data into different tables. A logical separation would be for things like contacts. If we wanted to store all of our contacts, their phone numbers, addresses, and so on, then we could store it in a table, as shown in the following screenshot:
At first glance, this looks like a pretty elegant solution that would work fine. What if I want to store a contact without an address? Can I do this? Currently the table doesn't allow NULL values in the address fields, so I would have to change that. How about storing more than one address like a work and a home address? What about multiple phone numbers? The list goes on. What we really need here is a way to logically store grouped data in its own table, and relate it to other pieces of data. This is called a relationship, and it is probably the single most powerful concept in database design ever. By allowing a relational...