Flat shading: uses just a single normal [to make just one lighting calc.] for an entire polygon
Gouraud shading: a normal at each vertex
Phong shading: a normal at every pixel
Note that all of the above are capable of rendering ambient, diffuse as well as specular calculations.. It's just that the quality of the results 'differ' :)
In addition to the above, there is also 'fence shading' where a normal is calculated at a polygon's boundary (fence) pixels.