Abaixo comentamos as questões de banco de dados da prova de Analista Judiciário Tecnologia da Informação do TRT-06.
Na instrução CREATE TABLE de um banco de dados Oracle, usada para criar uma tabela chamada Escritorio, para se indicar que um campo chamado idAdvogado é chave estrangeira e faz referência ao campo idAdvogado, que é chave primária da tabela Advogado, utiliza-se o segmento
(A) FK_Constraint (idAdvogado) REFERENCES Advogado (idAdvogado).
(B) Constraint fk_column FOREIGN KEY (idAdvogado) REFERENCES idAdvogado ON Advogado.
(C) Constraint fk_column FOREIGN KEY (idAdvogado) REFERENCES idAdvogado FROM Advogado.
(D) Constraint fk_column FOREIGN KEY (idAdvogado) REFERENCES Advogado (idAdvogado).
(E) STRANGER KEY (idAdvogado) REFERENCES idAdvogado IN Advogado.
Comentário: Essa é uma questão que se refere ao SGBD Oracle, mas poderia muito bem ser resolvida com os conhecimentos de SQL ANSI. Veja que para a criação de uma restrição de chave estrangeira usamos a palavra-chave CONSTRAINT, em seguida, definimos um nome para essa restrição, na questão a opção foi por fk_column.
Agora usamos a cláusula FOREIGN KEY para definir o tipo de restrição seguida pelo atributo da própria tabela. O próximo passo é saber a qual atributo e de qual tabela deste banco de dados o valor está associado. Neste caso, pela descrição do enunciado “apontamos” para tabela Advogado e o atributo idAdvogado. Assim, completamos o comando com “Advogado (idAdvogado)”. Desta forma, podemos marcar nossa resposta na alternativa D.
Gabarito: D
Em uma tabela chamada Funcionario de um banco de dados Oracle, em que estão cadastrados os dados abaixo, considere que todos os campos são do tipo varchar2 e que o campo idFuncionario é chave primária.
idFuncionario nomeFuncionario telefoneFuncionario
1 João da Silva (11)95678-xxxx
2 André Silva Machado (21)9876-xxxx
3 Paulo Ricardo Gonçalves (21)9854-xxxx
4 Manuela Benfica Teixeira (11)96534-xxxx
Para exibir os dados apenas dos funcionários cujos telefones iniciem com o DDD (21), utiliza-se a instrução
(A) SELECT * FROM Funcionario WHO telefoneFuncionario START BY “(21)”;
(B) SELECT * FROM Funcionario WHERE telefoneFuncionario LIKE “(21)%”;
(C) SELECT * FROM Funcionario LIKE telefoneFuncionario = “(21)%”;
(D) SELECT * FROM Funcionario WHERE telefoneFuncionario LIKE “(21)*”;
(E) SELECT * FROM funcionario WHERE telefoneFuncionario START BY “(21)”;
Comentário: Mais uma questão que cita o SGBD Oracle e que poderia ser resolvida facilmente com os conhecimentos de SQL. Considerando que a sintaxe básica do comando SELECT é completada pelas cláusulas FROM e WHERE, podemos nos livras das alternativas A e C que tentam reinventar a sintaxe do comando. Agora vamos considerar que telefoneFuncionario é um atributo do tipo string de caracteres. Vamos então lembrar que comparações podem ser feitas usando o LIKE e as caracteres coringas “%” e “_”. Neste caso, queremos todas as tuplas cujo atributo em questão comece com “(21)” e possua qualquer conjunto de caracteres na sequência. Para tal, usamos o “%”, assim ficamos com o comando:
SELECT * FROM Funcionario WHERE telefoneFuncionario LIKE “(21)%”;
Sendo assim, podemos marcar nossa resposta na alternativa B.
Gabarito: B
Considere hipoteticamente a existência de empresas que terceirizam o fornecimento de Recursos Humanos a outras empresas. Cada funcionário pode ser cadastrado em várias dessas empresas terceirizadas, nos mesmos cargos ou em cargos diferentes. Um modelo abstrato de dados dessa relação entre Empresa_Terceirizada_RH e Funcionario é mostrado abaixo.
Para um Analista especializado em Tecnologia da Informação implementar o modelo mostrado na figura, em um Sistema Gerenciado de Banco de Dados relacional, terá que
(A) criar uma tabela de ligação entre Empresa_Terceirizada_RH e Funcionario, fragmentando o relacionamento n:m em dois relacionamentos 1:1, já que não é possível implementar a relação n:m em bancos de dados relacionais.
(B) excluir o atributo cargoFuncionario, pois cada funcionário poderá ter um cargo diferente em cada empresa terceirizada onde se cadastrar.
(C) utilizar a linguagem SQL, adicionando o parâmetro CROSS REFERENCES à instrução CREATE TABLE na criação de ambas as tabelas para estabelecer a relação n:m entre elas.
(D) excluir o campo cargoFuncionario da tabela Funcionario e inserir na tabela Empresa_Terceirizada_RH, pois o cargo é cadastrado quando o funcionário faz a inscrição na empresa terceirizada.
(E) criar uma tabela de ligação entre Empresa_Terceirizada_RH e Funcionario, fragmentando o relacionamento n:m em dois relacionamentos 1:n e colocando o campo cargoFuncionario como atributo simples nessa tabela de ligação.
Comentário: A notação que descreve o relacionamento é conhecida como pé de galinha. Os três segmentos de reta desenhados próximos a cada entidade descrevem que a cardinalidade máxima é N. Já a barra vertical apresenta a cardinalidade mínima de 1 ou um relacionamento obrigatório. Para transformarmos o modelo conceitual em questão em um modelo relacional é necessário a criação de uma tabela de ligação. Essa tabela deverá ser formada pelas chaves primárias de cada uma das entidades como chave estrangeira. E possuir uma chave primária composta pelos dos atributos (idFuncionario e idEmpresaRH). Com essa tabela passamos a ter dois relacionamentos 1:N, entre a tabela de ligação e as entidades já representadas.
Agora precisamos tratar do fato, descrito no enunciado, que diz “Cada funcionário pode ser cadastrado em várias dessas empresas terceirizadas, nos mesmos cargos ou em cargos diferentes.” Veja que o atributo cargoFuncionario deve fazer parte da tabela de ligação. Assim, o funcionário pode ter cargos diferentes em empresas diferentes.
Gabarito: E.
Em um banco de dados PostgreSQL aberto e em condições ideais, um Analista especializado em Tecnologia da Informação executou as instruções abaixo em uma tabela chamada funcionario.
BEGIN;
UPDATE funcionario SET salario = salario – 1000.00
WHERE nome = ‘João’;
SAVEPOINT ps1;
UPDATE funcionario SET salario = salario + 1000.00
WHERE nome = ‘Paulo’;
I
UPDATE salario SET salario = salario + 1000.00
WHERE nome = ‘Marcos’;
COMMIT;
Na segunda instrução UPDATE, o Analista aumentou o salário do funcionário Paulo em 1000.00, quando deveria aumentar o salário do funcionário Marcos nesse valor. Para cancelar a operação realizada, a lacuna I deve ser preenchida pela instrução
(A) ROLLBACK -1;
(B) ROLLBACK TO ps1;
(C) CANCEL OPERATION;
(D) RESTORE TO ps1;
(E) CANCEL UPDATE;
Comentário: O comando ROLLBACK TO SAVEPOINT reverte todos os comandos que foram executados depois que o ponto de salvamento especificado no parâmetro foi estabelecido. O ponto de salvamento permanece válido e pode ser revertido novamente mais tarde, se necessário.
Devemos perceber ainda que o ROLLBACK TO SAVEPOINT destrói implicitamente todos os savepoints que foram estabelecidos após o savepoint nomeado.
Desta forma, podemos marcar nossa resposta na alternativa B.
Gabarito: B
Considere a existência de uma tabela chamada Funcionario que possui diversos campos, dentre eles o campo nome, que aceita cadeia de caracteres, e o campo comissao, que aceita números reais. No Oracle, para exibir o nome de todos os funcionários e suas respectivas comissões, de forma que se o funcionário não receber comissão apareça ‘Sem comissão’, utiliza-se a instrução SQL
(A) SELECT nome, ISNULL(comissao,’Sem comissão’) FROM Funcionario;
(B) SELECT nome, GET((comissao,null),’Sem comissão’) FROM Funcionario;
(C) SELECT nome, VRF((comissao,null),’Sem comissão’) FROM Funcionario;
(D) SELECT nome, NVL((comissao,null),’Sem comissão’) FROM Funcionario;
(E) SELECT nome, NVL(TO_CHAR(comissao),’Sem comissão’) FROM Funcionario;
Comentário: Vejamos a sintaxe do comando NVL:
O NVL permite substituir NULL (retornado como um espaço em branco) por uma string nos resultados de uma consulta. Se expr1 for nulo, o NVL retornará expr2. Se expr1 não for nulo, o NVL retornará expr1.
Os argumentos expr1 e expr2 podem ter qualquer tipo de dados. Se os tipos de dados forem diferentes, o Oracle Database implicitamente converterá um para o outro. Se eles não puderem ser convertidos implicitamente, o banco de dados retornará um erro. Vejam o exemplo do próprio site da oracle:
Pelo exemplo, observe que o tipo de dados de comission_pct, da mesma forma que o atributo comissao é convertido para um conjunto de caracteres para manter a integridade de domínio da coluna. Desta forma, podemos marcar a resposta na alternativa E.
Gabarito: E
No Oracle, para remover a restrição primary key da tabela tribunal e a restrição foreign key associada a essa chave primária, utiliza-se a instrução
(A) ALTER TABLE tribunal DROP primary key CASCADE;
(B) DROP primary key FROM tribunal CASCADE foreign key;
(C) DELETE primary key FROM tribunal ON CASCADE;
(D) ALTER TABLE tribunal DELETE primary key ON CASCADE;
(E) DELETE primary key, foreign key FROM tribunal;
Comentário: Essa é mais uma questão SQL Like, para remover uma restrição de uma tabela (veja aqui o comando sql ansi). Primeiramente precisamos usar o comando ALTER TABLE visto que estamos alterando a definição do objeto tabela. Em seguida vamos usar o DROP [constraint] e colocar o nome da restrição que queremos remover. Por fim, é possível usar os parâmetros RESTRICT ou CASCADE. Assim, podemos montar o seguinte comando:
ALTER TABLE tribunal DROP primary key CASCADE;
Este comando pode ser encontrado na alternativa A, que é a nossa resposta.
Gabarito: A
Essas foram as questões de Banco de Dados da prova. Acredito que neste conteúdo você deve ter se saído muito bem!
Qualquer dúvida estou às ordens,
Forte abraço e bons estudos,
Thiago Cavalcanti
Saiu o novo edital do concurso Caieiras Saúde, no estado de São Paulo, com oferta…
Está na praça o edital do concurso ANM (Agência Nacional de Mineração), com vaga aberta na…
Com o concurso da Companhia de Saneamento do Distrito Federal (Caesb) na praça, os candidatos…
A Prefeitura de Caieiras, município do estado de São Paulo, divulgou um novo edital de…
O concurso do Conselho de Arquitetura e Urbanismo do Acre (CAU AC) divulgou os resultados…
Foram oficialmente reabertas as inscrições para o concurso FASMO (Fundação de Atenção à Saúde de…