Question: Full disclosure...Trying feverishly here to learn more about databases so I am putting in the time and also tried to get this answer from the source to no avail.

Barry Williams from databaseanswers has this schema posted. 

[Clients and Fees Schema](http://www.databaseanswers.org/data_models/clients_and_fees/index.htm)

![alt text](https://i.stack.imgur.com/Kf1ae.gif)

I am trying to understand the split of address tables in this schema. Its clear to me that the Addresses table contains the details of a given address. The Client\_Addresses and Staff\_Addresses tables are what gets me. 

1) I understand the use of Primary Foreign Keys as shown but I was under the assumption that when these are used you don't have a resident Primary Key in that same table (date\_address\_from in this case). Can someone explain the reasoning for both and put it into words how this actually works out?

2) Why would you use date\_address\_from as the primary key instead of something like client\_address\_id as the PK? What if someone enters two addresses in one day would there be conflicts in his design? If so or if not, what?

3) Along the lines of normalization...Since both date\_address\_from and date\_address\_to are the same in the Client\_Addresses and Staff\_Addresses table should those fields just not be included in the main Address table?

Answer: 
> 
> 3) Along the lines of
>  normalization...Since both
>  date\_address\_from and date\_address\_to
>  are the same in the Client\_Addresses
>  and Staff\_Addresses table should those
>  fields just not be included in the
>  main Address table?
> 
> 
> 

No. But you did find a problem.

The designer has decided that clients and staff are two utterly different things. By "utterly different", I mean they have no attributes in common. 

That's not true, is it? Both clients and staff have addresses. I'm sure most of them have telephones, too. 

Imagine that someone on staff is also a client. How many places is that person's name stored? That person's address? Can you hear Mr. Rogers in the background saying, "Can you spell 'update anomaly'? . . . I knew you could."

The problem is that the designer was thinking of clients and staff as different kinds of people. They're not. "Client" describes a business relationship between a service provider (usually, that is, not a retailer) and a customer, which might be either a person or a company. "Staff" describes a employment relationship between a company and a person. Not different kinds of people--different kinds of relationships.

Can you see how to fix that?
Viewing the data model, i think:

1) PF means that the field is both part of the primary key of the table and foreign key with other table. 

2) In the same way, the primary key of Staff\_Addresses is {staff\_id,address\_id,date\_adderess\_from} not just date\_adderess\_from

3) The same that 2)