Questão absurda de ser cobrada em prova. A banca pensa que o pessoal de TI sabe de tudo !
Mas vamos que vamos:
a) E. Smallint tem o tamanho de armazenamento de 1 byte.
b) E. Bigint, o próprio nome sugere que guarda valores muito grande em termos de algarismo, e portanto não é escolha usual para valores inteiros.O range(alcançe) para se ter uma idéia é de: 9223372036854775808 to 9223372036854775807
c) E. Guarda um 'range' muito maior. -2147483648 to +2147483647
d) E. Número não tem limites no 'range'.
e) C.
Observações extraídas da fonte: http://www.postgresql.org/docs/8.4/static/datatype-numeric.html
A questão traz várias informações mais específicas, mas ela só quer saber se o usuário conhece os tipos de dados serial. Esses tipos (serial, smallserial e bigserial) são números inteiros do tipo autoincremento, e por isso são interessantes para se definir chaves sintéticas em tabelas. Gabarito letra E!
A título de informação, as respostas corretas das demais alternativas são:
a) smallint tem 2 bytes e permite armazenar valores de -32768 a 32767.
b) A escolha usual para inteiros é o integer (int), pois oferece o melhor equilíbrio entre capacidade de representação, espaço armazenado e performance. O bigint deve ser usado somente quando o integer não for suficiente, já que ocupa o dobro do espaço (8 bytes).
c) O integer tem sim armazenamento de 4 bytes, mas permite armazenar valores de -2147483648 a 2147483647. Os valores apresentados são os possíveis para um atributo smallint.
d) numeric realmente tem precisão variável, definida pelo usuário no momento da criação do atributo. Por exemplo, NUMERIC(10,2) cria um atributo numérico de precisão 10 e escala 2. A precisão é a quantidade total de dígitos que o número pode ter (à esquerda ou à direita da vírgula) e escala a quantidade de dígitos à direita da vírgula, ou seja, a parte fracionada do número.
No PostgreSQL, o tipo numeric pode ter até 131072 dígitos antes da vírgula e 16383 dígitos após a vírgula. Muito mais que 100, não é?