← Questões de Banco de Dados

Banco de Dados · FGV · 2022

Questão comentada de Banco de Dados

Quando o valor NULL é considerado como unknow (desconhecido) pelo gerenciador de bancos de dados relacionais, as expressões lógicas do SQL podem resultar nos valores True, False e Unkown. Nesse contexto, analise as expressões abaixo, onde esses três valores lógicos são representados por “T”, “F” e “?” respectivamente. F or ? T or ? ? or ? ? and ? T and ? Assinale, na ordem dada, os valores resultantes em cada expressão.

Gabarito: B

No SQL, o NULL não significa zero nem vazio: ele representa um valor desconhecido, e isso muda a lógica da comparação. Quando o SGBD trata NULL como Unknown, surge a lógica ternária, com três resultados possíveis: True, False e Unknown. É por isso que expressões com NULL não se comportam como na lógica clássica, e você precisa pensar com calma antes de marcar qualquer coisa no impulso. Na operação OR, basta um lado ser True para o resultado ser True. Se nenhum lado for True e aparecer Unknown, o resultado tende a ficar Unknown. Assim, F OR ? vira ?, T OR ? vira T, e ? OR ? também vira ?. Na operação AND, basta um lado ser False para o resultado ser False. Mas se não houver False e entrar Unknown, o resultado fica Unknown. Por isso, ? AND ? resulta em ?, e T AND ? também resulta em ?. Logo, a sequência correta é: ?, T, ?, ?, ?. É exatamente o que aparece na alternativa B. Esse comportamento é o clássico da lógica trivalorada do SQL, cobrada com frequência em prova porque muita gente tenta aplicar a lógica binária tradicional e tropeça no NULL.

Continue treinando

Questões relacionadas