Is there a rule for choosing between the prepositions zu, in, bei, nach, an for a special place or does one have to memorize all of them?
An den See
First, one should note that bei is in general not used with verbs such like gehen, kommen or other words which would express an idea of movement. One would say:
Now for a few guidelines about the other prepositions:
Nach is used when you go to a city, a country, or any other named inhabited settlement of region.
Zu is when your destination is a building.
In is used when the idea to be in the place is important. A few examples, from the top of my head: "ins Meer", because you will swim in it, "ins Kino" because you want to watch a film in it, "ins Büro/ins Geschäft" because you go there to work. Note that the use of in and zu are very similar, and you nearly have to memorize which preposition to use in each case.
The use of an is quite difficult to define. I would say the most common use is when you want to go to some kind of border. 'See' and 'Küste' can be understood in this case as a border between land and water. This can be used naturally in the case you go there, but also when you are there.
The other case I found is a figurative one:
To sum it up, those are guidelines, and unfortunately, in most of the cases, knowing which preposition to use gets only easier with how familiar you are with the language.
rough short rule...
location can be entered/has an entrance, masc. and fem. countries:
location cannot be entered, usually persons ALSO brand names like MC Donalds:
countries (neuter) , cities etc:
There are many examples that don't fit here like Markt (auf, zu) or Meer (an, zu). But chosing by the above stated rules your outcome will be at least second best.
nach Hause, zu Hause, von Zuhause
I write the following without any formal knowledge of language, but German is my mother tongue.
I will try to give you some examples how they could be used.
Many terms like "in das" have abbreviations. These abbreviations are rather used than to spell it out. Especially in spoken language, but I would also say in written language.
in, im = in dem, ins = in das
Similar, you will say:
zu, zum = zu dem