countries: ID (primary key), country_name, country_id
How many countries are there that have the same name???
None that I know of.
So country_name, or just country to reduce typing, is totally unique.
So why force the need for a join to get at the data??? AND why have an ID
and a country_id??? Both of which would also be unique I'd guess.
Really you are just creating a look-up table, something which is used to populate a drop-down list in a data entry form to get consistent spelling. (I'm assuming that your users will be entering data using a form on your site.) So your table called country then has only one attribute/field in it, called country.
There is no need what so ever to invent two other unique attributes to describe / identify something that is already unique by itself.
And of course the same applies if you use a look-up table of fruits you know about to populate a data entry form for the user to use. (although you could also let users suggest a new fruit to be added to the fruit table if they can't find their favourite one in the drop-down list, say for example a Durian, or Ugli, or Dragon Fruit, or Black Sapote, or Canistel, or Jaboticaba to name a few that aren't an Apple (watch out for rounded corners) or an Orange.)

Bookmarks