I'm looking at the relationship diagram and I'm trying to figure out how a single hotel can be in multiple countries?? Continuing that thought, that would put the same address, city, state, zip in multiple countries. This doesn't make sense. Therefore, get rid of tblHotelCountries and put CountryID in tblHotels.
A customer doesn't go to a country, he goes to a hotel so that relationship is not correct either.
Personally, I don't like prefixing column names with characters from the table name. You can make this work in small applications but it really falls apart in larger ones. Also, very few names are duplicated in more than one table. The address fields are frequently duplicated because not every application makes an address table which would eliminate this duplication. The prefixes just increase the number of characters you have to type before intellisense kicks in. Plus, in DS view, they make it harder to see the significant portion of the column name and finally, when you are working with a recordset, the column names are qualified by the recordset name. if you make a query that joins two tables with identical names, that is when I disambiguate them if I need to.