In general, I always use Ints. I know that in theory this is not the best practice, though, since you should use the smallest data type that will be guaranteed to store the data.
For example, it's better to use
tinyint when you know that the only data you will store is a 1, 0 or null (with a very small chance of expanding that to a 2 or 3 later).
However, the only reason I know for doing this is for storage purposes--using 1 byte on a row instead of 4 bytes.
What are the impacts of using
smallint or even
bigint) over just
int, other than saving space on your hard drive?