I am designing some tables for my user content website and I am lost on the FK concept for this situation. What is the different in these two cases:

Case A:  

**Friend table**  

user\_id (FK)  

friend\_id(FK) 

Case B:  

**Friend table**  

id (PK)  

user\_id (FK)  

friend\_id(FK) 

What I am trying to understand is one table has 2 FKs and 1 has 2 FKS + 1 PK. Most schema I have seen for friends have Case A that is only 2 FKs and no PK. But most other tables I see have case B of a PK. So what is the difference/advantage/disadvantage with both these tables an to use which one?

---

Second question I had is if I have a PK in table A and use it as a FK in table B, does it have to be NOT NULL in table B or can it be NULL even though in table A being a PK is has to be NOT NULL? An example of this is mapping City and State. State in state table is required as NOT NULL. In city table I am storing all values as NOT NULL DEFAULT 0 as not cities have states (world cities) but i dont want to store NULL in db so i am writing 0s for all null values just to keep the cells occupied.