Here is an img of a structure that i think of..
It holds four tables now:
cities: with city name wich is the pk
streets: with an name and a incity, wich is a fk to cities
shops: with shopname, instreet to tell in wich street it is, and location to tell a location of the shop.
intersection: hoilds to streets and tell us on what location they cross.
Locations could be gps coords, dunno how else you can tell where a shop is located or where an intersection.
in streets, you could use incity and the street name as a pk, to have duplicate streetnames in different cities?
in shops, you could use shopname, streetname and cityname to identify a shop to be able to have more shops with the same name in a city, also include postion to be able to have more of the same shops in one street..
How did you have in mind to store the locations??
i dunno if this helped you, but as far as i understood your question, this could be a start..