Again I don't pretend to be anything close to an expert here...but I can at least give it a try.
As far as I would personally do things, I'd probably put the regions into their own table in the database, and have that indexed by an auto_increment field. I assume you'll be using a star-ish rating system. So with that in mind, I'd keep that in the same table with the hotel data. So you would end up with something like this as far as a structure goes.
table: hotels
fields:
`hotel_id` smallint(5) unsigned not null auto_increment,
`name` varchar(200) not null,
`address` text not null,
`phone` int(15) not null, <- strip all odd chars, only numbers
`rating` tinyint(1) unsigned not null,
`desc` text not null,
`region_id` smallint(3) unsigned not null,
primary key `hotel_id` (`hotel_id`)
table: regions
fields:
`region_id` smallint(3) usnsigned not null auto_increment,
`name` varchar(100) not null,
primary key `region_id` (`region_id`)
But...remember to take this with a grain of salt. This is probably by no means the most efficient way, nor probably the best, but it's -a- way. Hope it helps.