Em geral, eu sempre uso Ints. Eu sei que, em teoria, essa não é a melhor prática, pois você deve usar o menor tipo de dados que será garantido para armazenar os dados.
Por exemplo, é melhor usar tinyintquando você sabe que os únicos dados que você armazenará são 1, 0 ou nulo (com uma chance muito pequena de expandi-lo para 2 ou 3 depois).
No entanto, a única razão que conheço para fazer isso é para fins de armazenamento - usando 1 byte em uma linha em vez de 4 bytes.
Quais são os impactos do uso tinyint(ou smallintmesmo bigint) intalém de economizar espaço no disco rígido?
I'd use an ENUM for such a thing.Não no SQL Server, você não teria, pois ele não possui enumerações de nenhum tipo.