I don't think that there is any song or poem to remember the case endings. However, I cannot be sure since to prove the absence of something is often much harder than to prove its existence. ;-)
In the end the only mnemonic aid is a table similar to the one that E.V. posted in her/his answer.
But: It isn't as hard as it looks at first glance. There are some regularities that can be used to reduce the chart to a minimum.
Differences between nominative and accusative
- Neuter endings are always the same in nominative and accusative. Indeed, this is an Indo-european universal property: In every IE language I know this is the case.
- Plural endings are the same in nominative and accusative.
- Feminine endings are the same in nominative and accusative.
So the only difference between nominative and accusative which one has to learn lies in the masculine endings.
Rare cases
- The third column in E.V.'s table belongs to the strong declension. In singular, the strong declension is rarely used.
- The genitive in general is seldomly used in spoken German
- The mix of both, i.e. the genitive of the strong declension is hardly ever used. In fact I cannot think of one naturally sounding example, only artificial newspaper headlines (Alten Mannes Frau entführt). My advise: Strike out the genitive box for strong declension.
Mixed declension is a mix of strong and weak declension
The first column in E.V.'s table is called weak declension, the last column is the strong declension. The middle column is the mixed declension. You only have to learn when the mixed declension is identical to the strong and when to the weak declension. This reduces a bit the amount one has to learn.
Consonants as case markers
Some case-gender combinations have a special consonant as a marker. For example, the marker for nominative, masculine is the letter r. You'll see that it is present once in all three declension classes:
- Der große Hund. (No need to add an r to große, since der already has it.)
- Ein großer Hund. (Ein doesn't have the r, so you must attach it to groß.)
- Großer Hund. (Again, the r must be there.)
Another example: The dative, neuter marker is the letter m:
- Dem großen Haus. (Not großem, because the article has the m.)
- Einem großen Haus. (Not großem, because the article has the m.)
- Großem Haus. (We need the m, so we attach it to groß.)
Of course you then have to know the articles to see when the consonant marker is already there. And even if you see "ah, the m is already present in einem, so the adjective won't need it" you cannot tell if it then has to be große or großen; but at least you then know that it cannot be einem großem Haus.