Here is the original table:
| country | hostingcity |hostingembasy | statesecretary |
| -------- | ----------- | ------------ | -------------- |
| U.K. | London | U.S.A | John |
| U.K. | London | China | Li |
| U.K. | London | Japan | Akira |
| Germany | Berlin | U.S.A | John |
| Germany | Berlin | Austria | Jurgen |
| N.Korea | null | null | Kim |
A lot of redundancy and given hostingembasy and statesecretary don't depend on primary key country we can create two tables:
First table:
| country | hostingcity |
| ------- | ----------- |
| U.K. | London |
| Germany | Berlin |
| N.Korea | null |
Second table:
| hostingembasy | statesecretary |
| ------------- | -------------- |
| U.S.A | John |
| China | Li |
| Japan | Akira |
| Austria | Jurgen |
| null | Kim |
And transaction table:
| country | hostingembasy |
| ------- | ------------- |
| U.K. | U.S.A |
| U.K. | China |
| U.K. | Japan |
| Germany | U.S.A |
| Germany | Austria |
| N.Korea | null |
Of course, this can not work, because the primary key in the second table can not be null. So how to deal with this kind of problem when we want to try and normalize tables? This is just an example, but I can think of many cases like this. I guess it must be quiet often to see a problem like this.