Hi,
Basically loops can be resolved in multiple ways:
1. By creating Alias.
2. By creating contexts.
But all these have to be used in different cases, and you will be the best person to judge it.
1. You will create alias and resolve loop, when your scenario has role playing dimensions. for eg. Customer table has country filed, which is your country of residence and you have joined this with country dimension to get the details which in turn is also working as country of sales or something else.
So your country table here is playing a dual role and hence is a perfect scenario and candidate for an alias, so that it should be referred separately.
2. Contexts : As the name suggests,you are differentiating your subject areas, for eg. sales data or sales fact, should be different from purchase facts or receipts facts, so you will create context for each subject area, normally for each fact.
These are two basic ways of doing it.
Regards,
Gaurav