Coverage Covergroup

Hi All,
I have a doubt regarding declaration of covergroup in a testbench.
How many covergroups can we define in a single testbench to test a single DUT? (I mean maximum no. of ?)
And How many coverpoints can we define per covergroup?
How to decide that the how many covergroups to be define for a particular testbench?
And How many coverpoints for the same?

What is the difference between Functional Coverage and Code Coverage?
Please explain with example.

In reply to Mittal Maru:

Read the Coverage Cookbook. It should answer all of your questions.