Indexação funcional em bancos de dados
Gabarito: letra A. Um índice funcional (ou baseado em função) é criado a partir do resultado de uma função aplicada a uma coluna, conforme exemplificado no contexto com CREATE INDEX idx_maiusc ON Funcionario (UPPER(Ultimo_nome)). Essa é a essência da alternativa correta.
A questão testa o conhecimento sobre índices funcionais, uma feature de SGBDs como Oracle. O conteúdo de apoio mostra claramente a sintaxe e aplicação.
Alternativa | Descrição | Correta? | Justificativa |
|---|
A | Índice criado a partir do resultado de uma função aplicada à coluna | ✅ | Definição correta de índice funcional; exemplo: CREATE INDEX idx_maiusc ON Funcionario (UPPER(Ultimo_nome)) |
B | Impossível implementar índice funcional em coluna com NULL | ❌ | É possível; valores NULL geram chave NULL, que não é indexada (em B+-tree) |
C | Somente colunas numéricas podem ser indexadas | ❌ | Qualquer tipo é aceito, desde que a função retorne tipo adequado; exemplo usa string (UPPER) |
D | Índice funcional exige procedimento armazenado | ❌ | Criado com comando CREATE INDEX, sem necessidade de procedimento |
E | Índice funcional duplica dados da tabela original | ❌ | Armazena apenas os valores indexados (resultados da função), sem replicar a tabela |
Alternativa A — ✅ Correta ⟵ GABARITO
A definição está correta: o índice funcional usa o valor retornado por uma função aplicada a uma ou mais colunas como chave do índice. O exemplo do contexto com UPPER(Ultimo_nome) ilustra exatamente isso.
Alternativa B — ❌ Incorreta
Afirma ser impossível criar índice funcional em colunas com NULL. Na verdade, é possível; a função pode retornar NULL para esses valores, e o SGBD simplesmente não indexa entradas com chave NULL (no caso de B+-tree, como mencionado no contexto). Portanto, a afirmação é falsa.
Alternativa C — ❌ Incorreta
Diz que somente colunas numéricas podem ser indexadas. O próprio exemplo do contexto usa UPPER(Ultimo_nome), que é string, demonstrando que qualquer tipo de dado pode ser usado, desde que a função retorne um tipo adequado.
Alternativa D — ❌ Incorreta
Alega que índices funcionais exigem procedimento armazenado. Na verdade, são criados com o comando CREATE INDEX, sem necessidade de procedimento armazenado.
Alternativa E — ❌ Incorreta
Afirma que o índice funcional pode duplicar os dados da tabela original. Na verdade, o índice armazena apenas os valores indexados (os resultados da função), não duplica toda a tabela. É uma estrutura auxiliar que acelera consultas, sem replicar os dados.
Gabarito: letra A