It made me dizzy too and it’s been a long day, but maybe my rambling will give you something to grab onto.
I see a minimum of three tables:
Company
ID, Name, address, phone, etc.
e.g.
1, IBM, etc. etc.
2, Apple, etc. etc.
City
ID, Name, Region, Country
e.g.
1, Paris, France, Europe
2, Chicago, USA, North America
City-Company
ID, CityID, CompanyID
e.g.
1, paris, IBM
2. bogota, Apple
3. New York, IBM
4. New York, Apple
You can get all the cities of a company from the city-company table, then get the region and/or country from the city table.
Going the other way, you can get all the cities in a region or country from the city table, then get all the companies in that region or country from the city-company table.
I think it would be more correct to also have a region table and a country table which each contained two fields: ID and Name and then use the two ID’s in the city table but I don’t think it’s necessary. If you did, though, all your tags would be ID numbers which would probably speed things up.
I hope this makes at least some sense.
Bob