store country name or country id I am designing a database layout for a site. Agents registering on the site will have to enter their address including the country. Later I will build a dashboard where you would be able to search/sort by fields (including country field) and produce various reports (which includes country as well). 

Is it better to store country name directly in a table or have a separate table with countries and only store the id of a country?
It's better to have a separate table. That way your data will be normalized.

In your specific case you most likely want a list of countries the user can select from (eg. it's not a free form field). By having it be a separate table and referencing the country id you can setup a foreign key constraint to your countries table. This way your data will always be in sync as user's will not be able to enter a country that does not exist.