I have a 14 month old staffy called Frank, aka the most excitable, playful and affectionate dog ever, who caused a lot of disruption to my two cats when I first brought him home. As the cats are older and so less tolerant of a young puppy running around the place I decided to let Frank know quick smart that he is not higher up the food chain than them. I was really persistent in telling him no every time he would try to chase a cat or even approach one.
The result of my labour is that he now never chases the cats or goes near them, he let's them approach him and they either avoid him or rub up against him depending on their mood. Some nights the dog and cats even sleep together on our bed. I found that I just had to let the dog know to leave the cats alone and he has actually responded really well.
Unfortunately for him we went away for Christmas, and he had to go and stay with our friends who have a bit of a crazy cat, he knew not to chase her but then didn't know how to respond when she would attack him unprovoked and bite his face, or when she decided it was time to chase him around their backyard. Oops, may have taken the cat above dog thing a little too far. (He wasn't hurt though and my friends assure me it was hilarious to watch!)