Ainda considerando que o script SQL apresentado esteja sinta...

Próximas questões
Com base no mesmo assunto
Q168227 Banco de Dados
Ainda considerando que o script SQL apresentado esteja sintaticamente correto, julgue os itens seguintes.

I O comando da linha 22, se executado novamente após a execução do script, provocará erro de violação de restrição de integridade referencial.

II A consulta da linha 24 retornará um resultado contendo 4 linhas.

III A consulta das linhas 25 e 26 retornará um resultado contendo 2 linhas e 2 colunas, em que a coluna “nome” sempre apresenta o valor 2.

IV A consulta das linhas de 27 a 29 retornará um resultado vazio.

V O comando da linha 33, se removido da sua posição atual e inserido entre os comandos das linhas 13 e 14, provocaria uma diferença relevante no tempo de execução do script.

Estão certos apenas os itens
Alternativas

Comentários

Veja os comentários dos nossos alunos

Acredito que o gabarito esteja errado.

I O comando da linha 22, se executado novamente após a execução do script, provocará erro de violação de restrição de integridade referencial.
CERTO. 
A inseração novamente da linha 22 resultará numa violação de chave primária.

II A consulta da linha 24 retornará um resultado contendo 4 linhas.
CERTO

 

SELECT V.SECAO, C.NOME FROM VOTO AS V, candidato as c where c.numero = v.v_candidato

 

Secao  |      Nome
1           |      Maria
1           |      Joao
2           |      Joao
2           |      Maria


III A consulta das linhas 25 e 26 retornará um resultado contendo 2 linhas e 2 colunas, em que a coluna “nome” sempre apresenta o valor 2.
ERRADO. A coluna com valor 2 seria a segunda e não a NOME.

SELECT
 C.NOME, COUNT(*)
FROM
 VOTO AS V INNER JOIN
 CANDIDATO AS C ON C.NUMERO = V.V_CANDIDATO
GROUP BY
 C.NUMERO, C.NOME

NOME  |    COUNT(*)
Joao     |    2
Maria    |    2


IV A consulta das linhas de 27 a 29 retornará um resultado vazio.
ERRADO. Retornam 2 linhas.

SELECT
 C.NUMERO, CA.NOME, COUNT(*)
FROM
 VOTO AS V INNER JOIN
 CANDIDATO AS C ON C.NUMERO = V.V_CANDIDATO INNER JOIN
 CARGO AS CA ON V.V_CARGO = CA.PK_CARGO
GROUP BY
 CA.NOME, C.NUMERO


Numero   |         Nome              |     count(*)
20             |      Presidente         |     2
12             |      Governador        |     2


V O comando da linha 33, se removido da sua posição atual e inserido entre os comandos das linhas 13 e 14, provocaria uma diferença relevante no tempo de execução do script.
ERRADO. O número de registros inseridos na tabela é muito pequeno para que esse índice demore um tempo significativo na criação.

Acredito que a I) esteja realmente errada. Acredito que violação de chave primária não é a mesma coisa que violação de integridade referencial que há violação quando uma tupla referencia um valor que não existe na tabela referenciada.
Já a III) acredito que esteja realmente errada, pois a projeção é feita em cima de nome e contagem, então a coluna nome nunca poderá ter valor 2, e o comando group by numero, nome não afeta as colunas que aparecem no resultado final.
A I) está errada! A integridade referencial diz respeito às chaves estrangeiras. Ela seria violada se uma chave estrangeira fizesse referência a algum valor que não existisse na tabela referenciada. Como sequer há uma constraint no momento da inserção do dado, impossível haver problemas com integridade referencial nesse ponto. 

A II) está correta.

A III) está errada, pois a coluna 'nome' seria populada por 'Joao' e 'Maria'. A segunda coluna (que será nomeada count(*)) possuirá sempre valor 2.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo