Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2024

Banco de DadosSQL
Código
fg075127
Banca
FGV
Órgão
AL-PR
Ano
2024
Nível
Superior
Cargo
Analista Legislativo - Desenvolvedor de Sistemas
Seja o esquema de um banco de dados relacional seguinte, criado pelo usuário U1, que possui direito de criação de tabelas no ambiente:AUTOR ( id_autor <PK>, nome_autor ) RELATORIO ( id_rel <PK>, conteudo, id_autor <FK>, data_registro ) Restrições de integridade: Tabela AUTOR: id_autor é chave primária; nome_autor ≠ NULO. Tabela RELATORIO: id_rel é chave primária; conteudo ≠ NULO; data_registro ≠ NULO; id_autor é chave estrangeira e referencia LOCALIDADE(id_loc). Os usuários U2 e U3 receberam de U1 o direito de consulta e atualização nas tabelas AUTOR e RELATORIO. Dado que o usuário U2 desfruta da confiança de U1, ele recebeu o benefício de propagação dos direitos que recebeu. Já o usuário U4 recebeu de U1 apenas o direito de consulta na tabela RELATORIO. Mais adiante, o usuário U1 soube que o usuário U2 propagou o direito de atualização para o usuário U4 na tabela RELATORIO, sem que ele (usuário U1) tivesse conhecimento do fato. Tendo em vista a quebra de confiança, o usuário U1 decidiu revogar todos os direitos concedidos anteriormente a U2, deixando-o sem acesso ao seu banco de dados. Considerando os mecanismos de segurança discricionários de sistemas de bancos de dados relacionais, assinale a opção que indica o comando SQL a seguir reflete alguma das situações descritas no contexto apresentado.
  1. AGRANT select ON Relatorio TO U4 WITH GRANT OPTION
  2. BGRANT select, update ON Autor, Relatorio TO U2 WITH GRANT OPTION
  3. CGRANT select, update ON Autor, Relatorio TO U2, U3
  4. DREVOKE select, update ON Autor, Relatorio FROM U2 WITHOUT GRANT OPTION
  5. EREVOKE select, update ON Relatorio FROM U3
Revelar gabarito e comentário

GabaritoB — GRANT select, update ON Autor, Relatorio TO U2 WITH GRANT OPTION

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Controle de Acesso Discricionário (DAC) em SQL

Gabarito: letra B. O comando GRANT select, update ON Autor, Relatorio TO U2 WITH GRANT OPTION descreve exatamente a concessão feita por U1 a U2: direitos de consulta e atualização nas duas tabelas, com a possibilidade de propagação (WITH GRANT OPTION). Nenhuma das demais alternativas corresponde corretamente a uma situação do enunciado.

A banca testa o conhecimento sobre os comandos GRANT e REVOKE e a cláusula WITH GRANT OPTION. Vamos analisar cada alternativa.

Controle de acesso DAC (SQL)
  • 1GRANT
    • Privilégios
      • SELECT
      • UPDATE
      • INSERT
      • DELETE
    • Destinatário
      • Usuário
      • PUBLIC
    • Opção de propagação
      • WITH GRANT OPTION (pode repassar)
      • Sem a cláusula (não pode repassar)
  • 2REVOKE
    • Sintaxe correta
      • REVOKE ... FROM ... CASCADE
      • REVOKE ... FROM ... RESTRICT
    • WITHOUT GRANT OPTION (sintaxe inválida)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Concede SELECT com WITH GRANT OPTION a U4 na tabela Relatorio. Mas o enunciado diz que U4 recebeu apenas direito de consulta, sem propagação. Portanto, não reflete a situação.

Alternativa B — ✅ Correta ⟵ GABARITO

GRANT select, update ON Autor, Relatorio TO U2 WITH GRANT OPTION. Isso corresponde exatamente ao que U1 fez: U2 recebeu SELECT e UPDATE nas duas tabelas, e por ser de confiança, ganhou também o privilégio de propagar esses direitos (WITH GRANT OPTION). O comando está sintaticamente correto e reflete a situação descrita.

Alternativa C — ❌ Incorreta

Concede SELECT e UPDATE a U2 e U3, mas omite WITH GRANT OPTION para U2. No enunciado, U2 tem esse privilégio. Além disso, U3 recebeu os mesmos direitos, mas sem propagação – a alternativa não diferencia. Logo, não corresponde exatamente ao cenário.

Alternativa D — ❌ Incorreta

REVOKE select, update ON Autor, Relatorio FROM U2 WITHOUT GRANT OPTION. A sintaxe do comando REVOKE em SQL não utiliza a cláusula WITHOUT GRANT OPTION. O correto seria REVOKE ... FROM ... {CASCADE | RESTRICT}. Portanto, o comando é inválido e não reflete a revogação feita por U1 (que provavelmente usou CASCADE para propagar a revogação aos direitos concedidos por U2).

Alternativa E — ❌ Incorreta

REVOKE select, update ON Relatorio FROM U3. Revoga direitos de U3 sobre Relatorio. No entanto, U1 decidiu revogar todos os direitos de U2, não de U3. U3 permanece com acesso. Logo, o comando não condiz com a situação.

NÃO CAIA NESSA!

A banca explora a sintaxe incorreta do REVOKE (alternativa D) e a omissão do WITH GRANT OPTION (alternativa C). Cuidado: o REVOKE não aceita WITHOUT GRANT OPTION; revise a sintaxe padrão (CASCADE/RESTRICT).

Gabarito: letra B.

Link permanente: /questoes/fg075127