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 tinyint
(or smallint
or even bigint
) over just int
, other than saving space on your hard drive?
I'd use an ENUM for such a thing.
Not in SQL Server, you wouldn't, since it doesn't have enumerations of any kind.