bancos de dados -...

122
Questões comentadas Bancos de dados para concursos

Upload: nguyennhu

Post on 10-Feb-2018

223 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Questões comentadas

Bancos de dadospara concursos

Page 2: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Prefácio

Banco de Dados é um dos conceitos mais importantes de Ciência da Computação. Ele agrupainformações utilizadas para um mesmo �m, ou melhor, podemos entender um banco de dadoscomo um conjunto de informações estruturadas e que podem ser organizadas para facilitar ope-rações como inserção, busca e remoção. Em geral, um software é responsável em gerenciar aestrutura dessas informações e as operações que nelas possam ser realizadas.

Devido a sua grande importância, torna-se, sem dúvida, um dos assuntos mais cobrados nosconcursos de TI. Ligado na importância do assunto, o Grupo Handbook de TI preparou estevolume, que traz uma série de questões comentadas sobre Banco de Dados para você se prepararmuito bem nessa área.

Bons estudos,

Grupo Handbook de TI

Página 1 de 120www.handbookdeti.com.br

Page 3: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Direitos Autorais

Este material é registrado no Escritório de Direitos Autorais (EDA) da Fundação BibliotecaNacional. Todos os direitos autorais referentes a esta obra são reservados exclusivamente aosseus autores.

Os autores deste material não proíbem seu compartilhamento entre amigos e colegas próxi-mos de estudo. Contudo, a reprodução, parcial ou integral, e a disseminação deste material deforma indiscriminada através de qualquer meio, inclusive na Internet, extrapolam os limites dacolaboração. Essa prática desincentiva o lançamento de novos produtos e enfraquece a comuni-dade concurseira Handbook de TI.

A série Handbook de Questões de TI Comentadas para Concursos � Além do Gabarito é umaprodução independente e contamos com você para mantê-la sempre viva.

Grupo Handbook de TI

Página 2 de 120www.handbookdeti.com.br

Page 4: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Canais de Comunicação

O Grupo Handbook de TI disponibiliza diversos canais de comunicação para os concurseirosde TI.

Loja Handbook de TI

Acesse a nossa loja virtual em http://www.handbookdeti.com.br

Serviço de Atendimento

Comunique-se diretamente conosco através do e-mail [email protected]

Twitter do Handbook de TI

Acompanhe de perto promoções e lançamentos de produtos pelo nosso Twitter http://twitter.com/handbookdeti

Página 3 de 120www.handbookdeti.com.br

Page 5: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

1. Assuntos relacionados: Banco de Dados, SGBD, Dicionário de Dados (DD),Banca: CESGRANRIOInstituição: BNDESCargo: Analista de SuporteAno: 2008Questão: 34

O catálogo (ou dicionário de dados) de um Sistema Gerenciador de Bancos de Dados Rela-cional

(a). visa a propiciar o acesso rápido a dados com um determinado valor.

(b). é um item opcional do banco de dados, que pode ser removido caso o usuáriodeseje.

(c). é raramente utilizado, sendo sua organização pouco in�uente no desempenho dosistema.

(d). contém informações descritivas sobre os diversos objetos do sistema.

(e). tem seus dados organizados segundo um esquema hierárquico, para maior e�ciênciano acesso.

Solução:

O dicionário de dados (DD) é a parte do sistema gerenciador de bancos de dados (SGBD)responsável por armazenar informações sobre a estrutura geral do banco de dados, incluindocada um dos seus elementos de dados. Tais informações são conhecidas como metadados.Diz-se que o DD é um banco de dados sobre o banco de dados.

No contexto dos bancos de dados relacionais, exemplos de elementos de dados são tabe-las, colunas, relacionamentos, índices, entre outros. No DD são armazenados os nomes dastabelas, os relacionamentos entre elas, bem como os nomes das colunas, os tipos e os domí-nios de dados.

Além de informações estruturais, o DD também armazena informações de segurança, queindicam as permissões de acesso aos elementos de dados, assim como informações físicas,indicando onde e como os dados são armazenados. Elementos como funções e stored proce-dures também são armazenados nos dicionários de dados do SGBD.

As implementações de dicionário de dados podem variar de acordo com a tecnologia doSGBD. No caso dos bancos de dados relacionais, os dicionários de dados, geralmente, sãoimplementados como tabelas. A forma como essas tabelas são indexadas e organizadas emdisco é fator fundamental para o desempenho do banco de dados, pois elas são acessadas namaior parte das operações realizadas pelos SGBD.

Página 4 de 120www.handbookdeti.com.br

Page 6: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

2. Assuntos relacionados: Banco de Dados, Oracle,Banca: FCCInstituição: TRT 15a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2009Questão: 30

Cada database Oracle tem

I um ou mais data�les.

II um control �le.

III um conjunto de dois ou mais redo log �les.

Está correto o que consta em

(a). I, II e III.

(b). I, somente.

(c). II, somente.

(d). I e II, somente.

(e). I e III, somente.

Solução:

A resposta da questão é a alternativa A. Primordialmente, um banco de banco Oracle éformado por três tipos de arquivos que são: data�les, redo log �les e control �les.

Um banco de dados Oracle contém uma ou mais unidades lógicas de armazenamento cha-madas tablespaces, que coletivamente armazenam os dados do banco de dados. Cada ta-blespace, por sua vez, consiste de um ou mais arquivos chamados data�les, que são arquivosfísicos estruturados de acordo com o sistema operacional em que o Oracle está rodando.

Os Redo Log Files armazenam os logs do sistema. Esse arquivo consiste de um bu�ercircular assim como o redo log bu�er, que é mantido em memória pelo Oracle. A função pri-mária dos redo log �les é armazenar toda e qualquer mudança realizada nos dados do bancode dados. Se houver alguma falha, como o corrompimento de um data�le, as informaçõespodem ser recuperadas utilizando o redo log �les e os data�les de backup.

O Oracle grava os redo log �les de forma circular. Isto signi�ca que, quando o arquivoredo log �le atual �ca cheio o banco de dados passa para o próximo arquivo redo. Quandoo último arquivo do redo log �le for preenchido o banco de dados volta para o primeiro,apagando informações já existentes e continuando o ciclo. Para que não se percam infor-mações quando o ciclo for reiniciado, os arquivos de redo são arquivados periodicamente. Aquantidade de arquivos de redo utilizados e a frequência do processo de arquivamento devemser de�nidas de acordo com as características do banco de dados, de modo que dados nãosejam perdidos e nem seja prejudicado o desempenho do sistema.

Já os Control Files servem para descrever a estrutura e o status do banco de dados. São elesque contém a identi�cação dos arquivos de log e de dados, o nome do banco e informações desincronismo entre os arquivos que o compõe. Como regra geral, cada banco de dados Oraclepossui um único control �le associado. No entanto, o Oracle possui um recurso chamado�multiplexed control �les�, que permite o armazenamento de múltiplas cópias do control �le

Página 5 de 120www.handbookdeti.com.br

Page 7: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

em vários discos diferentes, com o objetivo proporcionar redundância.

Embora na arquitetura do Oracle o banco de dados seja composto somente por esses trêsarquivos, uma série de outros arquivos são importantes para colocar uma instância no ar.Exemplos desses arquivos são:

• Parameter File: Arquivo texto que contém todos os parâmetros necessários para colocaruma instância do Oracle no ar, por exemplo, quantidade de memória alocada para oSGA, nome e localização de arquivos de controle, tamanho de bu�ers e de blocos etc;

• Alert File: Arquivo de log onde são registrados os erros ocorridos (processo, blocoscorrompidos, deadlock etc.), tarefas administrativas além dos valores de parâmetros deinicialização no momento em que a instância é colocada no ar;

• Trace File: Arquivo de log onde são armazenadas informações detalhadas sobre osproblemas ocorridos. A utilização desse arquivo é opcional.

Página 6 de 120www.handbookdeti.com.br

Page 8: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

3. Assuntos relacionados: Banco de Dados, Oracle,Banca: FCCInstituição: TRT 15a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2009Questão: 31

São apenas tipos de objetos de um schema Oracle:

(a). table, index, cluster e pro�le.

(b). table, index, cluster e view.

(c). table, tablespace, index e cluster.

(d). tablespace, index, cluster e directory.

(e). tablespace, index, cluster e view.

Solução:

Conceitualmente, um schema é uma estrutura lógica, criada pelos usuários, utilizada paraconter ou referenciar os seus dados. É importante lembrar que, boa parte, mas nem todosSGBDs, utilizam o conceito de schema.

No caso do Oracle, exemplos de objetos que são armazenados em um schema são tabe-las, visões, índices e clusters. No Oracle, não há relação entre os tablespaces e o schema,de modo que objetos do mesmo schema podem estar em diferentes tablespaces, e um únicotablespace podem conter objetos de diferentes schemas. Portanto, a resposta da questão é aalternativa B. Agora, vamos aproveitar a questão para rever algumas de�nições importantessobre os bancos de dados Oracle.

• Table

Uma table (tabela) é uma unidade básica de armazenamento do banco de dados Ora-cle, e são elas que contém possuem todos os dados acessíveis pelos usuário. Cadatabela é formada por um conjunto de colunas, cada um uma delas com um nome (ID,FULLNAME, BIRTHDAY etc) e um tipo de dado (NUMBER, VARCHAR2, DATEetc) associados. Uma linha (row) da tabela é formada pelas informações das colunas ecorresponde a um registro único do banco de dados. Os usuários podem ainda especi�-car regras, chamadas restrições de integridade, para cada uma das colunas das tabelas.Um exemplo típico de regra é restrição de integridade NOT NULL, que força a colunaa conter um valor em todas as linhas.

• Views

As views (visões) são apresentações customizadas de dados de uma ou mais tabelas ououtras views. Um view pode ser considerada uma query de armazenamento. De modogeral, as views não contém dados, sendo os dados por ela apresentados derivados daschamadas �base tables� (tabelas base). Existem tipos especiais de views, as materia-lized views, que contém dados de fato. Esse tipo de view geralmente é utilizada paraaumentar o desempenho de determinadas consultas.

As views são utilizadas geralmente para responder a consultas, e também para propor-cionar um nível adicional de segurança, restringido acesso a determinados conjunto de

Página 7 de 120www.handbookdeti.com.br

Page 9: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

linhas e colunas de uma tabela. No entanto, as views também podem ser de�nidas paraaceitar inserções, atualizações e exclusões. Nesses casos, todas as operações efetuadasna view afetam também as base tables.

• Index

Os indexes (índices) são estruturas de dados utilizadas para melhorar o desempenhodas operações sobre uma tabela do banco de dados. Os índices podem ser criados combase em uma ou mais colunas da tabela, sendo essa de�nição baseada nas consultasque o SGBD terá que responder com e�ciência.

No Oracle, os índices mais populares são baseados em árvores B (b-trees) e nos mapasde bits (bitmaps), sendo que a melhor escolha depende do tipo de dado a ser indexadoe, primordialmente, do per�l de operações da aplicação. Um ótimo teste compara-tivo entre os índices b-tree e bitmap do Oracle pode ser vista no estudo disponível emhttp://www.oracle.com/technology/pub/articles/sharma_indexes.html.

Embora sirvam para aumentar o desempenho das operações sobre as tabelas, o que épositivo, os índices também possuem aspectos negativos, como o consumo de espaço ea diminuição do desempenho das operações de inserção dados, já que, além das tabe-las, os índices precisam ser atualizados. Portanto, os índices não devem ser utilizadosindiscriminadamente, mas apenas nos casos em que os seus benefícios superem seusaspectos negativos.

• Cluster

Os clusters (agrupamentos) são grupos de duas ou mais tabelas que são �sicamentearmazenados próximas umas das outras, de modo a proporcionar maior desempenhodas operações que referenciem ambas as tabelas. Assim como os índices, os clustersnão afetam a lógica da aplicação. O fato de uma tabela pertencer ou não a um clus-ter é transparente para o usuário, sendo relevante apenas para �ns de desempenho daaplicação.

Por �m, vamos falar um pouco sobre o conceito de Pro�les (per�s) do Oracle, que foi men-cionado na alternativa A da questão.

O pro�le é um recurso do Oracle que permite de�nir limites de utilização de recursos dosistema e parâmetros de segurança para os usuários do SGBD. Quando um usuário é criado,por padrão ele recebe o pro�le Default, que dá acesso ilimitado aos recursos do sistema.Para limitar o acesso do usuário aos recursos, é necessário criar um pro�le e associá-lo aousuário. Alguns exemplos de parâmetros (cujos nomes são auto-explicativos) que podem sercontrolados através de pro�le são mostrados a seguir.

Página 8 de 120www.handbookdeti.com.br

Page 10: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Parâmetros de Recursos

[SESSIONS_PER_USER n|UNLIMITED|DEFAULT]

[CPU_PER_SESSION n|UNLIMITED|DEFAULT]

[CPU_PER_CALL n|UNLIMITED|DEFAULT]

[CONNECT_TIME n|UNLIMITED|DEFAULT]

[IDLE_TIME n|UNLIMITED|DEFAULT]

[LOGICAL_READS_PER_SESSION n|UNLIMITED|DEFAULT]

[LOGICAL_READS_PER_CALL n|UNLIMITED|DEFAULT]

[COMPOSITE_LIMIT n|UNLIMITED|DEFAULT]

[PRIVATE_SGA n [K|M]|UNLIMITED|DEFAULT]

Parâmetros de Password

[FAILED_LOGIN_ATTEMPTS expr|UNLIMITED|DEFAULT]

[PASSWORD_LIFE_TIME expr|UNLIMITED|DEFAULT]

[PASSWORD_REUSE_TIME expr|UNLIMITED|DEFAULT]

[PASSWORD_REUSE_MAX expr|UNLIMITED|DEFAULT]

[PASSWORD_LOCK_TIME expr|UNLIMITED|DEFAULT]

[PASSWORD_GRACE_TIME expr|UNLIMITED|DEFAULT]

[PASSWORD_VERIFY_FUNCTION function_name|NULL|DEFAULT]

Página 9 de 120www.handbookdeti.com.br

Page 11: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

4. Assuntos relacionados: Banco de Dados, Oracle,Banca: FCCInstituição: TRT 15a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2009Questão: 32

NÃO é um processo do tipo background contido em uma instância Oracle:

(a). system monitor process.

(b). checkpoint process.

(c). archiver process.

(d). server process.

(e). recoverer process

Solução:

O Oracle possui três tipos básicos de processo que são: processos User, processos server eprocessos em background. Com isso, a resposta da questão é alternativa D, �server process�.Agora, vamos conhecer um pouco mais dos processos do Oracle.

Os processos server recebem as requisições dos processos user, realizam o parse das ins-truções SQL, veri�cam as permissões de acesso do usuário, traz os dados do disco para oDBBC, caso necessário, e retorna os dados para o usuário. Um processo server pode ser de-dicado para um processo user (dedicated server process) ou compartilhado entre múltiplosprocessos user (shared server process). Os processos server compartilhados só são possíveisem sistemas multithreaded.

As funções desempenhadas pelos processos user são se conectar com os processos server,enviar instruções SQL e receber os resultados. Caso o servidor suporte processos servercompartilhados, diversos processos server podem ser atendidos por um mesmo processo ser-ver.

Já os os processo em background não realizam nenhuma comunicação com os processosuser. Os processos em backgound são responsáveis pelas tarefas de apoio para garantir ofuncionamento do sistema de gerenciamento de banco de dados como um todo. Um sistemaOracle tem inúmeros processos em background, porém apenas 4 deles são obrigatórios. Sãoeles:

• Process Monitor (PMON): Realiza a recuperação quando algum processo falha, alémde liberar o cache, locks e demais recursos que o processo estava utilizando;

• System Monitor (SMON): Realiza o processo de recuperação da instância durante oprocesso de inicialização, limpa segmentos temporários que não estão mais em uso, re-cupera transações terminadas de forma anormal e realiza desfragmentação nos arquivosde dados para facilitar a alocação;

• Database Writer (DBWR): A função principal do DBWR é escreve os blocos de dadosmodi�cados (dirty) do DBBC para o disco. Isso é feito nas seguintes situações: (i)quando a lista de blocos modi�cados atinge um tamanho con�gurado; (ii) quando oprocesso percorre um quantidade con�gurada de blocos e não encontra nenhum blocolivre; (iii) quando ocorre um timeout; (iv) quando ocorre um checkpoint ou (v) quando

Página 10 de 120www.handbookdeti.com.br

Page 12: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

o DBWR recebe um sinal do processo LGWR. Dessa forma, o processo DBWR além degarantir que as alterações feitas em bu�er serão persistidas, também gerencia o espaçoem bu�er para melhorar o desempenho do banco;

• Log Writer (LGWR): é o responsável por copiar as informações do redo log bu�er parao o redo log �le (arquivo de log com a mesma estrutura do redo log bu�er). O LGWRtambém é responsável por atualizar os headers dos arquivos de dados quando ocorreum checkpoint. O LGWR é disparado nas seguintes situações: (i) quando ocorre umcommit; (ii) quando ocorre um checkpoint; (iii) quando ocorre um timeout ou (iv)quando o redo log bu�er atinge um terço de sua capacidade.

Além desses quatro, o Oracle possui uma série de outros processos em background que sãode instalação e uso opcionais. Os mais importantes são os seguintes:

• CKPT: Atualiza os headers dos arquivos de dados quando ocorre um checkpoint. Autilização desse processo pode ajudar a melhorar o desempenho do sistema permitindoque o processo LGWR se concentre apenas na cópia do redo log bu�er para o disco;

• RECO: Responsável pela recuperação de falhas envolvendo transações distribuídas.Esse processo é necessário quando o Oracle está rodando de forma distribuída;

• ARCH: Responsável por copiar o redo log �le (que é um bu�er circular) para umdispositivos de armazenamento o�ine para que os logs não sejam perdidos;

• Pnnn: Processo responsável pela execução de consultas paralelas;

• SNPn: Controla a replicação de objetos dos banco de dados em outro site. Essas cópiassão chamadas snapshots. Esse processo pode ser escalonado para executar periodica-mente;

• LCKn: Realiza o controle de locks entre múltiplas instâncias;

• Dnnn: Esse processo funciona como um dispatcher quando o sistema está utilizandoprocessos server compartilhados. é necessário um dispatcher para cada protocolo decomunicação utilizado.

Página 11 de 120www.handbookdeti.com.br

Page 13: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

5. Assuntos relacionados: Oracle, SQL,Banca: FCCInstituição: TRT 16a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2009Questão: 25

Os programas PL/SQL são constituídos por blocos que executam operações lógicas e cadabloco tem três partes que de�nem as:

I. declarações de variáveis e itens.

II. instruções procedurais e SQL.

III. instruções de tratamento de erros.

No bloco é obrigatória a presença da seção que se a�rma em

(a). I e II, apenas.

(b). II e III, apenas.

(c). I, II e III

(d). I, apenas.

(e). II, apenas.

Solução:

A linguagem PL/SQL é uma linguagem procedural da Oracle. Ela é uma extensão da lin-guagem SQL padrão. Ela serve para criar programas complexos e poderosos, não só para obanco de dados, mas também em diversas ferramentas Oracle.

Os blocos de PL/SQL são processados por um uma PL/SQL Engine, que �ltra os comandosSQL e os manda individualmente para o SQL Statement Executor no Oracle Server.

A unidade básica de um programa PL/SQL é um bloco, que possui a seguinte estrutura:

DECLARE

Seção para declaração de variáveis, tipos e subprogramas locais.

BEGIN

Seção executável. Nesta seção, �cam as instruções procedurais e SQL. Esta é a única seçãodo bloco que é indispensável e obrigatória.

EXCEPTION

Seção onde �cam as instruções de tratamento de erro.

Por de�nição, apenas a seção executável é requerida. As outras seções são opcionais. Logo,somente a a�rmativa II está correta e alternativa a ser marcada é a letra E.

Aprofundando mais na linguagem, podemos dizer que as únicas instruções SQL que sãopermitidas em um programa PL/SQL são SELECT, INSERT, UPDATE, DELETE e várias

Página 12 de 120www.handbookdeti.com.br

Page 14: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

outras instruções de manipulação de dados e de controle de transação. Além disso, PL/SQLnão é caso sensitivo, ou seja, não diferencia maiúsculas de minúsculas.

Instruções de de�nição de dados como CREATE, DROP ou ALTER não são permitidas. Aseção executável, citada anteriormente, também contém construções tais como atribuições,desvios, loops, chamadas a procedimentos e triggers. A capacidade de usar laços(loops) éuma das principais diferenças entre SQL e PL/SQL.

A instrução SELECT no PL/SQL funciona apenas se o resultado da consulta contém umaúnica tupla. Se a consulta retorna mais do que uma tupla, será necessário usar um cursor.Um cursor é uma variável que itera sobre as tuplas de alguma relação. Essa relação podeser uma tabela armazenada ou pode ser a resposta para alguma consulta.

En�m, a linguagem PL/SQL possui mais recursos que o padrão e visa fornecer mais �exibi-lidade e aproveita o poder das linguagens procedurais para o desenvolvimento de programascomplexos que envolvam acesso ao banco de dados Oracle.

Página 13 de 120www.handbookdeti.com.br

Page 15: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

6. Assuntos relacionados: Banco de Dados, Commit, Savepoint, Rolling Back, RollingForward,Banca: FCCInstituição: TRT 18a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 46

Antes do Oracle terminar uma transação deve acontecer explicitamente uma operação de

(a). commit ou savepoint, apenas.

(b). commit ou rolling back, apenas.

(c). commit ou rolling forward, apenas.

(d). rolling back ou rolling forward, apenas.

(e). commit, rolling back, rolling forward ou savepoint.

Solução:

Vamos, primeiramente, apresentar o que cada operação signi�ca:

• commit: operação que efetiva, no banco de dados, as alterações (insert, delete eupdate) realizadas em uma transação. Ou seja, as alterações de uma transação somentesão enxergadas por outras transações de outras sessões após um commit. Veja abaixoum exemplo de utilização deste operador:

SQL> insert into alunos (matricula, nome) values (1, `Ricardo Vargas`);

1 row created.

SQL> commit;

Commit complete.

• savepoint: marca um ponto (estado) na transação para onde se pode voltar com umrollback. Portanto, em transações mais complexas, se utiliza alguns savepoints paramarcar pontos para os quais seja possível realizar rollback. Dessa forma, estrategica-mente, apenas parte das alterações da transação é desfeita. Veja abaixo um exemplode utilização deste operador:

SQL> insert into alunos (matricula, nome) values (2, `Diogo Gobira`);

1 row created.

SQL> savepoint estado_1;

Savepoint created.

SQL> insert into alunos (matricula, nome) values (3, `André Camatta`);

1 row created.

SQL> savepoint estado_2;

Savepoint created.

• rolling back: em uma transação sem savepoints, esta operação desfaz todas as alte-rações realizadas. Já em um transação com savepoints, um rollback desfaz todas asalterações realizadas após o último savepoint (volta-se ao estado do último savepoint).Veja abaixo um exemplo de utilização deste operador:

SQL> rollback to estado_1;

Rollback complete.

Página 14 de 120www.handbookdeti.com.br

Page 16: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

• rolling forward: é um recurso utilizado em caso de falha de banco de dados para queo seu estado imediatamente antes da falha seja restabelecido. Durante o funcionamentonormal de um banco de dados, todas as informações sobre operações são armazenadasem arquivos do tipo RedoFiles. Em situações de falha, logo após o banco de dadosvoltar a operar, esses arquivos são lidos e, então, as operações são refeitas.

Como se pode concluir dos itens acima, as operações savepoint e rolling forward não sãoobrigatórios até o término de cada transação. Isso porque savepoint é opcional e rollingforward somente é utilizado em casa do falha de bando de dados.

Tendo em vista o exposto, para que toda operação seja atômica e o banco de dados sejamantido consistente, é necessária ao �nal de cada transação a execução de um commit ouum rollback. Portanto, a alternativa que deve ser escolhida é a letra B.

Página 15 de 120www.handbookdeti.com.br

Page 17: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

7. Assuntos relacionados: Banco de Dados, PL/SQL,Banca: FCCInstituição: TRT 18a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 47

A estrutura de controle Iteração pode ser utilizada em PL/SQL com os comandos

(a). LOOP, CASE-LOOP, WHILE-LOOP e FOR-LOOP.

(b). LOOP, CASE-LOOP e WHILE-LOOP.

(c). LOOP, CASE-LOOP e FOR-LOOP.

(d). CASE-LOOP, WHILE-LOOP e FOR-LOOP.

(e). LOOP, WHILE-LOOP e FOR-LOOP.

Solução:

PL/SQL é o acrônimo para �Procedural Language/Structured Query Language�. Ou seja,PL/SQL é uma linguagem procedural que estende SQL. Ela foi desenvolvida pela OracleCorporation e, portanto, é utilizada em banco de dados Oracle.

O surgimento da PL/SQL aconteceu em 1991 para o Oracle 6.0. Antes disso, os desen-volvedores tinham que embutir instruções do tipo SQL nos códigos-fonte procedurais (porexemplo, dentro de códigos C). Com o aparecimento da PL/SQL isso mudou. Todo o códigoprocedural e também as instruções relacionadas ao banco podem ser escritos diretamenteem PL/SQL.

Essa linguagem suporta variáveis, condições, loops, arrays, exceções, funções e procedi-mentos.

A estrutura básica do PL/SQL é chamada de bloco. Portanto, um programa escrito nessalinguagem é composto por blocos. Geralmente, um bloco é desenvolvido para efetuar umaação lógica no programa. Cada bloco é estruturado da seguinte forma:

DECLARE

Seção onde são feitas as declaradas locais: subprogramas e variáveis

e seus tipos. Esta seção não é obrigatória.

BEGIN

Seção que contém o que será executado de fato: instruções procedurais

e SQL. Esta seção é obrigatória.

EXCEPTION

Seção onde ficam as instruções de tratamento de erro. Esta seção

também não é obrigatória.

END

Um exemplo bem básico é apresentado a seguir:

DECLARE

i NUMBER := 1;

BEGIN

LOOP

Página 16 de 120www.handbookdeti.com.br

Page 18: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

INSERT INTO T1 VALUES(i,i);

i := i+1;

EXIT WHEN i>100;

END LOOP;

END;

Especi�camente com relação a estrutura de controle do tipo iteração, PL/SQL possui os se-guintes recursos: LOOP, WHILE, FOR e Cursor FOR. Os três primeiros são bem conhecidose geralmente estão presentes nas linguagem procedurais. Já o quarto é um tipo especial deFOR em que uma variável assume o lugar de registros de uma relação. Abaixo um exemplopara facilitar o entendimento.

DECLARE

CURSOR cursor_person IS

SELECT person_code FROM people_table;

BEGIN

FOR RecordIndex IN cursor_person

LOOP

DBMS_OUTPUT.PUT_LINE(RecordIndex.person_code);

END LOOP;

END;

Nesta questão, a alternativa E é a única que traz apenas comandos PL/SQL relacionados acontrole de iteração. Portanto, é essa a alternativa correta.

Página 17 de 120www.handbookdeti.com.br

Page 19: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

8. Assuntos relacionados: Banco de Dados, Triggers, Gatilhos,Banca: CesgranrioInstituição: PetrobrasCargo: Analista de Sistemas - InfraestruturaAno: 2008Questão: 59

Para os gatilhos (triggers) utilizados em bancos de dados, são feitas as a�rmativas a seguir.

I - Os triggers podem ser con�gurados para disparar antes ou após a execução de umaação de Update, Delete ou Insert em uma tabela.

II - A cláusula When no comando Create Trigger é válida somente para triggers de nívelde linha.

III - Os chamados triggers autônomos são executados como uma transação autônoma,sendo que as modi�cações no banco de dados por eles efetuadas podem ser con�rmadasou revertidas, independente do estado da instrução que desencadeou a chamada dotrigger.

Está(ão) correta(s) as a�rmativas

(a). I, apenas.

(b). II, apenas.

(c). I e II, apenas.

(d). II e III, apenas.

(e). I, II e III.

Solução:

Um gatilho (trigger) é um tipo especial de procedimento armazenado (stored procedure)que está associado a uma tabela, e é executado pelo sistema de banco de dados automati-camente quando um determinado evento ocorre para a tabela a qual o gatilho está associado.

Para um gatilho ser implementado em um banco de dados, duas exigências devem ser satis-feitas: i) especi�car as condições sob as quais o gatilho deve ser executado; e ii) especi�car asações que devem ser realizadas quando um gatilho for disparado. Por exemplo, suponha queem vez de permitir saldos negativos em uma conta corrente, o banco crie condições para quea conta seja zerada e o saldo negativo seja transferido para a conta empréstimo de mesmonúmero que a conta corrente. Neste exemplo, a condição para o disparo do gatilho é o saldonegativo da conta corrente, e a ação a ser realizada é a transferência do saldo negativo paraa conta empréstimo.

CREATE[DEFINER = {user | CURRENT_USER}]TRIGGER trigger_name trigger_time trigger_eventON table_name FOR EACH ROW trigger_stmt

Tabela 1: exemplo de CREATE TRIGGER em MySQL.

Os eventos no banco de dados que ativam um gatilho são os comandos de Linguagem de Ma-nipulação de Dados (DML - Data Manipulation Language): INSERT, DELETE e UPDATE.

Página 18 de 120www.handbookdeti.com.br

Page 20: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Um gatilho é criado utilizando a função CREATE TRIGGER que especi�ca a tabela aqual está associado, a condição para ocorrência do evento e o tipo de ação (nome da função)que será executada com o evento. A sintaxe da função CREATE TRIGGER no MySQL eno Postgree é apresentada na Tabela 1 e na Tabela 2, respectivamente. Note que os sistemasde bancos de dados possuem seus próprios recursos de gatilho não padronizados.

A seguir, explicamos cada um dos parâmetros:

• DEFINER: cláusula opcional para de�nir o usuário para criar o gatilho;

• trigger_name: de�ne o nome do gatilho;

• trigger_time: de�ne se o gatilho será ativado antes (BEFORE) ou depois (AFTER)do comando que o disparou;

• trigger_event: de�ne qual será o evento: INSERT, DELETE ou UPDATE. Podem serespeci�cados vários eventos utilizando OR;

• table_name: nome da tabela cujos eventos podem disparar o gatilho;

• trigger_stm: uma função fornecida pelo usuário, declarada como não recebendo ne-nhum argumento e retornando o tipo TRIGGER, que é executada quando o gatilhodispara;

• FOR EACH ROW / FOR EACH STATEMENT: especi�ca se o procedimento do ga-tilho deve ser disparado uma vez para cada linha afetada pelo evento do gatilho, ouapenas uma vez por comando SQL;

• arguments: uma lista opcional de argumentos, separados por vírgula, a serem fornecidospara a função quando o gatilho for executado.

O gatilho pode ser especi�cado para disparar antes (BEFORE) de realizar uma operaçãona linha (antes das restrições serem veri�cadas e os respectivos comandos de DML seremexecutados), ou após a operação estar completa (após as restrições serem veri�cadas e os res-pectivos comandos terem completado). Se o gatilho for disparado antes do evento, o gatilhopode fazer com que a operação não seja realizada para a linha corrente, ou pode modi�cara linha sendo inserida. Se o gatilho for disparado depois (AFTER) do evento, todas as mu-danças, incluindo a última inserção, atualização ou exclusão, estarão �visíveis� para o gatilho.

Um gatilho que está marcado FOR EACH ROW é chamado uma vez para cada linha quea operação modi�ca. Diferentemente, um gatilho que está marcado FOR EACH STATE-MENT somente executa uma vez para uma determinada operação, não importando quantaslinhas foram modi�cadas. Em particular, uma operação que não modi�ca nenhuma linhaainda assim resulta na execução de todos os gatilhos FOR EACH STATEMENT aplicáveis.

CREATE TRIGGER trigger_name {BEFORE | AFTER} {trigger_event [OR...]}ON table_name [ FOR [ EACH ] { ROW | STATEMENT }]EXECUTE PROCEDURE trigger_stm (arguments)

Tabela 2: exemplo de CREATE TRIGGER em Postgree.

Os gatilhos são usados com enorme e�ciência para impor e manter integridade referencialde baixo nível, e não para retornar resultados de consultas. A principal vantagem é que elespodem conter uma lógica de processamento complexa.

Os sistemas de bando de dados possuem algumas restrições em relação aos gatilhos:

Página 19 de 120www.handbookdeti.com.br

Page 21: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

• Não se pode chamar diretamente um gatilho;

• Não é permitido iniciar ou �nalizar transações em meio a execução de um gatilho;

• Não se pode criar um gatilho para uma tabela temporária ou para uma visão;

• Não é possível criar gatilhos para o comando SELECT, pois este comando não modi�canenhuma linha.

Com base no explicado anteriormente, analisaremos as a�rmações da questão:

I - Os triggers podem ser con�gurados para disparar antes ou após a execução de umaação de UPDATE, DELETE ou INSERT em uma tabela. Isso é especi�cado no comandoCREATE TRIGGER com os parâmetros BEFORE ou AFTER, respectivamente. Portanto,a�rmativa correta.

II - Conforme apresentamos, a cláusula WHEN não está presente no comando CREATETRIGGER para o MySQL e PostgreeSQL. Entretanto, no Oracle SQL e SQLite é possívelutilizar a cláusula WHEN no comando CREATE TRIGGER. Quando a condição da cláu-sula WHEN é válida, o gatilho é executado para cada linha modi�cada, isto é, a execuçãodo gatilho ocorre em nível de linha. Portanto, alternativa correta.

III - Os triggers autônomos (autonomous triggers) estão presentes no sistema de bancode dados Oracle SQL. Diferente dos triggers normalmente existentes nos sistemas de bancode dados, os triggers autônomos são executados como uma transação autônoma. Por meiodas transações autônomas, um trigger pode conter comandos de controle de transação comoCOMMIT e ROLLBACK. Com os comandos COMMIT E ROLLBACK as modi�cações nobanco de dados efetuadas por um gtilho podem ser con�rmadas ou revertidas, independentedo estado da instrução que desencadeou a chamada do trigger. Os triggers autônomos tam-bém podem executar comandos de Linguagem de De�nição de Dados( DDL - Data De�nitionLanguage). Portanto, a�rmativa correta.

Todas as a�rmativas feitas estão corretas. Logo, a resposta desta questão é a letra E.

Página 20 de 120www.handbookdeti.com.br

Page 22: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

9. Assuntos relacionados: Banco de Dados, SQL, Transact SQL,Banca: ESAFInstituição: Superintendência de Seguros Privados (SUSEP)Cargo: Analista Técnico da SUSEP - Tecnologia da InformaçãoAno: 2010Questão: 33

Em relação às operações em bancos de dados SQL, é correto a�rmar que

(a). o Transact-SQL não permite alterar a credencial de login.

(b). o Transact-SQL permite rede�nir a senha desde que seja fornecida a senha antiga.

(c). para executar consultas de Transact-SQL pode-se emitir instruções ao se iniciar oSQL/CMD.

(d). pode-se criar bancos de dados utilizando-se Transact-SQL, por meio do comandoSTART DATABASE.

(e). pode-se restaurar bancos de dados utilizando-se Transact-SQL, por meio dos co-mandos REUSE DATABASE e RESET BLOG.

Solução:

A Structured Query Language, ou SQL é uma linguagem de banco de dados desenvolvidapara gerenciar dados em Sistemas de Gerência de Banco de Dados Relacional (RDBMS), efoi originalmente baseada em álgebra relacional. Seu escopo inclui inserção, remoção, con-sulta de dados, criação e modi�cação de esquemas e controle de acesso a dados.

SQL é uma linguagem declarativa, ao contrário de linguagens de programação como C ouPascal que são imperativas. Apesar de haver padrões para o SQL (ANSI SQL92, SQL99 porexemplo), a maioria das implementações utilizam extensões que incluem funcionalidades delinguagens de programação procedural, como controle de �uxo, por exemplo.

Transact SQL ou TSQL é a extensão proprietária Microsoft e Sybase do SQL. Para a uti-lização do T-SQL é necessário o Microsoft SQL Server. Toda aplicação que se comuniquecom um SQL Server utiliza instruções T-SQL.

Entre as funcionalidades adicionais que o Transact SQL oferece em relação ao SQL, pode-secitar: Controle de �uxo, variáveis locais, funções adicionais para tratamento de �strings�,processamento de datas, funções matemáticas etc.

a) ERRADO: uma credencial é um registro que contém informações de autenticaçãonecessárias para se conectar a serviços fora do SQL Server. É criada pelo comandoCREATE CREDENTIAL e as propriedades das credenciais podem ser alteradas pelocomando ALTER CREDENTIAL. Uma credencial pode ser mapeada para um logindo SQL Server através do comando CREATE LOGIN;

b) ERRADO: transact-SQL permite rede�nir a senha através da instrução ALTER LO-GIN. Para alterar senha de outros usuários é necessário a permissão ALTER ANYLOGIN. Se o usuário atual tiver permissão CONTROL SERVER, ele não precisa in-formar o antigo password;

c) CORRETO: o SQL/CMD é um utilitário que permite que instruções SQL e TSQLsejam escritas e enviadas ao servidor SQL Server, inclusive consultas;

Página 21 de 120www.handbookdeti.com.br

Page 23: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

d) ERRADO: cria-se banco de dados através do comando CREATE DATABASE. STARTDATABASE não é um comando T-SQL;

e) ERRADO: o comando para restaurar backups é o RESTORE. Ele permite restaurarbanco de dados inteiros, fazer restaurações parciais, apenas arquivos ou grupo de ar-quivos de banco de dados. REUSE DATABASE e RESET BLOG não são comandosT-SQL.

Página 22 de 120www.handbookdeti.com.br

Page 24: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

10. Assuntos relacionados: Banco de Dados, Modelo Entidade-Relacionamento,Banca: CESGRANRIOInstituição: PetrobrasCargo: Analista de Sistemas - Eng. de SoftwareAno: 2008Questão: 24

Um modelo entidade-relacionamento foi reestruturado conforme mostrado na �gura acima.Concluiu-se que todos os usuários eram funcionários, embora nem todos os funcionários fos-sem usuários. O modelo relacional derivado desse modelo conceitual possuía originalmenteduas variáveis de relação básicas, com os mesmos nomes das entidades correspondentes,tendo ambas EMAIL como chave primária. Considerando que a variável de relação FUN-CIONARIO não será modi�cada e que a independência de dados lógica será honrada, avariável de relação USUARIO

(a). terá que manter todos os seus atributos originais.

(b). dispensará o uso de chaves candidatas.

(c). será substituída por uma variável de relação básica e uma derivada.

(d). será substituída por uma variável de relação básica, apenas.

(e). será substituída por uma variável de relação derivada, apenas.

Solução:

O modelo entidade-relacionamento é um padrão para modelagem conceitual de banco dedados. Na �gura da questão, os objetos representados por retângulos são conjuntos de en-tidades e os objetos representados por elipses são atributos.

Página 23 de 120www.handbookdeti.com.br

Page 25: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Uma entidade é um objeto que pode ser identi�cado de forma unívoca a todos os outros ob-jetos. A entidade pode representar tanto algo concreto, como uma pessoa, ou algo abstrato,como um empréstimo, por exemplo. Um conjunto de entidades reúne todas as entidades deum mesmo tipo, ou seja, que possuem as mesmas propriedades: atributos.

Os atributos são propriedades que descrevem cada entidade de um conjunto de entidades.Dizemos ainda que cada entidade pode ter seu próprio valor para cada atributo. Exemplo:uma determinada entidade que representa uma pessoa pode ter o valor João Assis para oatributo nome e o número 2367727 para o atributo número de inscrição.

O modelo entidade-relacionamento pode descrever diversos outros objetos importantes paraa modelagem de banco de dados, como os conjuntos de relacionamentos, os atributos mul-tivalorados e a participação de entidades em um conjunto de relacionamentos.

Há, ainda, os conceitos de generalização e especialização. Generalização é o resultado daunião de dois ou mais conjuntos de entidades, produzindo um conjunto de entidades de nívelmais alto. Por outro lado, especialização é o resultado da separação de um subconjunto deentidades, formando conjuntos de entidades de nível mais baixo. A generalização é usadapara enfatizar as semelhanças entre entidades de nível mais baixo e ocultar suas diferenças.A especialização é o inverso: ela enfatiza as diferenças entre as entidades.

Veri�ca-se que, no primeiro modelo, existem duas entidades independentes com seus res-pectivos atributos. A transformação realizada para se chegar ao segundo modelo conceitualnada mais é do que um processo de generalização.

Já o modelo relacional ao qual a questão se refere é uma maneira de representar o bancode dados logicamente, e não conceitualmente. No modelo relacional, os dados são represen-tados como relações matemáticas, isto é, como um subconjunto do produto cartesiano den conjuntos. Na etapa de transformação do modelo conceitual para o modelo lógico, serápermitido ao projetista criar um modelo consistente da informação a ser armazenada pormeio do processo de normalização, por exemplo.

No modelo relacional, uma variável relacional, também conhecida como �relvar�, é umavariável que representa uma relação. Para tornarmos a explicação bem simples, podemosdizer que uma variável relacional básica representa uma tabela no SQL e uma variável rela-cional derivada representa uma visão ou o resultado de uma consulta.

O modelo relacional derivado do primeiro modelo entidade-relacionamento pode ser des-crito da seguinte maneira:

Funcionario(email, nome)Usuario(email, nome, login)

Segundo o enunciado, após a generalização, a variável de relação Funcionario será man-tida sem modi�cações. Já, para a variável de relação Usuario, criaremos uma nova variávelde relação básica da seguinte forma:

UsuarioTabela(email, login)

Página 24 de 120www.handbookdeti.com.br

Page 26: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Isso pode ser feito, já que, na generalização, foi criado um relacionamento de muitos-para-um com a variável de relação Funcionario. Sendo assim, o campo e-mail será su�cientepara representar o usuário na variável de relação Funcionario. Note que, dessa maneira, aindependência lógica ainda não está honrada, já que a variável de relação UsuarioTabelanão possui a informação do atributo nome.

Para garantirmos a independência lógica, precisamos criar uma variável relacional deri-vada que chamaremos de UsuarioVisao ou simplesmente Usuario. No SQL, essa variável derelação representará uma junção das tabelas geradas pelas variáveis de relação básica Fun-cionario e UsuarioTabela e representará todos os usuários, mas, dessa vez, com o atributonome advindo da tabela que representa o conjunto de funcionários.

Dada as explicações imediatamente acima, a resposta correta é a alternativa C.

Página 25 de 120www.handbookdeti.com.br

Page 27: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

11. Assuntos relacionados: Banco de Dados, Modelo Entidade-Relacionamento,Banca: FCCInstituição: TRT 2a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 39

Em um diagrama entidade relacionamento, uma situação de composição tal qual �empregadogerencia empregado�, geralmente é apresentada como

(a). entidade fraca.

(b). relacionamento associativo.

(c). auto relacionamento.

(d). relacionamento interativo.

(e). relacionamento restritivo.

Solução:

A resposta da questão é a alternativa C, auto relacionamento.

O Modelo de Entidades e Relacionamentos (MER) é um modelo abstrato cuja �nalidade édescrever, de maneira conceitual, os dados a serem utilizados no projeto de um sistema deinformação. A principal ferramenta do modelo é o diagrama Entidade Relacionamento.

O primeiro conceito fundamental do MER é o de entidade. Uma entidade correspondeà representação de todo e qualquer substantivo, concreto ou abstrato, sobre o qual precisa-se armazenar e recuperar informações. Em um sistema de vendas, por exemplo, algumasentidades comuns seriam Vendas, Produtos e Clientes.

O segundo conceito fundamental é o de relacionamento. No MER, um relacionamentomostra como as entidades se relacionam entre si. Em um sistema de vendas, a entidadeVendas estaria relacionada com a entidade Produtos, bem como com a entidade Clientes.

Os auto relacionamentos (também chamados relacionamentos recursivos) são casos espe-ciais onde uma entidade se relaciona com si própria. Apesar de serem relacionamentosmuito raros, a sua utilização é muito importante em alguns casos.

Os auto relacionamentos podem ser do tipo 1:1, 1:N ou N:M. Exemplos deste relacionamentopodem ser encontrados nas chamadas �explosões de materiais�, nas quais itens compostossão formados por muitos itens componentes. Os itens compostos, por sua vez, podem sercomponentes de outros itens maiores.

Para exempli�car melhor, vamos utilizar um exemplo concreto. O item automóvel é com-posto pelo chassis, motor, direção, câmbio etc. O motor, por sua vez, é formado pelo carbu-rador, velas, platinado etc. Esta �explosão� de composição dos itens pode ser representadapor um auto relacionamento N:M da entidade itens, sendo que o papel de um determinadoitem ora é de componente, ora é de composto.

Um outro exemplo típico de auto relacionamento é o gerenciamento de funcionários, trazidona questão. Um gerente nada mais é que um funcionário que possui um relacionamento com

Página 26 de 120www.handbookdeti.com.br

Page 28: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

outros funcionários que lhe são subordinados. Esta relação pode ser representada por umauto relacionamento 1:N da entidade funcionários, sendo que o papel de um determinadofuncionário ora é de gerente, ora é de subordinado.

Página 27 de 120www.handbookdeti.com.br

Page 29: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

12. Assuntos relacionados: Banco de Dados, DER,Banca: CesgranrioInstituição: BNDESCargo: Analista de Sistemas - DesenvolvimentoAno: 2008Questão: 48

Um analista de sistemas recebe o seguinte trecho de descrição de um sistema:

Uma empresa contrata um pro�ssional para trabalhar em um projeto recebendo um de-terminado salário. Sabe-se que um projeto pode ter a participação de diversas empresas eque um pro�ssional pode desempenhar várias atividades nesse projeto (p.ex. operador deguindaste e pedreiro). Que modelo ER representa corretamente essa descrição?

(O símbolo (*) representa atributo multivalorado).

(a). Modelo 1

(b). Modelo 2

(c). Modelo 3

(d). Modelo 4

(e). Modelo 5

Figura 1: Modelos ER

Solução:

Esta é uma questão polêmica, pois seu enunciado é um tanto quanto pobre de informações.Quando isso acontece, a melhor estratégia é tentar identi�car quais alternativas estariam�mais erradas� e eliminá-las.

Uma consideração muito importante para uma resolução consciente desta questão que o

Página 28 de 120www.handbookdeti.com.br

Page 30: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

enunciado deveria trazer seria a de�nição se um pro�ssional pode ser contratado por maisde uma empresa e, por consequência, poder trabalhar em mais de um projeto. Se o candi-dato �zer uma consideração diferente da imaginada pelo autor desta questão, suas chancesde acertar esta questão diminuem consideravelmente.

Vamos às alternativas.

(A) ERRADA

Considerando que um determinado pro�ssional pode ser contratado por diferentes empresaspara trabalhar em diversos projetos, este modelo é inapropriado. Isso por conta do atri-buto �atividade�, que está relacionado ao pro�ssional. Em outras palavras, teríamos que umdeterminado pro�ssional somente poderia exercer as mesmas atividades em todos os seuseventuais contratos, o que não é apropriado.

Por outro lado, caso a consideração acima não seja feita, este modelo se mostra adequado,porém limitado.

(B) ERRADA

A argumentação para esta alternativa é similar à feita na alternativa anterior. Se a con-sideração supracida for feita, um determinado pro�ssional somente poderia ter um únicosalário para seus eventuais contratos, o que não é apropriado. Caso contrário, o modelodesta alternativa também atende, apesar de ser limitado.

(C) e (D) ERRADA

Estas deveriam ser as primeiras alternativas a serem eliminadas. Perceba que a relaçãoexistente entre os conjuntos de entidades �empresa� e �projeto�, denominada �possui�, nãose encaixa na descrição do sistema apresentada no enunciado.

(E) CORRETA

Esta é a alternativa �menos errada� e, portanto, a escolha mais segura possível. Comoo atributo �atividade� está associado ao conjunto de relacionamentos �contrato�, este mo-delo não se limita ao cenário de que um pro�ssional somente pode ter um contrato paratrabalhar em apenas uma empresa para participar de um único projeto.

De qualquer forma, cabe ressaltar que o nível de normalização deste modelo não é bom.Em um banco de dados relacional, o conjunto de relacionamentos �contrato� seria imple-mentado por meio de uma tabela. Imagine o caso em que um pro�ssional execute 5 tarefasem um contrato com uma determinada empresa. Nesse caso, teríamos nessa tabela 5 linhascom os 4 campos com valores repetidos: salário e chaves estrangeiras dos conjuntos de enti-dades envolvidos. Essa repetição desnecessária de valores pode ser onerosa, mas ela pode sereliminada com um processo de normalização deste modelo, que resultaria em outro modelomais adequado.

Página 29 de 120www.handbookdeti.com.br

Page 31: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

13. Assuntos relacionados: Banco de Dados, Modelo Entidade-Relacionamento, Modelo Re-lacional, Projeto Lógico de Banco de Dados,Banca: CesgranrioInstituição: PetrobrasCargo: Analista de Sistemas Pleno - ProcessosAno: 2006Questão: 23

Considere o modelo entidade-relacionamento representado abaixo.

Na transformação deste modelo conceitual Entidade-Relacionamento em um modelo lógicorelacional, as cardinalidades do relacionamento entre as entidades exercem papel importante.Dado que se deseja gerar um modelo relacional que atenda à terceira forma normal, pode-sea�rmar que sempre darão origem a uma tabela para cada uma das entidades relacionadasos relacionamentos do tipo:

(a). (0,n) x (0,n), podendo ou não gerar uma tabela para o relacionamento.

(b). (0,1) x (0,n), podendo ou não gerar uma tabela para o relacionamento.

(c). (0,1) x (1,1), gerando uma tabela para o relacionamento.

(d). (1,n) x (1,n), podendo ou não gerar uma tabela para o relacionamento.

(e). (1,1) x (1,n), devendo gerar uma tabela para o relacionamento.

Solução:

Uma entidade corresponde à representação de todo e qualquer substantivo, concreto ouabstrato, sobre o qual precisa-se armazenar ou recuperar informações. No modelo Entidade-Relacionamento é representado por um retângulo.

Já o relacionamento é a forma como os objetos que compõem a realidade se relacionam.É representado por um losango, mas há um conceito importante a ser entendido que é acardinalidade do relacionamento. Consiste de números cardinais colocados ao lado do nomedo relacionamento e dimensiona o número de ocorrências de uma entidade que pode estarenvolvido em um relacionamento, sendo útil para extrair daí regras de consistência e inte-gridade dos dados.

Existem 3 (três) tipos básicos de relacionamento entre as entidades de acordo com a cardi-nalidade:

• Um-para-um (1:1): representa que uma única ocorrência de uma entidade pode serelacionar com apenas uma única ocorrência de outra entidade;

• um-para-muitos (1:N): representa que uma ocorrência de uma entidade pode se re-lacionar com muitas ocorrências de outra entidade. No entanto, a recíproca não éverdadeira;

• muitos-para-muitos (N:M): representa que várias ocorrências de uma entidade pode serelacionar com muitas ocorrências de outra entidade.

Página 30 de 120www.handbookdeti.com.br

Page 32: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Há ainda os relacionamentos recursivos onde uma entidade se relaciona com si própria e sãorelacionamentos mais raros.

Para que o modelo E-R pudesse representar melhor os conceitos foi observado que car-dinalidades genéricas do tipo 1:N (um-para-muitos) e N:M (muitos-para-muitos) não sãosu�cientes. Isto porque o conceito de �muitos� é um conceito vago, podendo ser um ou qual-quer número acima de um, existindo, ainda, o valor zero, pois, em alguns casos, nem todasas ocorrências das entidades participam do relacionamento. Para que isso seja resolvido, omodelo E-R propõe que seja utilizado o conceito de Cardinalidade Mínima e de Cardinali-dade Máxima.

Para um melhor entendimento das Cardinalidades Mínimas e Máximas, vamos analisar ostipos de relacionamento de cada uma das alternativas aplicadas ao problema do enunciado.Na letra (A), a cardinalidade do tipo (0,n) x (0,n) quer dizer o seguinte: uma pessoa podelavar um, vários carros ou nenhum e um carro pode não ser lavado ou ser lavado por umaou mais pessoas. Já na letra (B), uma pessoa pode lavar nenhum, um ou vários carros, masum carro pode não ser lavado ou ser lavado por, no máximo, uma pessoa. A letra (C) indicaque um carro deve ser levado por exatamente uma pessoa, mas que uma pessoa pode nãoter lavado nenhum carro. Na letra (D), uma pessoa deve ter lavado, no mínimo, um carroe todo carro deve ter sido lavado por uma ou mais pessoas. E, para �nalizar, na letra (E):um carro deve ter sido lavado por exatamente uma pessoa e uma pessoa deve ter lavado umou mais carros.

Ao passarmos um relacionamento para o modelo relacional, temos três opções:

1. Entidades relacionadas podem ser fundidas em uma única tabela;

2. tabelas podem ser criadas para o relacionamento;

3. chaves estrangeiras podem ser criadas em tabelas a �m de representar adequadamenteo relacionamento.

Na letra (C), que é o único caso de mapeamento um-para-um, a melhor alternativa paraatender a terceira forma normal é incluir a chave primária de Pessoa como chave estrangeirana tabela Carro (opção 3). Sendo assim, todo registro da tabela Carro terá representadouma pessoa, que será a pessoa que lava o carro. Caso o relacionamento fosse do tipo (1,1)x (1,1), uma tabela poderia representar as duas entidades sem problemas (opção 1). Nestecaso, não haveria o problema de redundância indesejado para a terceira forma normal e ne-nhum dado seria perdido. Gerar uma tabela de�nitivamente não é uma opção para a letra(C), que está incorreta.

Os relacionamentos muitos-para-muitos estão representados nas letras (A) e (D). Nestescasos, a única solução possível é utilizar uma tabela para o relacionamento (opção 2). Não épossível representar esse tipo de relacionamento através de uma chave-estrangeira em umatabela que representa uma entidade e nem mesmo fundir tabelas de entidade sem que hajaproblemas de redundância. As alternativas (A) e (D) estão erradas, pois a tabela �deve� sercriada para o relacionamento e não é uma opção não tê-la.

Na letra (E), a melhor alternativa é criar chave estrangeira para representar a pessoa quelavou o carro na tabela Carro (opção 3). Entretanto, ainda é necessário garantir que umapessoa só exista na tabela Pessoa se já houver lavado um carro. Isso pode ser feito com in-clusão de regra adicional de integridade. A opção 1 não é aceitável, pois representaria dadosredundantes. A opção (2) também tem a possibilidade de representar um modelo relacional

Página 31 de 120www.handbookdeti.com.br

Page 33: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

que atenda o que a questão está pedindo e também deve ter adicionada a restrição de quetoda pessoa da tabela Pessoa tenha um registro na tabela que representa o relacionamento�Lava�. Sem dúvida, é uma opção, mas não �deve gerar uma tabela� conforme diz o enunci-ado. A letra (E) está errada.

Na alternativa (B), só o fato de não ser um relacionamento muitos-para-muitos, sabemosque o uso de tabela para representar o relacionamento �Lava� não é obrigatório. Há a possi-bilidade de se criar uma chave estrangeira que represente uma pessoa na tabela Carro (opção3). Neste caso, a tabela Carro deve permitir que o valor da chave estrangeira também possaser nulo, pois um carro não necessariamente é lavado por alguma pessoa. Há controvérsiasse, neste caso, a terceira forma normal é obedecida. Se optássemos por criar uma tabela parao relacionamento, não haveria problemas, pois, para garantir que um carro seja lavado porno máximo uma pessoa, basta adotar a chave primária de Carro para garantir a unicidadedo mesmo. A opção 1 não é adequada para o caso, pois as informações das pessoas iriamser redundantes na nova tabela �fundida�. Embora haja a controvérsia de a permissão douso de valor nulo não garantir a terceira forma normal e nem mesmo a primeiro, vamosadotar que o uso de chave estrangeira é factível para o problema e que o uso de tabela parao relacionamento também é possível. Sendo assim, a alternativa (B) é a alternativa correta.

Página 32 de 120www.handbookdeti.com.br

Page 34: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

14. Assuntos relacionados: Banco de Dados, Modelo Entidade-Relacionamento, Modelo Re-lacional,Banca: CespeInstituição: PetrobrasCargo: Analista de Sistemas Júnior - InfraestruturaAno: 2007Questão: 80�82

Considerando que, nas tabelas acima, FK e PK sejam, respectivamente, chaves estrangeirae primária em um banco relacional, julgue os itens subseqüentes.

80 Se ALUNO em MATRICULAS referencia MATRICULA em ALUNOS, e TURMA emMATRICULAS referencia CODIGO em TURMAS, então a cada registro em ALUNOSpodem estar associados vários registros em TURMAS e a cada registro em TURMASpodem estar associados vários registros em ALUNOS.

81 Se DEPARTAMENTO em CURSOS referencia CODIGO em DEPARTAMENTOS,então a cada registro em DEPARTAMENTOS podem estar associados vários registrosem CURSOS e a cada registro em CURSOS podem estar associados vários registrosem DEPARTAMENTOS.

82 Em um diagrama de entidades-relacionamentos do banco de dados composto pelastabelas apresentadas, MATRICULAS será representada por uma classe de entidades eserá muitos para muitos o relacionamento entre as classes de entidades que representemDISCIPLINAS e CURSOS.

Solução:

Os itens 80, 81 e 82 estão relacionados ao conceito de mapeamento de um esquema E-R(Entidade-Relacionamento) em tabelas no banco de dados no modelo relacional.

Um banco de dados de acordo com o modelo E-R pode ser representado por uma cole-ção de tabelas. Para cada conjunto de entidades e para cada conjunto de relacionamentos,existe uma tabela única registrando o nome do conjunto de entidade ou relacionamento den-tro de um banco de dados.

Página 33 de 120www.handbookdeti.com.br

Page 35: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Para realizar a conversão da representação do banco de dados em um modelo E-R paraum banco de dados relacional, as seguintes regras gerais devem ser seguidas:

• conjunto de entidades fortes: seja E um conjunto de entidades fortes descrito pelosatributos a1, a2, . . . , an. Representamos essa entidade por uma tabela E com n colunasdistintas, cada uma delas correspondendo a um dos atributos de E;

• conjunto de entidades fracas: seja A um conjunto de entidades fracas com os atri-butos a1, a2, . . . , an. Seja B um conjunto de entidades fortes, do qual A é dependente.Representamos a entidade fraca por uma tabela A, onde as colunas dessa tabela sãoatributos da entidade A mais os atributos que formam a chave primária do conjuntoB;

• relacionamentos: seja R um conjunto de relacionamentos; seja a1, a2, . . . , an oconjunto de atributos formados pela união das chaves primárias de cada conjunto deentidades participantes de R; e seja os atributos descritivos b1, b2, . . . , bn (se existir)de R. Representamos o conjunto R por uma tabela R, onde as colunas dessa tabela sãoas chaves primárias da entidades participantes mais os atributos descritivos de R, casoexistam;

• atributos multivalorados: para um atributo multivalorado, criamos uma tabela Tcom uma coluna que corresponde ao atributo multivalorado e as colunas corresponden-tes à chave primária do conjunto de entidades ou conjunto de relacionamentos do qualo atributo multivalorado é atributo.

No caso dos relacionamentos no modelo E-R, existem alguns tratamentos especiais em fun-ção da cardinalidade do relacionamento entre as entidades como forma de eliminar tabelasredundantes:

• um conjunto de relacionamentos que possuem cardinalidade um para um não precisa serrepresentado no modelo relacional, pois esse relacionamento não cria uma nova relação.Em geral, caso existam atributos descritivos do relacionamento, esses são acrescentadoscomo atributos da tabela de uma das entidades participantes;

• um conjunto de relacionamentos que possuem cardinalidade muitos para um e nãopossui atributos descritivos não precisa ser representado por uma tabela no modelorelacional. Em geral, isso ocorre no relacionamento entre um conjunto de entidadesfracas e um conjunto de entidades forte. A chave primária do conjunto de entidadesfortes funciona como um atributo no conjunto de entidades fracas (chave estrangeira);

• um conjunto de relacionamentos que possuem cardinalidade muitos para muitos é re-presentado no modelo relacional por uma tabela, pois esse relacionamento cria umanova relação, conforme descrito anteriormente na regra geral.

No nosso caso, em vez de partirmos do modelo E-R para o modelo relacional, temos quepartir do modelo relacional para o modelo E-R para resolvermos os itens 80, 81 e 82.

Em nosso modelo relacional temos as tabelas ALUNOS, MATRICULAS, TURMAS, DIS-CIPLINAS, CUROS e DEPARTAMENTOS. Por inferência nossa, acreditamos que as setasindicam o sentido do relacionamento entre as tabelas:

• ALUNOS está inscrito em CURSOS. Um aluno se inscreve em um curso, e em umcurso pode estar inscrito vários alunos. Ou seja, temos um relacionamento um paramuitos. Note que a tabela ALUNOS possui uma chave estrangeira CURSO, o quedemonstram a relação de dependência entre as entidades ALUNOS e CURSOS. Nesterelacionamento, CURSOS é uma entidade forte e ALUNOS é uma entidade fraca;

Página 34 de 120www.handbookdeti.com.br

Page 36: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

• CURSOS é administrado por DEPARTAMENTOS. Um curso é administrado por de-partamento. Um curso é administrado por um departamento, e um departamentopode administrar vários cursos. Ou seja, temos um relacionamento um para muitos.Note que a tabela CURSOS possui uma chave estrangeira DEPARTAMENTO, o quedemonstram a relação de dependência entre as entidades CURSOS e DEPARTAMEN-TOS. Neste relacionamento, CURSOS é uma entidade fraca e DEPARTAMENTOS éuma entidade forte;

• DISCIPLINAS está vinculada a CURSOS. Uma disciplina pode está vinculada somentea um curso ou mais de um curso, e um curso possui várias disciplinas. Note que nesterelacionamento surge a dúvida se temos um relacionamento um para muitos ou muitospara muitos. Caso tivéssemos um relacionamento muitos para muitos, outra tabelarepresenta o relacionamento entre CURSOS e DISCIPLINAS deveria existir no modelorelacional. Porém, não existe essa tabela, e portanto, o relacionamento entre CURSOSe DISCIPLINAS é um para muitos. Note que a tabela DISCIPLINAS possui uma chaveestrangeira CURSO, o que demonstram a relação de dependência entre as entidadesCURSOS e DISCIPLINAS. Neste relacionamento, CURSOS é uma entidade forte eDISCIPLINAS é uma entidade fraca;

• TURMAS está vinculada a DISCIPLINAS. Uma turma está vinculada a uma disciplina,e uma disciplina pode ter várias turmas. Ou seja, temos um relacionamento um paramuitos. Note que a tabela TURMAS possui uma chave estrangeira DISCIPLINA, o quedemonstram a relação de dependência entre as entidades TURMAS e DISCIPLINAS.Neste relacionamento, DISCIPLINAS é uma entidade forte e TURMAS é uma entidadefraca;

• ALUNOS está matriculado em TURMAS. Um aluno pode estar matriculado em diver-sas turmas, e uma turma pode ter vários alunos. Ou seja, temos um relacionamentomuitos para muitos. Como temos esse tipo de relacionamento, devemos representá-lono modelo relacional como uma tabela, no caso MATRICULAS. Observe que, a tabelaMATRICULAS possui as chaves primárias de ALUNOS e CURSOS.

De acordo com os relacionamentos descritos e as respectivas cardinalidade, podemos montaro nosso modelo E-R. A Figura 2 ilustra o modelo E-R obtido a partir do modelo relacional.

Figura 2: Modelo Entidade-Relacionamento com base no modelo relacional.

Página 35 de 120www.handbookdeti.com.br

Page 37: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

A seguir analisamos os itens:

80 CERTO

Conforme descrevemos anteriormente, o relacionamento entre ALUNOS e TURMAS émuitos para muitos, isto é, cada registro em ALUNOS pode estar associado a váriosregistros em TURMAS. Assim como, cada registro em TURMAS pode estar associadoa vários registros em ALUNOS. A tabela MATRICULAS representa o relacionamentoentre as entidades ALUNOS e TURMAS. Portanto, este item está certo.

81 ERRADO

Conforme descrevemos anteriormente, o relacionamento entre CURSOS e DEPAR-TAMENTOS é um para muitos, isto é, um registro em CURSOS pode estar associadoa um único registro em DEPARTAMENTO, e um registro em DEPARTAMENTOSpode estar associado a vários registros em CURSOS. Portanto, este item está errado,pois a�rma que cada registro em CURSOS pode estar associado a vários registros emDEPARTAMENTOS.

82 ERRADO

Conforme mostrado no modelo E-R a partir do modelo relacional, a tabela MATRICU-LAS é representada como um relacionamento de ALUNOS e TURMAS no modelo E-R,e não como uma entidade. No caso do relacionamento entre DISCIPLINAS e CUR-SOS, o relacionamento não é muitos para muitos, mas um para muitos, pois no modelorelacional não existe uma tabela representando o relacionamento entre DISCIPLINASe CURSOS. Portanto, este item está errado.

Página 36 de 120www.handbookdeti.com.br

Page 38: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

15. Assuntos relacionados: Banco de Dados, Modelagem de Dados, Superchave, Chave Se-cundária, Segurança da Informação, Criptogra�a, Chave Assimétrica, Chave Simétrica,Banca: ESAFInstituição: Agência Nacional de Águas (ANA)Cargo: Analista Administrativo - Tecnologia da Informação e Comunicação / Desenvolvi-mento de Sistemas e Administração de Banco de DadosAno: 2009Questão: 17

Um conjunto de um ou mais atributos, tomados coletivamente, para identi�car unicamenteuma tupla numa relação, é denominado

(a). chave assimétrica.

(b). chave simétrica.

(c). superchave.

(d). chave secundária.

(e). chave de tupla.

Solução:

(A) INCORRETA

Algoritmos que usam chaves assimétricas fazem parte da criptogra�a de chave pública. Aschaves assimétricas são usadas para a criação de um par de chaves criptográ�cas relaciona-das: uma chave pública e uma chave privada (secreta). Com o uso da criptogra�a de chavepública é possível veri�car a autenticidade de mensagens, através da criação de assinaturasdigitais e, também, proteger a con�dencialidade e integridade da mensagem, através da ci-fragem com o uso da chave pública e decifragem através da chave privada. O enunciado doproblema se refere a bancos de dados relacionais, não a criptogra�a e, portanto, essa opçãoé incorreta.

(B) INCORRETA

Assim como as chaves assimétricas, chaves simétricas também são conceitos de criptogra�a.No entanto, nos algoritmos de criptogra�a de chave simétrica, chaves semelhantes, normal-mente idênticas, são usadas para cifrar e decifrar uma mensagem, donde decorre o nome�simétrica�.

(C) CORRETA

Uma superchave é qualquer subconjunto de atributos de um esquema de relação com apropriedade de que duas tuplas, em qualquer estado de relação r de R, não tenham a mesmacombinação de valores para esse subconjunto de atributos. Em outras palavras, sejam etuplas distintas e seja SK um subconjunto de atributos de um esquema de relação. Nestecaso, para quaisquer e. Note, ainda, que toda relação possui ao menos uma superchave: apadrão (default), o conjunto de todos os atributos da relação.

Superchaves mais úteis, no entanto, são as superchaves mínimas. Nelas, não há atribu-tos redundantes. Ou seja, não é possível remover qualquer atributo desse conjunto semquebrar a restrição da superchave identi�car tuplas distintas.

Página 37 de 120www.handbookdeti.com.br

Page 39: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

(D) INCORRETA

Uma chave secundária é uma chave que, normalmente, não identi�ca unicamente um re-gistro e que pode ser utilizada para buscas simultâneas de vários registros. Normalmenteimplementadas como índices em bancos de dados, são usadas para busca e recuperação dedados.

(E) INCORRETA

O conceito �chave de tupla� não é amplamente conhecido na literatura e há outra alter-nativa que responde de maneira correta esta questão. Por esse motivo, esse conceito nãoserá discutido.

Página 38 de 120www.handbookdeti.com.br

Page 40: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

16. Assuntos relacionados: Banco de Dados,Modelo Relacional,Modelo Entidade-Relacionamento,Modelo Objeto-Relacionamento,Banca: ESAFInstituição: Agência Nacional de Águas (ANA)Cargo: Analista Administrativo - Tecnologia da Informação e Comunicação / Desenvolvi-mento de Sistemas e Administração de Banco de DadosAno: 2009Questão: 22

O modelo de dados baseado numa coleção de tabelas que representam dados e as relaçõesentre eles é denominado modelo

(a). relacional.

(b). entidade/relacionamento.

(c). baseado em objetos.

(d). de dados semiestruturados.

(e). objeto/relacionamento.

Solução:

(A) CORRETA

O modelo relacional usa o conceito de uma relação matemática como seu bloco de cons-trução básica e tem sua base teórica na teoria dos conjuntos e na lógica de predicados deprimeira ordem. No modelo relacional, o banco de dados é representado como uma coleçãode relações.

Quando uma relação é pensada como uma tabela de valores, cada linha na tabela repre-senta uma coleção de valores de dados relacionados. Nessa representação, cada linha natabela representa um fato que corresponde a uma entidade ou relacionamento do mundoreal. O nome da tabela e os nomes das colunas são usados para auxiliar na interpretaçãodos dados da coluna e todos os valores em uma coluna são do mesmo tipo de dado. Por isso,essa é a solução correta para a questão.

(B) INCORRETA

O modelo de entidade-relacionamento é um modelo abstrato com a �nalidade de descre-ver, conceitualmente, as entidades e os relacionamentos de um domínio. Esse modelo, e suasvariações, é normalmente empregado para o projeto conceitual de aplicações de um bancode dados, e muitas ferramentas de projeto de um banco de dados também aplicam seusconceitos.

Neste modelo, uma entidade é um objeto que existe no mundo e que é facilmente dis-tinguível de outros. Uma entidade pode ser tanto concreta, como um livro, uma pessoa ouum lugar, quanto abstrata, como um feriado. Uma entidade, por sua vez, é composta poratributos. Um atributo é uma função que mapeia um conjunto de entidades em um domínioem particular. Cada entidade é descrita por um conjunto de pares (atributo, valor) e existeum par para cada um dos atributos da entidade.

Um relacionamento, por sua vez, é uma associação qualquer entre diversas entidades. Um

Página 39 de 120www.handbookdeti.com.br

Page 41: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

relacionamento �trabalha para�, por exemplo, pode relacionar empregador e empregados.

A principal ferramenta do modelo de entidade-relacionamento é o diagrama de entidade-relacionamento. Nele, retângulos representam entidades, elipses representam atributos, lo-sangos representam relacionamentos e linhas ligam atributos a entidades e entidades a re-lacionamentos. A Figura 3 exibe um exemplo de diagrama entidade-relacionamento. Nela,existem duas entidades, �Cliente� e �Conta�. A entidade �Cliente� possui os atributos �Nome�,�Endereço� e �CPF�, já a entidade �Conta� possui os atributos �Número� e �Balanço�. Ambassão relacionadas pela relação �Possui�, que indica que um ou mais clientes podem possuiruma ou mais contas (que, por sua vez, podem ser possuídas por um ou mais clientes).

Figura 3: exemplo de diagrama entidade-relacionamento.

(C) INCORRETA

Modelos baseados em objetos têm sua origem nas linguagens orientadas a objetos. Nelas, umobjeto possui, tipicamente, dois componentes: estado (valor) e comportamento (operações).Em linguagens de programação, objetos existem somente durante a execução do programa.Já em bancos de dados orientados a objetos, a existência dos objetos pode ser estendidade modo que sejam armazenados de forma permanente; portanto, os objetos continuama existir mesmo após o término do programa, podendo ser posteriormente recuperados ecompartilhados por outros programas. No modelo orientado a objetos, um conceito comumé o de classe, que representa um conjunto de objetos com características a�ns e de�ne ocomportamento dos objetos através de seus métodos, e quais estados ele é capaz de manteratravés de seus atributos.

Alguns conceitos importantes em orientação a objetos são:

• Encapsulamento: os aspectos internos e externos de um objeto são separados, impe-dindo o acesso direto ao estado de um objeto (seus atributos), disponibilizando exter-namente apenas métodos que alteram esses estados;

• Herança: permite a especi�cação de novos tipos ou classes que herdam parte de suasestruturas e/ou operações de classes ou tipos previamente de�nidos, o que torna maisfácil desenvolver os tipos de dados de um sistema de modo incremental e reutilizarde�nições de tipos na criação de novos tipos de objetos;

• Sobrecarga de operador: se refere à propriedade de uma operação de ser aplicadaa diferentes tipos de objetos. Em tal situação, um nome de operação pode se referir avárias implementações diferentes, dependendo do tipo de objetos aos quais é aplicada.Essa característica também é conhecida como polimor�smo de operador.

Página 40 de 120www.handbookdeti.com.br

Page 42: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Em bancos de dados tradicionais, a informação sobre objetos complexos é, normalmente,distribuída em várias relações ou registros, levando à perda de correspondência direta entreum objeto do mundo real e sua representação no banco de dados. O mesmo não ocorre embancos de dados orientados a objetos, que são capazes de manter estruturas de objetos comcomplexidade arbitrária.

(D) INCORRETA

O modelo de dados semiestruturados é um modelo de bancos de dados em que não háseparação entre dados e esquema e sua estruturação depende do propósito da aplicação. Pornão haver essa separação, o esquema é normalmente associado em conjunto com os dados.Em outros casos, o esquema existe apenas para de�nir restrições fracas aos dados.

Um compromisso feito quando bancos de dados que usam esse modelo são adotados é que asconsultas podem não ser tão e�cientes quanto a alternativa em bancos de dados relacionais,devido à forma típica como esses bancos de dados são implementados. Neles, os registros sãonormalmente armazenados com identi�cadores únicos referenciados por ponteiros para suasposições no disco. Como é necessário percorrer o disco seguindo os ponteiros, suas consultaspodem não ser tão e�cientes.

(E) INCORRETA

O modelo objeto-relacionamento (OR) é baseado no modelo de entidade-relacionamento(ER). No modelo OR, o mundo é visto como um conjunto de objetos e seus relacionamen-tos. A diferença entre esse e o modelo de ER é que no modelo OR os atributos são tratadoscomo objetos e, com isso, os benefícios da orientação a objetos são unidos aos benefícios domodelo relacional (ambos modelos descritos acima).

Essa resposta é incorreta porque o modelo objeto-relacional é usado para modelagem desistemas de bancos de dados, não para representar os dados.

Fonte: Symposium on Applied Computing Proceedings of the 1992 ACM/SIGAPP Sympo-sium on Applied computing: technological challenges of the 1990's table of contents KansasCity, Missouri, United States Páginas: 299 - 307 Ano de publicação: 1992 ISBN:0-89791-502-X Disponível em: http://portal.acm.org/citation.cfm?id=143655

Página 41 de 120www.handbookdeti.com.br

Page 43: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

17. Assuntos relacionados: Banco de Dados, Álgebra Relacional, SGBD,Banca: CESGRANRIOInstituição: BNDESCargo: Analista de SuporteAno: 2008Questão: 56

Sobre bancos de dados relacionais é INCORRETO a�rmar que

(a). fornecem outra tabela, como resultado de consulta a uma tabela.

(b). possuem um otimizador que é responsável por implementar de forma e�ciente asconsultas relacionais realizadas pelo usuário.

(c). armazenam dados organizados logicamente em tabelas e �sicamente em arquivos.

(d). disponibilizam estruturas para manutenção de integridade dos dados.

(e). permitem a realização de operações de junção e união de conjuntos, mas não deprojeção e restrição.

Solução:

Em bancos de dados relacionais as tabelas são estruturas lógicas que têm por objetivo sim-pli�car a modelagem e a visualização dos dados, que �sicamente são armazenados comoarquivos. O diagrama de tabelas é um nível de abstração de dados também conhecido comomodelo lógico de dados.

Independente do formato dos arquivos e dos métodos de acesso utilizados, o usuário �-nal sempre enxerga os dados organizados em tabelas. Quando uma consulta é submetida aoSGBD relacional, pode ser necessário unir dados de vários arquivos para fornecer o resul-tado. No entanto, o usuário �nal não precisa tomar conhecimento dessa necessidade, poiso resultado da consulta será fornecido como uma tabela, essa montada dinamicamente deacordo com os critérios da operação.

A otimização das consultas, assim como a manutenção da integridade dos dados, é papel doSGBD. Como atribuições dos SGBDs, podemos citar também a manutenção da segurançae o controle de concorrência, permitindo que vários usuários ou processos usem o banco dedados simultaneamente sem prejuízo aos dados.

Em grande parte dos sistemas, os projetistas não precisam se preocupar com aspectos físicosdo armazenamento de dados. Geralmente, isso se faz necessário quando o otimizador deconsultas do SGBD por si só não é su�ciente para responder aos requisitos de desempenhodo sistema.

Com base nos argumentos apresentados, podemos dizer que as alternativas A, B, C e Dapresentam informações corretas sobre os SGBDs relacionais. Portanto, por eliminação che-gamos à alternativa E.

A resposta também pode ser alcançada de forma direta, sendo necessário para isso o co-nhecimento das operações básicas da Álgebra Relacional, base conceitual dos bancos e dalinguagem de SQL. As operações de junção nada mais são que as realizadas pelo operadorJOIN, da linguagem SQL. Enquanto as operações de união são realizadas pelo operadorUNION. As restrições são de�nidas pela cláusula WHERE.

Página 42 de 120www.handbookdeti.com.br

Page 44: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Já as projeções se referem a seleção de um subconjunto N de colunas, onde N é menorque o número total de colunas da relação. Ou seja, se tabela ALUNOS possui 5 colu-nas, o comando SELECT NOME,IDADE FROM ALUNOS é uma projeção, pois só foramselecionadas 2 das 5 colunas na consulta.

Página 43 de 120www.handbookdeti.com.br

Page 45: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

18. Assuntos relacionados: Banco de Dados, Nível de Abstração, Nível Físco, Nível de Visão,Nível Lógico,Banca: ESAFInstituição: Agência Nacional de Águas (ANA)Cargo: Analista Administrativo - Tecnologia da Informação e Comunicação / Desenvolvi-mento de Sistemas e Administração de Banco de DadosAno: 2009Questão: 18

O nível de abstração, que visa simpli�car a interação entre usuários e o sistema de banco dedados, é o

(a). físico.

(b). de visão.

(c). lógico.

(d). de esquema.

(e). de modelo.

Solução:

Um sistema de banco de dados é a junção de uma coleção de arquivos inter-relacionadoscom um conjunto de programas que permitem aos usuários acessarem e modi�carem taisarquivos. Seu maior objetivo é proporcionar aos usuários uma visão abstrata dos dados, oque signi�ca ocultar determinados detalhes de como os dados são efetivamente armazenadose gerenciados.

Para que o sistema tenha um bom nível de usabilidade, é preciso que os dados sejam re-cuperados e�cientemente. A necessidade de e�ciência levou os desenvolvedores a utilizarestruturas de dados complexas para representar os dados na base de dados. Para ocul-tar dos usuários essa complexidade, níveis de abstração foram de�nidos, simpli�cando ainteração com o sistema:

• Nível Físico. Nível mais baixo de abstração que descreve como os dados são verdadei-ramente armazenados. O nível físico descreve detalhadamente as complexas estruturasde dados de baixo nível;

• Nível Lógico. Nível intermediário de abstração que descreve quais dados são arma-zenados na base de dados, além dos relacionamentos existentes entre tais dados. Nestenível, todo o banco de dados é descrito em termos de um pequeno número de estruturasrelativamente simples. Os administradores de bancos de dados usam os nível lógico deabstração para decidir quais informações serão armazenadas;

• Nível de Visão. Nível mais alto de abstração, descreve apenas parte do banco de da-dos. Apesar de utilizar estruturas simples, o nível lógico possui bastante complexidade,haja vista a variedade de informações armazenadas. Muitos usuários não necessitamde toda essa informação e, assim, o nível de visão proporciona diversas �visões� para amesma base de dados, simpli�cando a interação com o sistema.

O esquema de um banco de dados diz respeito aos objetos (tabelas, visões, índices, proce-dimentos armazenados, etc.) disponibilizados para um determinado grupo de usuários, nãoguardando relação com os níveis de abstração. Semelhantemente, o modelo de um banco dedados é a especi�cação das estruturas de dados e regras de negócio de um banco de dados,

Página 44 de 120www.handbookdeti.com.br

Page 46: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

incluindo Modelo Conceitual, Modelo Lógico e Modelo Físico.

A a�rmativa de acordo com a teoria apresentada encontra-se na opção B.

Página 45 de 120www.handbookdeti.com.br

Page 47: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

19. Assuntos relacionados: Banco de Dados, Indexação de Registros,Banca: ESAFInstituição: Secretaria do Tesouro Nacional (STN)Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento deSistemas de InformaçãoAno: 2008Questão: 17

Em termos de Bancos de Dados, a indexação mais adequada para o acesso e�ciente aosregistros, em consultas que considerem intervalos, para um pequeno número de linhas, cor-responde ao uso de índices

(a). de junção.

(b). de hashing.

(c). em árvores B.

(d). booleanos.

(e). funcionais.

Solução:

(A) INCORRETA

Um índice de junção é uma estrutura de dados usada para o processamento de consul-tas de junção (join queries) em bancos de dados. Os índices de junção usam técnicas depré-computação para aumentar o desempenho do processamento online de consultas e sãoúteis para conjuntos de dados que são atualizados com pouca frequência. Como essa opçãoapresenta uma restrição aos bancos de dados (e como há uma opção melhor, como serávisto), essa alternativa é incorreta.1

(B) INCORRETA

Índices de hashing são índices que usam tabelas hash para indexação. Neles, as chavesde pesquisa são organizadas como uma tabela hash, em que as chaves de pesquisa são asso-ciadas às entradas onde essas chaves ocorrem. Uma tabela hash (ou tabela de dispersão),por sua vez, é uma estrutura de dados que associa chaves de pesquisa a valores. Seu obje-tivo é, a partir de uma chave simples, fazer uma busca rápida e obter o valor desejado. Pormapearem uma chave de pesquisa a um determinado índice de forma direta, as tabelas hashproporcionam um tempo médio de busca constante, ou seja, O(1). Em virtude de seu altodesempenho, as tabelas hash são tipicamente utilizadas na indexação de grandes volumes deinformações em bancos de dados e na criação de esquemas associativos de acesso às memóriacache.

Após a construção do índice, quando uma consulta é realizada, a função hash é aplicadaà chave de pesquisa para identi�cação do slot onde as chaves ocorrem. As entradas dasocorrências são, então, recuperadas.

Apesar de e�cientes para buscar um único valor e como valores próximos são normalmentemapeados para posições distantes na tabela, uma abordagem de tabelas hash para consultas

1Fonte: E�cient Join-Index-Based Join Processing: A Clustering Approach, disponível emhttp://www.cs.umn.edu/tech_reports_upload/tr1999/99-030.pdf

Página 46 de 120www.handbookdeti.com.br

Page 48: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

com intervalos se mostrará ine�ciente, visto que a conferência dos valores nos intervalos serácustosa.

(C) CORRETA

Índices em árvores B, como o nome diz, são índices que usam árvores B. Uma árvore Bé uma estrutura de dados baseada em árvores que mantém os dados ordenados e que per-mite buscas, acesso sequencial, inserções e remoções em tempo logarítmico amortizado. Porser otimizada para sistemas que leem e escrevem grandes quantidades de dados, elas sãobastante utilizadas na implementação de bancos de dados e sistemas de arquivos.

As árvores B são uma generalização das árvores de busca binárias, pois cada nó pode possuirmais de dois �lhos. Mais formalmente, uma árvore B de ordem m (com m o número máximode �lhos de um nó) é uma árvore que satisfaz as seguintes propriedades:

1. Cada nó possui, no máximo, m �lhos;

2. Cada nó (exceto a raiz), possui, no mínimo, m/2 �lhos;

3. A raiz possui pelo menos dois �lhos quando não for um nó folha;

4. Todas as folhas aparecem no mesmo nível;

5. Um nó não folha com k �lhos possui k-1 chaves.

Como exemplo, a Figura 4 exibe o desenvolvimento de uma árvore B de ordem 3 à medidaque os elementos �1�, �2�, �3�, �4�, �5�, �6� e �7� são adicionados a ela. Como exibido, sempreque um nó não é capaz de armazenar mais elementos, aquele nó é dividido e a árvore, reba-lanceada, de modo que suas propriedades ainda sejam mantidas.

A altura de uma árvore B é, sempre, O(log n) e uma busca por um valor exato em umaárvore B é, também, O(log n). No entanto, quando é necessário buscar por um intervalo,como, internamente os nós das árvores B estão ordenados e a busca pelos limites é O(log n),a recuperação dos valores do intervalo buscado é feita rapidamente, tornando as árvores Ba melhor estrutura de dados para criação do índice nesse caso e, portanto, a alternativa c éa correta.

(D) INCORRETA

�Índice booleano� não é um conceito amplamente divulgado na literatura. No entanto,existem índices chamados �índices bitmap� que armazenam seus dados como vetores de bitse respondem a consultas através da execução de operações lógicas bit a bit nesses vetoresde bits. Esse tipo de índice foi projetado para casos em que os valores de uma variável serepetem com grande frequência. Devido a forma como são construídos, o índice de bitmappossui vantagens de desempenho para esse caso, mas não na busca de intervalos.

(E) INCORRETA

Índices funcionais são índices de�nidos pelo usuário do sistema de banco de dados. Comeles, é possível que o usuário do banco de dados de�na suas próprias funções de indexação.Esse tipo de índice adiciona �exibilidade ao banco de dados e pode ser usado com tiposde�nidos pelo usuário. Por poderem ser implementados da forma que melhor convier aousuário e não um algoritmo propriamente dito, índices funcionais não são a solução paraesta questão.

Página 47 de 120www.handbookdeti.com.br

Page 49: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Figura 4: desenvolvimento de uma árvore B de ordem 3 à medida que os elementos �1�, �2�, �3�,�4�, �5�, �6� e �7� são adicionados.

Página 48 de 120www.handbookdeti.com.br

Page 50: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

20. Assuntos relacionados: Banco de Dados, ACID,Banca: ESAFInstituição: Controladoria-Geral da União (CGU)Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento deSistemas de InformaçãoAno: 2008Questão: 54

O termo integridade se refere à precisão ou correção de dados. Em um banco de dadosrelacional, as restrições de integridade têm importância crucial, pois fornecem uma formade garantir que as mudanças realizadas pelos usuários não resultem na perda de consistênciados dados. Com relação às restrições de integridade, é incorreto a�rmar que uma restriçãode

(a). variável de relação especi�ca os valores válidos para uma determinada variável derelação, e é veri�cada quando essa variável de relação é atualizada.

(b). tipo especi�ca os valores válidos para um determinado tipo, e é veri�cada duranteinvocações do seletor correspondente.

(c). atributo especi�ca os valores válidos para um determinado atributo, e nunca deveser violada.

(d). banco de dados especi�ca os valores válidos para um determinado banco de dados,e é veri�cada no instante de COMMIT.

(e). domínio especi�ca que o valor de um atributo não pode pertencer a mais de umdomínio.

Solução:

Autores diferentes costumam classi�car as restrições de integridade de forma diferente. Em[1], por exemplo, as restrições de integridade são classi�cadas como restrições de tipo (do-mínio), de atributo, de variáveis de relação, de banco de dados, de transição de estados,de chaves, de integridade referencial e restrições quanto ao momento de veri�cação. Em[2] as encontramos como restrições de domínio, de chave, de formas de relacionamento e deintegridade referencial. Já em [3] elas são classi�cadas como restrições de domínio, de chave,de integridade referencial, de integridade de entidade e não-nulo.

Para a elaboração desta questão, há indícios de que as de�nições encontradas em [1] fo-ram usadas. Nela, o conceito apresentado de maneira incorreta é o descrito na alternativae, dado que a descrição apresentada de�ne, de maneira errônea, o que é uma restrição dedomínio.

Uma restrição de domínio é uma restrição que especi�ca que, dentro de cada tupla do bancode dados relacional, o valor de cada atributo A deve ser um valor pertencente ao domíniode A. Em outras palavras, uma restrição de domínio testa os valores inseridos no bancode dados e as consultas realizadas para garantir que os valores inseridos sejam condizentescom os domínios das variáveis armazenadas. O domínio de um atributo envolve seu tipo dedados, o intervalo de valores possível que esse atributo pode possuir, seu tamanho máximo,e se existe a possibilidade de valores nulos em A.

Os tipos de dados associados aos domínios incluem os tipos de dados numéricos padrão(como inteiros e números reais de representados por ponto �utuante), caracteres, booleanos,

Página 49 de 120www.handbookdeti.com.br

Page 51: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

strings de comprimento �xo e variável, data, hora, timestamp e, em alguns casos, moeda. Épossível, também, como citado, especi�car subconjuntos de valores de um tipo de dado oupor uma enumeração de valores.

Um domínio, por sua vez, é um conjunto de valores atômicos. Por atômico entendemos quecada valor no domínio é indivisível no que diz respeito ao modelo relacional. Um métodocomum para a especi�cação de um domínio é de�nir um tipo de dados do qual os valores dedados que formam o domínio sejam retirados. Também é útil especi�car um nome para essedomínio, de modo a ajudar na interpretação de seus valores. Alguns exemplos de domíniosão (com o nome do domínio à esquerda e sua descrição à direita):

• Número de CPF: o conjunto de onze dígitos válidos do número de CPF;

• Média de pontos: possíveis valores de médias computadas para um determinadoaluno. As médias devem ser não-negativas e inferiores à média máxima atingível.

Em SQL é possível criar um domínio através do comando �CREATE DOMAIN�. No exemploabaixo, é exibido um comando para a criação do domínio NUMERO_CPF em SQL:

CREATE DOMAIN NUMERO_CPF AS CHAR(11);

Esclarecimentos sobre as outras Alternativas

Apesar de sabermos que as outras alternativas estão corretas, convém fazer comentáriosadicionais sobre cada uma delas para melhor compreensão dos conceitos.

Restrição de variável de relação

A restrição de variável de relação, ou de tuplas, é uma restrição sobre uma tupla individuale pode incorporar restrições sobre atributos da mesma. Como essa restrição é veri�cadasempre que a variável de relação é atualizada, é possível adicionar restrições como um alunosomente poder ter estado de �formado� caso tenha cumprido o número mínimo de créditosde um curso.

Restrição de tipo

Uma restrição de tipo, como o nome diz, especi�ca que um atributo deva pertencer aotipo especi�cado e, portanto, a suas restrições.

Restrição de atributo

Uma restrição de atributo, como descrito no enunciado da questão, descreve os possíveisvalores válidos que o atributo deve assumir. Um exemplo é que o atributo SEXO só façasentido para os valores �F� (feminino) e �M� (masculino).

Restrição de banco de dados

Uma restrição de banco de dados é uma restrição que relaciona duas ou mais tuplas distin-tas e, portanto, é necessário que todas as restrições das tuplas envolvidas sejam atendidas.Um exemplo desse tipo de restrição é um pedido em uma loja virtual: o somatório dasquantidades de todos os itens não pode ser maior que a quantidade total de elementos dopedido.

Página 50 de 120www.handbookdeti.com.br

Page 52: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Referências

[1] Introdução a Sistemas de Banco de Dados, C. J. Date. 7a edição.[2] Sistemas de Banco de Dados, A. Silberchatz et al. 3a edição.[3] Sistemas de Banco de Dados, Ramez Elmasri e Shamkant B. Navathe. 4a edição.

Página 51 de 120www.handbookdeti.com.br

Page 53: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

21. Assuntos relacionados: Banco de Dados, ACID,Banca: ESAFInstituição: Secretaria do Tesouro Nacional (STN)Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento deSistemas de InformaçãoAno: 2008Questão: 14

Se uma restrição de integridade, classi�cada como restrição de banco de dados, ocorrer nomomento de um COMMIT de uma transação, imediatamente é executado um

(a). DROP.

(b). ROLLBACK.

(c). BEGIN_TRANSACTION.

(d). END_TRANSACTION.

(e). LOCKING.

Solução:

A integridade é a qualidade de garantir que os dados em um banco de dados estejam corre-tos. Geralmente, as restrições de integridade são de�nições de valores permitidos de serematribuídos a determinadas variáveis. No momento de uma inserção de dados, ou mesmo deuma atualização em dados já existentes, as restrições de integridade devem ser respeitadase, para tanto, veri�cações são efetuadas antes da inserção/atualização serem concretizadas.A questão natural que surge é o momento da veri�cação e da consequente execução da ope-ração solicitada (inserção/atualização).

A concorrência de operações em um banco de dados, isto é, a execução simultânea deoperações sobre uma mesma parte da base de dados disponível, é situação corriqueira a sertratada por SGBDs (Sistemas de Gerenciamento de Banco de Dados). Essa concorrênciasobre a base de dados, se mal gerenciada, pode provocar inconsistências nos dados alterados.

Neste contexto, o conceito de transação surge como uma opção de solução ao problemada manutenção da integridade face a concorrência de operações. A transação, isto é, umconjunto de operações sobre uma base de dados, deve possuir 4 características essenciais como intuito de auxiliar a garantia da integridade dos dados. Uma transação deve ser atômica,ou seja, todas as operações (ou comandos) que a compõem são executadas de uma maneiraúnica (todas as operações são executadas com sucesso ou nenhuma delas é executada). Umatransação deve ser isolada de outras transações e, consequentemente, ser executada de formaindependente das demais. Além disso, toda transação precisa ser durável, característica quegarante a manutenção das alterações decorrentes de uma transação concluída, mesmo queocorra alguma falha após essa conclusão (inclusive de fornecimento de energia elétrica). E,por �m, mas não com menos importância, uma transação deve ser consistente, ou seja, devefornecer a garantia de consistência dos dados em relação a um conjunto de regras de negóciopreviamente estabelecidas.

Para uma adequada execução, operações de controle sobre as transações são utilizadas.São elas:

• BEGIN_TRANSACTION: sinaliza o início da execução de uma transação;

Página 52 de 120www.handbookdeti.com.br

Page 54: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

• END_TRANSACTION: determina o término das operações de uma transação.Contudo, a partir deste ponto é necessário veri�car se as modi�cações introduzidas pelatransação podem ser permanentemente aplicadas à base de dados (comando COMMIT)ou se a transação deve ser abortada (comando ROLLBACK) devido a algum problemaocorrido;

• COMMIT (ou COMMIT_TRANSACTION): indica o término da transação comsucesso, isto é, todas as alterações na base de dados foram executadas e não serãodesfeitas;

• ROLLBACK (ou ABORT): sinaliza que a transação terminou sem sucesso e ne-nhuma modi�cação na base de dados foi efetuada.

Nas opções de resposta fornecidas na questão, os itens b), c) e d) citam operações de tran-sações dentre as quais encontra-se a operação ROLLBACK, resposta para a pergunta, con-forme a teoria explanada até aqui. Mesmo de posse da resposta, cabe um comentário sobreos outros dois termos citados dentre as opções de resposta: DROP e LOCKING.

O comando DROP faz parte da DDL (Data De�nition Language) de um banco de dados,sendo responsável por apagar itens do catálogo do banco em conjunto com outras diretivas,como pode ser observado, por exemplo, no comando DROP TABLE que serve para apagaruma tabela do banco de dados, ou ainda no comando DROP DATABASE que serve paraapagar o próprio banco de dados.

LOCKING (ou congelamento) é um mecanismo presente em SGBDs para tentar garan-tir o controle de concorrência. Nada mais é do que a ação, tomada mediante uma transação,de indisponibilizar temporariamente parte da base de dados para as demais transações. Éuma atitude que deve ser evitada por propiciar a ocorrência de deadlocks, isto é, impassesgerados por várias transações que disputam recursos e acabam provocando uma dependênciacircular, sem conseguirem atingirem o �nal de suas execuções.

Página 53 de 120www.handbookdeti.com.br

Page 55: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

22. Assuntos relacionados: Banco de Dados, Categorias de Linguages de Banco de Dados,Data De�nition Language (DDL), Data Manipulation Language (DML), Data Control Lan-guage (DCL), Data Query Language (DQL), Transaction Control Language (TCL), SQL,Banca: ESAFInstituição: Secretaria do Tesouro Nacional (STN)Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento deSistemas de InformaçãoAno: 2008Questão: 11

Um SBGD (Sistema Gerenciador de Bancos de Dados) possui um compilador para umadeterminada linguagem, cuja função é o processamento de declarações, a �m de identi�caras descrições dos componentes do esquema conceitual do Banco de Dados. Tal linguagem éde

(a). consulta estrutura (SQL).

(b). de�nição de armazenamento (SDL).

(c). manipulação de dados (DML).

(d). de�nição de visão (VDL).

(e). de�nição de dados (DDL).

Solução:

Os sistemas gerenciadores de bancos de dados utilizam diferentes linguagens para de�nir emanipular o banco de dados, além de realizar outras atividades. Tais linguagens podem serclassi�cadas diversas categorias, entre as quais as mais populares são:

• DDL (Data De�nition Language) ou (Linguagem de De�nição de Dados);

• DML (Data Manipulation Language) ou (Linguagem de Manipulação de Dados);

• DCL (Data Control Language) ou (Linguagem de Controle de Dados);

• DQL (Data Query Language) ou (Linguagem de Consulta de Dados);

• TCL (Transaction Control Language) ou (Linguagem de Controle de Transações).

Para de�nir e exempli�car cada uma das categorias, vamos nos ater aos bancos de dadosrelacionais, pois são estes os mais populares e cobrados em provas de concursos. No entanto,vale ressaltar que estas e outras categorias de linguagens de SGBDs existem para as demaistecnologias de bancos de dados, como a hierárquica, a de rede, a orientada a objetos etc.

DDL (Data Defnition Language)

Em termos conceituais, a DDL contém o conjunto de comandos utilizados para descre-ver e criar a estrutura do banco de dados. Os comandos que compõe a DDL são os quepermitem criar novas tabelas, views, índices, e outros elementos de dados. Exemplos típicosde comandos DDL são mostrados a seguir.

CREATE TABLE (Cria uma tabela)

DROP TABLE (Exlui uma tabela)

ALTER TABLE ADD COLUMN (Adiciona uma coluna a uma tabela)

CREATE INDEX (Cria um índice)

ALTER INDEX (Altera um índice)

CREATE VIEW (Cria uma view)

Página 54 de 120www.handbookdeti.com.br

Page 56: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

DML (Data Manipulation Language)

A DML contém o conjunto de comandos utilizados para manipular os dados, o que deve serentendido como a criação de novos registros nas tabelas, além da atualização e da exclusãode registros já existentes. Os comandos que compõe a DML são, basicamente, os seguintes.

INSERT (Cria um novo registro de dados)

UPDATE (Atualiza um registro de dados)

DELETE (Exclui um registro de dados)

DCL (Data Control Language)

Os comandos que compõe a DCL têm por �nalidade, basicamente, permitir o controle deaspectos não funcionais do banco de dados, como a segurança dos dados. São os comandosDCL que permitem a criação e exclusão de usuários, a criação de per�s de acesso, a altera-ção de senhas, e as operações de concessão e revogação de acesso aos diversos elementos dedados. Exemplos típicos de comandos DCL são mostrados a seguir.

GRANT (Autoriza ao usuário executar uma operação sobre algum elemento de dado)

REVOKE (Revoga do usuário o direito de executar uma operação)

ALTER PASSWORD (Altera a senha de um usuário)

CREATE ROLE (Cria um perfil de acesso)

DQL (Data Query Language)

A DQL é formada pelo conjunto de comandos e operadores que permitem a realizaçãode consultas no banco de dados. No âmbito dos bancos de dados relacionais, o único co-mando DQL é o SELECT. No entanto, a DQL engloba uma vasta quantidade de cláusulase operadores, que permite consultar o banco de dados de inúmeras formas.

As principais cláusulas da DQL são as seguintes:

FROM (Utilizada para especificar a tabela que se vai selecionar os registros)

WHERE (Utilizada para especificar as condições que devem reunir os registros que

serão selecionados)

GROUP BY (Utilizada para separar os registros selecionados em grupos específicos)

HAVING (Expressar a condição que deve ser satisfeita por cada grupo selecionado)

ORDER BY (Ordena os registros selecionados)

DISTINCT (Selecionar dados sem repetição)

Com relação aos operadores lógicos e de comparação, merecem destaque os seguintes:

AND (E lógico)

OR (OU lógico)

NOT (Negação lógica)

< (Menor que)

> (Maior que)

<> (Diferente de)

<= (Menor ou Igual que)

>= (Maior ou Igual que)

= (Igual a)

BETWEEN (Utilizado para especificar um intervalo de valores)

LIKE (Utilizado na comparação de padrões de cadeias de caracteres)

Página 55 de 120www.handbookdeti.com.br

Page 57: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Por �m, merecem destaque as funções de agregação, que adicionam à DQL a capacidadede agregar os resultados de uma consulta em um único valor. As principais funções deagregação são as seguintes:

AVG (Calcula a média dos valores de um campo determinado)

COUNT (Calcula o número de registros da seleção)

SUM (Calcula a soma de todos os valores de um campo determinado)

MAX (Calcula o valor mais alto de um campo determinado)

MIN (Calcula o menor valor de um campo determinado)

TCL (Transaction Control Language)

Finalizando as categorias de linguagens, temos a TCL, cujos comandos permitem controlara execução das transações em um SGBD. Os comandos TCL mais comuns são os seguintes:

BEGIN TRANSACTION (Define o início de uma transação de banco de dados)

COMMIT (Confirma todas as mudanças permanentemente)

ROLLBACK (Descarta todas as mudanças nos dados desde que o último COMMIT)

SET TRANSACTION (Modifica opções da transação, como o nível de isolamento)

Diante de toda a teoria exposta, podemos a�rmar que a resposta da questão é a alternativaE � DDL (Data De�nition Language).

Página 56 de 120www.handbookdeti.com.br

Page 58: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

23. Assuntos relacionados: SGBD, Otimizador de Consultas, Data Manipulation Language(DML), Data De�nition Language (DDL),Banca: ESAFInstituição: Secretaria do Tesouro Nacional (STN)Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento deSistemas de InformaçãoAno: 2008Questão: 13

Em um SGBD (Sistema Gerenciador de Bancos de Dados), as requisições de manipulaçãode dados são processadas por um componente capaz de determinar uma maneira e�cientede implementá-las. Tal componente é o

(a). processador da linguagem de manipulação de dados (DML).

(b). gerenciador tem tempo de execução.

(c). otimizador.

(d). processador da linguagem de de�nição de dados (DDL).

(e). esquema físico.

Solução:

Um Sistema Gerenciador de Bancos de Dados (SGBD) é composto por vários módulos, comatribuições especí�cas. A Linguagem de De�nição de Dados (DDL � Data De�nition Lan-guage), responsável por construções declarativas dos objetos da base de dados, precisa deum processador de DDL (ou compilador) que lhe interprete os comandos. Tal compi-lador processa as de�nições de esquema, especi�cados na DDL, e armazena descrições dosesquemas (meta-dados) no catálogo do SGBD. Da mesma forma, a Linguagem de Mani-pulação de Dados (DML � Data Manipulation Language), que permite o �processamento�ou manipulação dos dados armazenados, faz uso de um processador de DML dedicado àtarefa de compilar os comandos DML em códigos-objeto para acesso à base de dados. Essasrequisições de acesso são gerenciadas pelo processador da base de dados em tempo deexecução (runtime database processor), que recebe as operações de atualização ou obten-ção de dados e, quando necessário, transporta tais dados para �fora� do banco de dados, ematendimento às consultas efetuadas.

Um consulta expressa em uma linguagem de alto-nível, como a linguagem SQL, deve pri-meiramente ser escaneada, �parseada� e validada. O processo de escaneamento identi�caos tokens da linguagem no texto da consulta, ao passo que o parser veri�ca a sintaxe dapesquisa para determinar se houve uma formulação segundo as regras gramaticais impostas.A etapa de validação veri�ca se os atributos e relações presentes na consulta são válidos ese fazem sentido semanticamente face ao esquema do banco de dados. Em seguida, umaestratégia de execução para recuperação do resultado da consulta precisa ser de�nida. Ge-ralmente, uma consulta possui diversas estratégias de execução. O módulo otimizador deconsultas é responsável por elaborar um plano de execução mais adequado para obter oresultado desejado da forma mais e�ciente possível.

As quatro primeiras alternativas apresentadas como possíveis respostas à questão apresen-tam elementos que constituem um SGBD, sendo que o item c) exibe a resposta correta,conforme à teoria explanada. A alternativa e) exibe não um elemento de SGBD, mas simum componente da arquitetura de um banco de dados baseada em três esquemas: esquema

Página 57 de 120www.handbookdeti.com.br

Page 59: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

físico (ou esquema interno, ou nível interno), esquema conceitual (ou nível conceitual) eesquema(s) externo(s) (ou nível de visão). O objetivo dessa arquitetura em três esquemas éseparar as aplicações de usuário da estrutura física do banco de dados.

Página 58 de 120www.handbookdeti.com.br

Page 60: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

24. Assuntos relacionados: Bancos de Dados Distribuídos,Banca: CESGRANRIOInstituição: BNDESCargo: Analista de SuporteAno: 2008Questão: 68

A fragmentação de dados utilizada em um banco de dados distribuído tem como objetivodividir as informações de uma determinada relação R. Sobre essa fragmentação de dados,tem-se que

(a). os dados estão sempre replicados pelos diversos nós existentes, no caso das frag-mentações horizontal e vertical.

(b). não é possível reconstruir a relação original R por meio dos diversos fragmentosexistentes.

(c). na fragmentação vertical, ocorre a decomposição de atributos de R em um ou maisfragmentos.

(d). na fragmentação vertical, ocorre a decomposição de R em subconjuntos de dadosselecionados a partir de um critério comum de �ltragem relativo a um atributo deR.

(e). a reconstrução dos dados de uma fragmentação horizontal é possível através dainterseção dos subconjuntos de dados fragmentados.

Solução:

Como mencionado no enunciado da questão, a fragmentação de dados é uma técnica utilizadaem bancos de dados distribuídos, e tem como objetivo dividir as informações de uma deter-minada relação R por vários servidores (chamados nós) de banco de dados. A fragmentaçãopermite o processamento paralelo, que proporciona ganho de desempenho, especialmente,nas operações de consulta.

Os dois métodos de fragmentação mais comuns são a fragmentação horizontal e a frag-mentação vertical, ilustrados na Figura 5.

Figura 5: fragmentação de dados.

As características da fragmentação horizontal são as seguintes:

• cada fragmento contém um subconjunto das tuplas da relação completa;

• cada tupla de uma relação precisa ser armazenada em pelo menos um servidor;

• a relação completa pode ser obtida fazendo a união dos fragmentos;

• não há necessidade de replicação de dados entre os nós.

Página 59 de 120www.handbookdeti.com.br

Page 61: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Já na fragmentação vertical:

• relações são decompostas em conjuntos de atributos mantidos em servidores diferentes;

• cada fragmento é uma projeção da relação completa;

• a relação completa pode ser obtida fazendo a junção de todos os fragmentos;

• há necessidade de replicação da chave primária entre os nós para que seja possível aoperação de junção.

Como podemos notar, para se obter a relação completa é necessário realizar operações deunião (no caso da fragmentação horizontal) ou de junção (no caso da fragmentação vertical).Tais operações são de responsabilidade do SGBD, de modo a permitir aos usuários utilizaremo banco de dados de forma transparente, como se estivessem utilizando um SGBD não-distribuído.

Página 60 de 120www.handbookdeti.com.br

Page 62: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

25. Assuntos relacionados: Sistemas Distribuídos, Independência de Localização, Indepen-dência de Fragmentação, Independência do Sistema Operacional,Banca: CesgranrioInstituição: PetrobrasCargo: Analista de Sistemas - Processos de NegócioAno: 2008Questão: 64

Sistemas de informações distribuídos são aqueles em que dados são armazenados e proces-sados em diferentes localizações. Um banco de dados distribuído é um exemplo deste tipode sistema. Para o usuário, um sistema de banco de dados distribuído deve parecer exata-mente como um sistema não distribuído. Para que tal meta seja alcançada, alguns objetivossecundários são normalmente estabelecidos, entre os quais NÃO se inclui a

(a). independência de localização.

(b). independência de fragmentação.

(c). independência do sistema operacional.

(d). operação contínua.

(e). coordenação em um nó central.

Solução:

Operação contínua

Uma vantagem dos sistemas distribuídos (SD) é que eles devem fornecer maior con�abi-lidade e maior disponibilidade. A con�abilidade em SD implica no funcionamento semqueda em qualquer momento, isto acontece, porque sistemas distribuídos podem continuara funcionar mesmo diante da falha de algum componente individual, como um servidor iso-lado. A disponibilidade refere se ao funcionamento continuamente sem queda do sistemadurante um período, isso porque existe a possibilidade de replicação dos dados.

Não será preciso desligar o sistema para a execução de alguma tarefa, como adicionar um ser-vidor ou atualizar o sistema de banco de dados. Esta característica é fundamental, uma vezque os sistemas garantem o funcionamento/acesso dos dados/metadados, independente dotempo necessário para manipulá-los. Como os metadados estarão distribuídos (replicados)em todos os servidores, mesmo na presença de uma falha, algum servidor disponibilizará osmetadados para serem manipulados.

Independência de localização

Também conhecida por transparência de localização, é quando os usuários não precisamsaber onde estão �sicamente armazenados os dados. É uma característica desejável, poissimpli�ca programas e atividades em aplicações e permite que dados migrem de um servi-dor para outro, sem invalidar qualquer desses programas e atividades. Essa capacidade demigração é desejável porque permite que dados sejam deslocados pela rede em resposta aalterações de exigências de desempenho. Utilizando-se de metadados, a transparência dearmazenamento faz com que os usuários das aplicações desconheçam a forma (em que local)como os metadados são mantidos, simpli�cando a adição de novos servidores no sistemadistribuído.

Página 61 de 120www.handbookdeti.com.br

Page 63: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Independência de fragmentação

Um sistema admite fragmentação de dados se uma dada variável de relação armazenadapode ser dividida em pedaços (fragmentos) para �ns de armazenamento físico. A fragmen-tação é desejável por razões de desempenho: os dados podem ser armazenados no localem que são mais freqüentemente utilizados, de modo que a maior parte das operações sejaapenas local e o tráfego na rede seja reduzido.

Independência de sistema Operacional

O suporte a um sistema de banco de dados distribuídos implica que uma única aplica-ção seja capaz de operar de modo transparente sobre dados dispersos em uma variedadede banco de dados diferentes, gerenciados por vários SGBDs diferentes, em execução emuma variedade de máquinas diferentes que podem estar rodando em diversas plataformasdiferentes e uma variedade de sistemas operacionais. Onde o modo transparente diz respeitoà aplicação operar sob um ponto de vista lógico como se os dados fossem gerenciados porum único SGBD, funcionando em uma única máquina com apenas um sistema operacional.

Assim, um sistema distribuído consiste em adicionar o poder computacional de diversoscomputadores interligados por uma rede de computadores ou mais de um processador traba-lhando em conjunto no mesmo computador, para processar colaborativamente determinadatarefa de forma coerente e transparente, ou seja, como se apenas um único e centralizadocomputador estivesse executando a tarefa, portanto a alternativa E está incorreta.

Página 62 de 120www.handbookdeti.com.br

Page 64: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

26. Assuntos relacionados: Banco de Dados, Normalização de Banco de Dados, PrimeiraForma Normal (1FN), Segunda Forma Normal (2FN), Terceira Forma Normal (3FN),Banca: CESGRANRIOInstituição: BNDESCargo: Analista de SuporteAno: 2008Questão: 46

A relação Vendas, apresentada a seguir, foi montada para armazenar os dados de um sistemade vendas. Considere que atributo sublinhado representa o identi�cador da relação, e itemmarcado com * representa atributo multi-valorado.

Vendas(NumeroNota, CodProduto, DescProduto, NomeCliente, CPFCliente, Data,QtdeVendida, ValorUnitVendido, Peso, Telefone*)

Foram especi�cadas as seguintes dependências funcionais:

CodProduto → DescProduto, PesoNumeroNotaFiscal → Data, CPFClienteNumeroNotaFiscal, CodProduto → QtdeVendida, ValorUnitVendidoCPFCliente → NomeCliente

Considerando-se que para um dado valor em CPFCliente podem existir vários telefonesassociados e vice-e-versa, qual o conjunto de tabelas que armazena as informações apresen-tadas, atende às dependências funcionais e se encontra na terceira forma normal?

(a). Produtos(CodProduto, DescProduto, Peso)Vendas(NumeroNota, CodProduto, CPFCliente, QtdeVendida, ValorUnitVendido)Clientes(CPFCliente, NomeCliente, Data, Telefone*)

(b). Clientes(CPFCliente, NomeCliente)Telefone(CPFCliente, Telefone)NotasDeVenda(NumeroNota, CodProduto, CPFCliente, Data)Produtos(CodProduto, DescProduto, ValorUnitVendido, Peso)ProdutosVendas(NumeroNota, CodProduto, CPFCliente, QtdeVendida)

(c). Clientes(CPFCliente, NomeCliente)Telefone(CPFCliente, Telefone)Nota(NumeroNota, CPFCliente, Data)Produtos(CodProduto, DescProduto, Peso)NotasProdutos(NumeroNota, CodProduto, QtdeVendida, ValorUnitVendido)

(d). Vendas(NumeroNota, CodProduto, QtdeVendida, ValorUnitVendido, CPFCliente,Data)Produtos(CodProduto, DescProduto, Peso)Cliente(CPFCliente, NomeCliente)Telefone(CPFCliente, Telefone)

(e). Cliente(CPFCliente, Telefone, NomeCliente)Nota(CPFCliente, NumeroNota, CodProduto, QtdeVendida, ValorUnitVendido, Data)Produtos(CodProduto, DescProduto, Peso)

Solução:

Página 63 de 120www.handbookdeti.com.br

Page 65: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Uma dependência funcional da forma A→ B revela que cada valor do atributo A determinaexatamente um valor do atributo B. Por exemplo, na dependência funcional CodProduto→ DescProduto, Peso, supomos CodProduto = 1001, a esse CodProduto estará associadaexatamente uma dupla da forma DescProduto, Peso, por exemplo: Sabão em Pó Mix, 500g.Nenhuma outra dupla será permitida para ser representada pelo CodProduto 1001.

Um conjunto de tabelas está na terceira forma normal se todas as suas relações satisfa-zem as condições da terceira forma normal. Uma relação que está na terceira forma normalnecessariamente satisfaz as condições previstas na primeira e na segunda forma normal.

A primeira forma normal proíbe a existência de campos multivalorados. Logo, a alternativaA já pode ser eliminada, visto que o atributo �Telefone� da tabela Clientes é multivalorado.

Uma relação satisfaz as condições da segunda forma normal se atender as condições daprimeira forma normal e, além disso, respeitar a seguinte restrição: todos os atributos não-primo (atributos que não fazem parte de nenhuma chave candidata) só podem dependerfuncionalmente de conjuntos formados por todos os campos de qualquer chave candidata, enão somente de uma parte deles. Exemplo: na tabela NotasDeVenda, os campos CPFClientee Data dependem funcionalmente somente do campo NumeroNota, e não de toda a chaveprimária (NumeroNota, CodProduto), que por de�nição é uma chave candidata. Logo, aalternativa B também pode ser eliminada, uma vez que não atende nem à segunda formanormal.

Analisando a de�nição acima, podemos concluir que as relações da alternativa C satisfa-zem às condições da segunda forma normal. O que mais é necessário para que essas relaçõesestejam na terceira forma normal? Para responder essa pergunta é necessário conhecer maisalgumas de�nições. A primeira delas é o de atributo não-primo, que, basicamente, é umatributo que não pertence a nenhuma chave candidata da relação. Outro conceito é o dedependência funcional transitiva: quando uma dependência funcional X→ Z é determinadaindiretamente da forma X→ Y e Y→ Z. Voltando à de�nição da terceira forma normal. Elaexige que todo atributo não-primo da relação seja diretamente dependente (ou seja, não seja�transitivamente� dependente) de qualquer chave candidata. Não existe nenhuma relaçãotransitiva dos atributos não-primo nas relações descritas na alternativa C. Logo, essa é aresposta correta para a questão.

Finalizando, a relação Vendas da alternativa D e as relações Cliente e Nota da alterna-tiva E não satisfazem as condições da segunda forma normal. Portanto, também não estãona terceira forma normal.

Página 64 de 120www.handbookdeti.com.br

Page 66: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

27. Assuntos relacionados: Banco de Dados, Modelo Relacional, Normalização de Banco deDados, Primeira Forma Normal (1FN),Banca: CESGRANRIOInstituição: PetrobrasCargo: Analista de Sistemas - Eng. de SoftwareAno: 2008Questão: 23

É correto a�rmar que qualquer relação válida de um modelo relacional:

(a). pode apresentar tuplas duplicadas, desde que não haja chaves candidatas de�nidas.

(b). em seus atributos ordenados da esquerda para a direita, de acordo com a de�nição.

(c). tem suas tuplas naturalmente ordenadas, para �ns de localização.

(d). tem um índice físico para cada chave candidata, incluindo a chave primária.

(e). está, pelo menos, na primeira forma normal.

Solução:

Conceitualmente, em um banco de dados relacional, as relações podem ser de�nidas comoum conjunto de tuplas. Uma tupla é uma sequência ordenada de atributos e representa,usualmente, um objeto do mundo real e suas informações. Todas as tuplas em uma mesmarelação possuem o mesmo conjunto de atributos. Entretanto, em uma relação, elas devempreservar o que é chamado de integridade existencial, que, basicamente, implica que tuplasiguais (com todos os valores dos seus atributos iguais) não são permitidas. Caso contrário,não temos uma relação.

A forma de garantir a integridade existencial é de�nir uma chave primária, que, obrigato-riamente, deve ser não-nula e única em toda relação. Logicamente, sendo a chave primáriaúnica, as tuplas duplicadas não serão permitidas e a relação estará garantida.

Deve �car clara a diferença entre tabela e relação. Uma tabela nada mais é do que umconjunto de linhas e colunas. Já as relações, que já foram de�nidas acima, são implementa-das �sicamente em tabelas, que, obviamente, devem atender às condições exigidas em umarelação. Ou seja, nem toda tabela representa uma relação.

Na de�nição da primeira forma normal dada por Date, uma tabela está na primeira formalnormal se, e somente se, for isomór�ca à alguma relação. Isso quer dizer que, especi�camente,a tabela deve atender às cinco condições abaixo:

• não existe uma ordenação das linhas de cima para baixo;

• não existe uma ordenação das colunas da direita para esquerda;

• não existem linhas duplicadas;

• qualquer interseção linha-coluna deve conter exatamente um valor no domínio aplicávele nada mais;

• todas as colunas são regulares, no sentido de não possuírem componentes ocultos comoidenti�cadores de linhas, identi�cadores de colunas, identi�cadores de objetos ou times-tamps ocultos. Veja nas Tabelas 3, 4 e 5 um exemplo de cenário em que a informaçãocontida em uma tabela que não está na 1FN é transportada para outras tabelas queestão na 1FN.

Página 65 de 120www.handbookdeti.com.br

Page 67: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

idPessoa nmPessoa dtAniversario nrTelefones1 João Roberto 01/05/1980 9311-9654 - 3698-57412 Juliana Gomes 28/02/1985 3232-4521 - 6352-9821 - 3987-88553 Talita Brandão 03/12/1988 5561-9874

Tabela 3: exemplo de tabela que não está na 1FN.

idPessoa nmPessoa dtAniversario1 João Roberto 01/05/19802 Juliana Gomes 28/02/19853 Talita Brandão 03/12/1988

Tabela 4: exemplo de tabela que está na 1FN.

idTelefone idPessoa nrTelefone1 1 9311-96542 1 3698-57413 2 3232-45214 2 6352-98215 2 3987-88556 3 5561-9874

Tabela 5: exemplo de tabela que está na 1FN.

Dada a exposição teórica, podemos analisar as alternativas da questão:

a. falsa, uma relação válida não permite tuplas duplicadas.

b. falsa, a ordenação dos atributos não de�ne a relação.

c. falsa, a ordenação das linhas não de�ne a relação.

d. falsa, a relação é uma de�nição no nível conceitual. Os índices físicos são de�nidos nonível físico e não in�uenciam no conceito de relação. Geralmente, esses índices podemser livremente criados para qualquer conjunto de atributos, já a obrigação citada deserem criados para cada chave candidata não existe e não faz nenhum sentido.

e. verdadeira, pois, por de�nição, uma tabela representa uma relação se, e somente se, atabela está na primeira forma normal.

Página 66 de 120www.handbookdeti.com.br

Page 68: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

28. Assuntos relacionados: Banco de Dados, Normalização de Banco de Dados, PrimeiraForma Normal (1FN), Segunda Forma Normal (2FN), Terceira Forma Normal (3FN),Banca: CESGRANRIOInstituição: PetrobrasCargo: Analista de Sistemas - Eng. de SoftwareAno: 2008Questão: 25

As informações a seguir são comuns às questões de número 5 ao 8

Considere as tabelas de um banco de dados relacional descritas abaixo, onde os camposque compõem chaves primárias estão assinalados com *.

TABELA CAMPOSCLIENTE *CODIGO_C, CPF, NOME, CIDADEPRODUTO *CODIGO_P, DESCRICAO, PRECOVENDA *CODIGO_C, *CODIGO_P, CPF, DATA, QUANTIDADE

Há uma chave estrangeira de VENDA para CLIENTE com base nos campos CODIGO_Ce de VENDA para PRODUTO com base nos campos CODIGO_P. O campo CPF é chavecandidata para CLIENTE e também é armazenado na tabela VENDA. Os campos NOMEe DESCRICAO também são chaves candidatas de suas respectivas tabelas. Os campos CI-DADE, PRECO, DATA e QUANTIDADE admitem valores repetidos.

Sobre as formas normais a que as tabelas satisfazem, assinale a a�rmativa correta.

(a). CLIENTE satisfaz à segunda forma normal (2FN), mas não à terceira (3FN).

(b). PRODUTO satisfaz à segunda forma normal (2FN), mas não à terceira (3FN).

(c). VENDA satisfaz à segunda forma normal (2FN), mas não à terceira (3FN).

(d). VENDA não satisfaz à segunda forma normal (2FN).

(e). As três tabelas satisfazem à terceira forma normal (3FN).

Solução:

Primeiramente, vamos de�nir o que é dependência funcional. Dizemos que B é funcional-mente dependente de A (A→ B) se, para cada valor de A, existe exatamente um atributo B.Um exemplo prático é cidade ← estado, uma cidade A implicará em exatamente um estadoB correspondente. No caso, A é o determinante e B é o dependente.

A dependência funcional trivial indica que um determinante com mais de um atributopode determinar seus próprios membros quando isolado. Exemplo: {banco, agencia} →{agencia}. A dependência funcional não-trivial indica que um determinante identi�ca outroatributo qualquer {banco, agencia} → {cidade}.

Se um atributo A determina B e se B determina C, podemos dizer que A determina Cde forma transitiva. Isto é, existe uma dependência funcional transitiva de A para C. Exem-plo: cidade → estado, estado → pais, então cidade → pais.

Uma chave candidata é um atributo ou conjunto de atributos que é único dentre todosos registros. Já a chave primária é uma chave escolhida entre as chaves candidatas para sero identi�cador principal da tabela.

Página 67 de 120www.handbookdeti.com.br

Page 69: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Outra de�nição importante é a do atributo não-primo, que é um atributo que não ocorreem nenhuma das chaves candidatas da tabela.

Sabemos que uma tabela está na segunda forma normal se ela está na primeira forma nor-mal e não existe atributo não-primo na tabela que seja funcionalmente dependente de algumsubconjunto próprio de qualquer chave candidata. Melhor dizendo: todas as colunas quenão fazem parte de nenhuma chave candidata dependem de todas as colunas que compõemqualquer chave candidata. Quando só há uma chave candidata (no caso a primeira) e elaé composta por somente um atributo, automaticamente a tabela estará na segunda formanormal se já tiver atendido às condições da primeira forma normal.

Sendo assim, já podemos notar que a tabela CLIENTE e a tabela PRODUTO estão nasegunda forma normal garantidamente. Já ao analisarmos a tabela VENDA poderíamos nosenganar ao acharmos que pelo fato de CPF ser dependente funcionalmente de CODIGO_C,estaríamos violando a condição exigida da segunda forma normal, já que CODIGO_C é umsubconjunto próprio da chave primária. Essa conclusão seria verdadeira se não fosse pelofato de {CPF,CODIGO_P} ser uma chave candidata, tornando o atributo CPF primo, ouseja não não-primo. Concluímos, assim, que a tabela VENDA está na segunda forma normal.

Uma tabela está na terceira forma normal se qualquer atributo não-primo é não transi-tivamente dependente de qualquer chave candidata da tabela. Ao analisarmos a tabelaCLIENTE, notamos que o atributo CIDADE é o único não-primo, sendo impossível, dessamaneira, haver dependência funcional em que uma chave candidata não seja o atributo de-terminante. Ou seja, todas as dependências funcionais são diretas a partir de qualquer chavecandidata e a tabela CLIENTE está na terceira forma normal. O único atributo não-primoda tabela PRODUTO é PRECO. Portanto, seguindo o mesmo raciocínio anterior, concluí-mos que PRODUTO está na terceira forma normal.

A tabela VENDA tem 2 atributos não-primo: DATA e QUANTIDADE. Como não hádependência funcional entre eles, essa tabela também está na terceira forma normal.

Logo, concluímos que todas as tabelas satisfazem à terceira forma normal e a alternativa aser marcada é a alternativa E.

Se continuássemos a analisar quais formas normais são atendidas pelas tabelas da ques-tão, chegaríamos à conclusão de que as tabelas CLIENTE e PRODUTO satisfazem à formanormal de Boyce Codd (FNBC), ao contrário da tabela VENDA, que não satisfaz. Umatabela que não satisfaz a forma normal de Boyce Codd (FNBC) pode ser identi�cada comas seguintes características:

• encontramos duas ou mais chaves candidatas ({CODIGO_C, CODIGO_P} e {CPF,CODIGO_P}, no caso da tabela VENDA);

• as chaves candidatas apresentam mais de um atributo (são compostas);

• todas as chaves candidatas têm um atributo em comum (CODIGO_P, no caso daschaves candidatas da tabela VENDA).

Página 68 de 120www.handbookdeti.com.br

Page 70: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

29. Assuntos relacionados: Modelo Relacional, Banco de Dados, Normalização de Banco deDados,Banca: FCCInstituição: TRT 2a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 40

Para eliminar a condição de existência de valores não atômicos em uma coluna de tabelarelacional,

(a). deve ser aplicada, no mínimo, a primeira Forma Normal.

(b). devem ser aplicadas, no mínimo, as quatorze regras de Codd.

(c). deve ser aplicada, no mínimo, a Forma Normal Boyce-Codd.

(d). deve ser aplicada, no mínimo, a terceira Forma Normal.

(e). devem ser aplicadas, no mínimo, as regras de integridade referencial.

Solução:

Para resolvermos a presente questão é bom relembrarmos alguns tipos de atributos existen-tes no Modelo Entidade-Relacionamento (MER), o signi�cado de Normalização de Dados,Super-chave, Chave-candidata, Chave-primária, dependência Funcional e dependência não-Transitiva entre atributos:

• cada entidade em um MER tem propriedades particulares, chamadas atributos, quea descrevem. Por exemplo, uma entidade EMPREGADO pode ser descrita pelo seunome, o trabalho que realiza, idade, endereço e salário. Uma entidade em particularterá um valor para cada um de seus atributos. Alguns atributos podem ser divididosem subpartes com signi�cados independentes. Por exemplo, Endereço de uma entidadepode ser dividido em Endereço da Rua, Cidade, Estado e CEP. Um atributo que écomposto de outros atributos mais básicos é chamado composto. Já, atributos quenão são divisíveis são chamados simples ou atômicos. Muitos atributos têm apenasum único valor. Tais atributos são chamados atributos univalorados (exemplo, Datade Nascimento de uma entidade qualquer). Em outros casos, um atributo pode terum conjunto de valores. Tais atributos são chamados de atributos multivalorados(exemplo, Telefone de Contato de uma entidade qualquer). Atributos multivaloradospodem possuir uma multiplicidade, indicando as quantidades mínima e máxima devalores;

• a Normalização de Dados é um processo formal, passo a passo, de análise dos atribu-tos de uma relação com o objetivo de evitar redundância de informação, eliminandoas chamadas anomalias de atualização (Inclusão, Exclusão Modi�cação). Baseia-se noconceito de FORMAS NORMAIS. Uma relação (tabela) é dita estar em uma determi-nada forma normal, se ela satis�zer a um conjunto especí�co de restrições;

• Super-chave: é qualquer subconjunto dos atributos de uma relação R cujos valoresnão se repetem em R;

• Chave-candidata: é uma super-chave que possua a menor quantidade possível deatributos (uma das Chaves-Candidatas deve ser �eleita� como Chave-primária);

• Dependência Funcional entre Atributos: se o valor de uma Atributo A permitedescobrir o valor de um outro Atributo B, dizemos que A determina funcionalmenteB (A → B). Por exemplo: NroMatricula → NomeAluno, idade, curso. Assim, sempreque o NroMatricula se repetir tem-se a repetição de NomeAluno, idade e curso;

Página 69 de 120www.handbookdeti.com.br

Page 71: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

• Dependência Não-Transitiva: ocorre quando cada atributo for funcionalmente de-pendente apenas dos atributos componentes da chave primária ou se todos os seusatributos não chave forem independentes entre si.

(A) CORRETA

Uma relação se encontra na Primeira Forma Normal (1FN) se todos os domínios de atributospossuem apenas valores atômicos (indivisível), e que o valor de cada atributo na tupla sejasimples. A 1FN não permite a construção de relações que apresentem atributos compostose nem possibilita a existência de atributos multivalorados em suas tuplas. Os únicos valoresde atributos permitidos devem ser simples e atômicos.

Para normalizar para a Primeira Forma Normal deve-se:

• Atributos compostos: cada um dos atributos compostos (ou não atômicos) deve ser�dividido� em seus atributos componentes;

• Atributos multivalorados:� quando a quantidade de valores for pequena e conhecida a priori, substitui-se oatributo multivalorado por um conjunto de atributos de mesmo domínio, cada ummonovalorado representando uma ocorrência do valor;

� quando a quantidade de valores for muito variável, desconhecida ou grande, retira-se da relação o atributo multivalorado, e cria-se uma nova relação que tem o mesmoconjunto de atributos chave, mais o atributo multivalorado também como chave,porém agora tomado como monovalorado.

(B) ERRADA

Na verdade, Edgard F. Codd, em 1985, estabeleceu 12 regras (�As 12 Regras de Codd�)que determinam o quanto um banco de dados é relacional. São elas:

1. Regra das informações em tabelas;

2. Regra de acesso garantido;

3. Regra de tratamento sistemático de valores nulos;

4. Regra do catálogo relacional ativo;

5. Regras de atualização de alto-nível;

6. Regra de sublinguagem de dados abrangente;

7. Regra de independência física;

8. Regra de independência lógica;

9. Regra de atualização de visões;

10. Regra de independência de integridade;

11. Regra de independência de distribuição;

12. Regra não-subversiva.

Algumas vezes as regras se tornam uma barreira e nem todos os SGBDs relacionais for-necem suporte a elas. Além de o número de regras estar errado, tal alternativa tambémnão representa a aplicação mínima necessária para atender o requisito da questão. Logo, aalternativa está ERRADA.

Página 70 de 120www.handbookdeti.com.br

Page 72: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

(C) ERRADA

Um relação é considerada estar na Forma Normal de Boyce-Codd (FNBC), quando:

• estiver na Primeira Forma Normal (1FN); e

• para cada chave candidata, todos os atributos que não participam da chave candidatasão dependentes não transitivos de toda a chave candidata.

Para Normalizar para a Forma Normal de Boyce-Codd seguem-se os mesmos passos da Ter-ceira Forma Normal (3FN). No entanto, tal alternativa, assim como a alternativaD, tambémnão representa a aplicação mínima necessária para atender o requisito da questão. Logo, aalternativa também está ERRADA.

(D) ERRADA

Que tal antes relembrarmos um pouco sobre relação na Segunda Forma Normal (2FN) ena Terceira Forma Normal (3FN)?

Uma relação está na 2FN quando:

• estiver na Primeira Forma Normal e;

• todos os atributos que não participam da chave primária são dependentes funcional-mente (diretos ou transitivos) de toda a chave primária.

Um relação é considerada estar na 3FN, quando:

• estiver na Segunda Forma Normal e;

• todos os atributos que não participam da chave primária são dependentes não transi-tivos de toda a chave primária.

Como vimos, uma relação que está na 3FN também estará na 2FN. Do mesmo modo, umarelação na 2FN também estará na 1FN. Como mencionamos na alternativa A, basta estarna 1FN para atender ao requisito da questão. Assim, concluímos que a alternava está ER-RADA por aplicar duas operações de normalização a mais do que o mínimo necessário.

(E) ERRADA

A Integridade Referencial é utilizada para garantir a Integridade dos dados entre as tabelasrelacionadas. Por exemplo, considere um relacionamento do tipo Um-para-Vários entre atabela Clientes e a tabela Pedidos (um cliente pode fazer vários pedidos). Com a IntegridadeReferencial, o banco de dados não permite que seja cadastrado um pedido para um clienteque ainda não foi cadastrado. Em outras palavras, ao cadastrar um pedido, o banco dedados veri�ca se o código do cliente que foi digitado já existe na tabela Clientes. Se nãoexistir, o cadastro do pedido não será aceito. Assim, a integridade referencial garante a nãocorrupção dos dados, de modo a não haver como existir um registro ��lho� sem um registro�pai�.

Página 71 de 120www.handbookdeti.com.br

Page 73: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

30. Assuntos relacionados: Banco de Dados, Primeira Forma Normal (1FN), Segunda FormaNormal (2FN), Terceira Forma Normal (3FN),Banca: FCCInstituição: TRT 18a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 45

Dadas as tabelas abaixo com os respectivos atributos, sendo chave os atributos grifados:

I PEDIDO (num-ped, data-ped, total-ped, cod-cliente, nome-cli, endereço-cli)

II ITEM (num-ped, cod-produto, qtde-prod, preço-total)

III PRODUTO (cod-produto, nome-prod, preço-unitário)

Encontra-se na 3FN o que consta em

(a). I, II e III.

(b). I, apenas.

(c). II, apenas.

(d). III, apenas.

(e). II e III, apenas.

Solução:

Como este assunto é muito cobrado nos concursos em geral, vamos explorar diversos conceitosimportantes para se resolver esta questão com con�ança.

• superchave: é um conjunto de um ou mais atributos que permite a identi�cação uní-voca de cada entidade em um conjunto de entidades. Na nomenclatura desta questão,uma superchave identi�ca de forma única cada linha de uma tabela. Por exemplo,na relação (conceito que o enunciado deveria utilizar no lugar de tabela) ITEM, oconjunto {num-ped; preço-total} é uma superchave, pois ele pode identi�car de formaúnica cada item dessa relação. É importante perceber que toda relação tem pelo menosuma superchave: conjunto de todos os seus atributos;

• chave candidata: é uma superchave tal que nenhum dos seus subconjuntos de atri-butos é uma superchave. Ou seja, se pudermos retirar pelo menos um atributo de umasuperchave e ela continuar sendo uma superchave, a superchave inicial não é uma chavecandidata. Por exemplo, quando tiramos o atributo preço-total da superchave {num-ped; preço-total}, continuamos com uma superchave num-ped, pois num-ped identi�caunivocamente cada elemento da relação ITEM. Portanto, {num-ped; preço-total} nãoé uma chave candidata. Outra forma de entender o signi�cado de chave candidata épensar que ela é um subconjunto mínimo de atributos capaz de identi�car de formaúnica cada item de uma relação. Não se esqueça que um relação pode ter mais de umachave candidata;

• chave primaria: é simplesmente uma das chaves candidatas de uma relação. É oprojetista que faz essa escolha, quando há mais de uma chave candidata;

• dependência funcional: se para cada valor de um atributo A, existe exatamente umvalor para o atributo B, dizemos que B é dependente funcional de A (A → B) e queA é o determinante de B. Um bom exemplo é formado pelos atributos CIDADE A eESTADO B. Como toda cidade implica em somente um estado, temos que A → B;

Página 72 de 120www.handbookdeti.com.br

Page 74: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

• dependência funcional parcial: em uma dependência do tipo A → B, se existir umsubconjunto de A tal que ele determine B, dizemos que B é dependente funcional parcialde A. Exemplo: em {CIDADE; BAIRRO} → ESTADO, como CIDADE → ESTADO,dizemos que ESTADO é dependente funcional parcial de {CIDADE; BAIRRO}. Casonão exista esse tipo de subconjunto de A, dizemos que B é dependente funcional totalde A;

• dependência funcional trivial: indica que um determinante com mais de um atri-buto determina seus próprios membros quando isolado. Exemplo: {banco; agencia} →{agencia}

• dependência funcional não-trivial: indica que um determinante identi�ca outroatributo qualquer {banco; agencia} → {cidade};

• dependência funcional transitiva: se um atributo A determina B e B determinaC, então, A determina C de forma transitiva. Exemplo: cidade → estado, estado →país, então cidade → país;

• atributo primo: atributo membro de qualquer chave candidata (pelo menos uma).Dois exemplos dentro desta questão são: cod-produto e num-ped. Perceba que todosos atributos de uma chave primária são primos;

• atributo não-primo: atributo que não ocorre em nenhuma chave candidata de umarelação. O atributo preço-unitário da relação PRODUTO é um exemplo de atributonão-primo;

• 1FN: ela diz respeito a atributos. Para que uma relação esteja na 1FN, ela não podeter nem atributos multivalorados nem relações aninhadas (objetos representados emmais de um registro);

• 2FN: ela diz respeito a dependência funcional parcial. Uma relação somente está na2FN se não houver atributo não-primo dependente funcional parcial de qualquer chavecandidata. Ou seja, se houver pelo menos um atributo não-primo dependente funcionalparcial de pelo menos uma chave candidata, a relação não estará na 2FN. Lembrandotambém que para uma relação estar na 2FN, ela também deve estar na 1FN;

• 3FN: ela diz respeito a dependência funcional transitiva. Para que uma relação estejana 3FN, ela não pode ter atributo não-primo dependente transitivamente de qualquerchave candidata. Ou seja, se houver pelo menos um atributo não-primo com depen-dência funcional transitiva de pelo menos uma chave candidata, a relação não estarána 3FN. Uma consequência é que para uma relação estar na 3FN, todos os atributosnão-primo devem depender somente de atributos primos. Lembrando também que parauma relação estar na 3FN, ela também deve estar na 2FN e na 1FN;

As dependência funcional de uma relação são determinadas pelo negócio, e não pelo o bancode dados em si. Por isso, o ideal seria o enunciado trazer quais são as dependências funcio-nais existentes em cada relação. Na falta dessa especi�cação, o que nos resta é apelar parao �bom-senso�.

Vamos analisar agora cada relação. Como o enunciado não menciona que algum atributopode ser multivalorado, concluímos que as 3 relações estão na 1FN.

PEDIDO (num-ped, data-ped, total-ped, cod-cliente, nome-cli, endereço-cli)

Como não há nenhuma chave candidata composta por mais de um atributo nesta rela-ção, não há como existir dependência funcional parcial. Portando, esta relação está na 2FN.Perceba que cod-cliente → nome-cli e que esses dois atributos são não-primos. Isso já basta

Página 73 de 120www.handbookdeti.com.br

Page 75: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

para concluirmos que esta relação NÃO está na 3FN.

ITEM (num-ped, cod-produto, qtde-prod, preço-total)

Nesta relação, há dois atributos não-primos (qtde-prod e preço-total) e uma chave can-didata {num-ped; cod-produto}. Veja que (1) num-ped não determina nem qtde-prod nempreço-total; (2) cod-produto não determina nem qtde-prod nem preço-total. Portanto, nãohá dependência funcional parcial e, por consequência, esta relação está na 2FN. Como nãohá dependência funcional transitiva, esta relação está na 3FN.

PRODUTO (cod-produto, nome-prod, preço-unitário)

Pelo mesmo motivo da relação PEDIDO, concluímos também que esta relação está na 2FN.Como só há um atributo não-primo, não há como existir dependência funcional transitiva.Concluímos, portanto, que esta relação também está na 3FN.

Pelo o exposto, é possível identi�car facilmente que a alternativa correta é a letra e.

Página 74 de 120www.handbookdeti.com.br

Page 76: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

31. Assuntos relacionados: Banco de Dados, Consulta SQL,Banca: CESGRANRIOInstituição: BNDESCargo: Analista de SuporteAno: 2008Questão: 60

As relações abaixo compõem uma base de dados em que atributos sublinhados são identi�-cadores e atributos em itálico são chaves estrangeiras.

Autor (CPFAutor, Nome, DataNascimento)Obra (TituloObra, DataConclusao, CPFAutor, CodigoAssunto)Editora (CNPJEditora, Nome, Local)Publicacao (TituloObra, CNPJEditora, DataLancamento )Assunto (CodigoAssunto, Descricao)

Que comando SQL apresenta como resultado a quantidade de publicações do assunto `Poli-cial' por editora?

(a). Select P.CNPJEditora, count(P.TituloObra)from Publicacao P inner join Obra Oon P.TituloObra = Obra.TituloObrainner join Assunto A on O.CodigoAssunto = A.CodigoAssuntowhere A.Descricao = `Policial'

(b). Select P.CNPJEditora, count(P.TituloObra)from Publicacao P, Obra O, Assunto Awhere P.TituloObra = O.TituloObraand O.CodigoAssunto = A.CodigoAssuntoand A.Descricao = `Policial'group by P.CNPJEditora

(c). Select P.CNPJEditora, count(P.TituloObra)from Publicacao P, Obra O, Assunto A, Editora Egroup by P.CNPJEditorahaving A.Descricao = `Policial'

(d). Select P.CNPJEditora, sum(P.TituloObra)from Publicacao P inner join Obra Oon P.TituloObra = Obra.TituloObrainner join Assunto A on O.CodigoAssunto = A.CodigoAssuntowhere A.Descricao = `Policial'group by P.CNPJEditora

(e). Select P.CNPJEditora, count(P.TituloObra)from Publicacao P left outer join Obra Oon P.TituloObra = Obra.TituloObraleft outer join Assunto A on O.CodigoAssunto = A.CodigoAssuntogroup by P.CNPJEditora

Solução:

Para encontrarmos o resultado da quantidade de publicações do assunto �Policial� por edi-tora, devemos ter em mente que precisamos utilizar a função de agrupamento groupby para

Página 75 de 120www.handbookdeti.com.br

Page 77: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

agrupar as editoras com mesmo CNPJ, e a função agregada count para contabilizar o nú-mero de registros de um determinado CNPJ.

(A) ERRADA

Inner join é uma operação de composição de relações condicionais e é usada na cláusulafrom. Sua sintaxe é relacao1 inner join relacao2 on condição.

O select em questão explora as relações de chave estrangeira entre os relacionamentos, ea execução dos dois inner join produzem um relacionamento de onde é possível extrair osCNPJs cujos valores do atributo Descricao de Assunto são �Policial�. O problema desseselect é que ele não agrupa os registros para contabilizar a quantidade de um determinadoCNPJ. Portanto, esta alternativa é errada.

(B) CORRETA

Os predicados da cláusula where do select em questão produzem a mesma relação obtida naalternativa A. Com uma diferença, ao obter os registros que contém a Descricao de Assuntoigual a �Policial�, agrupa-se as editoras de mesmo CNPJ para contabilizar a quantidade deeditoras para cada CNPJ por meio da função count no select. Portanto, esta é a alternativacorreta.

Vale destacar que na cláusula where as operações de = exploram os relacionamentos en-tre as relações existentes. Então, quando selecionamos os registros com Descricao igual a�Policial�, as operações de = garantem que estamos selecionando registros com mesmo Ti-tuloObra e CodigoAssunto.

(C) ERRADA

O candidato desatento tende a marcar esta alternativa, pois se esquece dos relacionamentosexistentes entre as relações. O select desta alternativa agruparia atributos CNPJEditorada relação Publicacao diferentes do atributo CNPJEditora da relação Editora. O mesmoé válido para os atributos de TituloObra de Obra e Publicacao. Portanto, esta alternativanão é a correta.

(D) ERRADA

O select desta alternativa utiliza a função sum para contabilizar a quantidade de um deter-minado CNPJ. Primeiramente, a função correta para essa �nalidade é a count, e segundo, afunção sum aceita como entrada um conjunto de números. Nesse select, a função sum recebeo parâmetro P.TituloObra, que não é um número. Portanto, esta alternativa é errada.

(E) ERRADA

O select desta alternativa não possui uma cláusula where que restringe o atributo Des-crição da relação Assunto à palavra �Policial�. Portanto, esta alternativa também não é acorreta.

Página 76 de 120www.handbookdeti.com.br

Page 78: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

32. Assuntos relacionados: Banco de Dados, SQL,Banca: CESGRANRIOInstituição: PetrobrasCargo: Analista de Sistemas - Eng. de SoftwareAno: 2008Questão: 26

Considere o comando em SQL apresentado a seguir.

SELECT C.CIDADE, AVG(P.PRECO)

FROM CLIENTE C, PRODUTO P, VENDA V

WHERE C.CODIGO_C = V.CODIGO_C AND P.CODIGO_P = V.CODIGO_P AND

P.PRECO > 100

GROUP BY C.CIDADE

HAVING AVG(P.PRECO) < 200

O que exibe esse comando?

(a). Para cada cidade, a média de preço de produtos vendidos a clientes da cidade comvalores acima de 100, se a média for menor que 200.

(b). Para cada cidade, a média de preço dos produtos vendidos a clientes da cidadecom valores entre 100 e 200.

(c). Para cada cidade, a quantidade de produtos vendidos com valores entre 100 e 200.

(d). Para cada cidade, a média de preço dos produtos vendidos a clientes da cidadeque compraram produtos de valores maiores do que 100 e cuja média de compraé menor do que 200.

(e). Apenas a cidade cuja média de preço dos produtos vendidos é a mais alta dentreas que tiveram média menor do que 200 e produtos vendidos com valores acimade 100.

Solução:

A primeira cláusula WHERE (C.CODIGO_C = V.CODIGO_C) irá implementar umajunção entre as tabelas CLIENTE e VENDA. Essa junção, caso fosse considerada sozinha,iria listar registros em que cada um iria representar uma venda de produto, mas com infor-mações adicionais do cliente: NOME e CIDADE.

Adicionando mais uma cláusula de junção (P.CODIGO_P = V.CODIGO_P ), será re-alizada uma junção com a relação já obtida anteriormente. Nesse caso, todos os produtosvendidos serão listados com suas respectivas informações de descrição, preço, data de quandofoi realizada a venda e as informações completas do cliente.

Entretanto, ao se usar a cláusula P.PRECO > 100, nem todos os produtos vendidos serãolistados. Serão listados somente aqueles cujo valor preço unitário for superior a 100.

A cláusula GROUP BY C.CIDADE irá agrupar as vendas dos produtos por cidade ereunirá informações, de acordo com AV G(P.PRECO), do preço médio unitário de cadaproduto, dentro, é claro, dos produtos que já possuem valor unitário maior do que 100.Exempli�cando: caso os clientes de uma determinada cidade X tenham comprado exata-mente 6 produtos com os preços 1000, 500, 120, 120, 100 e 50, somente serão consideradosos produtos com valor maior do que 100, que são os de 1000, 500, 120 e 120. A média

Página 77 de 120www.handbookdeti.com.br

Page 79: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

unitária desses produtos é (1000 + 500 + 120 + 120)/4 = 435.

Já a última cláusula HAVING AV G(P.PRECO) < 200 irá permitir que somente as cidadescujo preço médio dos produtos adquiridos seja menor que 200. A cidade X anteriormentecitada não irá entrar na relação �nal, já que a média dos preços unitários de seus produtosadquiridos é maior do que 200 (435).

Podemos concluir que a alternativa correta é a letra A. A letra D pode confundir um pouco,mas ela está errada, pois o que está sendo considerado é a média do preço do produtoHAVING AV G(P.PRECO) < 200 e não a média de compra.

Página 78 de 120www.handbookdeti.com.br

Page 80: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

33. Assuntos relacionados: Banco de Dados, SQL,Banca: FCCInstituição: MPUCargo: Analista de Desenvolvimento de SistemasAno: 2007Questão: 64

Funções de um banco de dados relacional que operam contra uma coleção de valores, masretornam um único valor, são

(a). agregadas tal como, por exemplo, MAX.

(b). escalares tal como, por exemplo, COUNT.

(c). escalares tal como, por exemplo, SUM.

(d). agregadas tal como, por exemplo, MID.

(e). agregadas tal como, por exemplo, LEFT.

Solução:

Um banco de dados relacional usa um conjunto de tabelas para representar tanto os dadoscomo as relações entre eles.

As consultas em um sistema de banco de dados, tipicamente, são realizadas segundo alinguagem SQL (Structured Query Language � Linguagem de Consulta estruturada), quepossui diversas partes, sendo que as principais são a:

• Linguagem de de�nição de dados (DDL). A DDL proporciona comandos para a de�-nição de esquemas de relações, exclusão de relações, criações de índices e modi�caçãonos esquemas das relações;

• Linguagem interativa de manipulação de dados (DML). A DML engloba comandospara inserção, exclusão e modi�cação de registros no banco de dados.

A estrutura básica de uma expressão em SQL é formada por três cláusulas: select, frome where. A cláusula select é utilizada para relacionar atributos desejados nos resultadosdas consultas. A cláusula from associa as relações que serão pesquisadas, e cláusula whereconsiste em um predicado (expressão booleana). Tipicamente, uma consulta tem a seguinteforma:

select a1, a2

from r1, r2

where p

Onde a1 e a2 representam os atributos a serem mostrados no resultado da consulta, r1 e r2as relações (tabelas) do banco e p o predicado.

As funções escalares são funções que retornam um único valor como resultado, baseadosobre um valor de entrada. Estão relacionadas à manipulação de strings, de números, dedata, funções do sistema e funções de conversão de tipos de dados. Alguns exemplos defunções escalares: UCASE (converte uma string para maiúsculo), LCASE (converte umastring para minúsculo) e LEN (retorna o tamanho da string).

As funções agregadas são funções que tem como entrada um conjunto de valores (valores

Página 79 de 120www.handbookdeti.com.br

Page 81: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

de uma coluna de uma tabela), e retornam um valor simples. Algumas funções agregadas:AVG (average � média), MIN (minimum � minímo), MAX (maximum � máximo), SUM(total - total) e COUNT (contagem).

(A) A função MAX é uma função agregada da linguagem SQL. Portanto, alternativa correta.

(B) A função COUNT também é uma função agregada. A função COUNT é muito uti-lizada para contar o número de registros de uma tabela. A SQL não permite utilizar afunção COUNT com a cláusula distinct.

(C) A função SUM também é uma função agregada. A entrada para SUM e para AVGprecisa ser um conjunto de números, mas as outras funções agregadas aceitam também ti-pos de dados não-numéricos (como strings).

(D) A função MID é uma função escalar que extrai caracteres de uma string.

(E) A função LEFT é uma função escalar que retorna os caracteres mais a esquerda deuma string de acordo com a quantidade especi�cada.

Página 80 de 120www.handbookdeti.com.br

Page 82: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

34. Assuntos relacionados: Banco de Dados, SQL,Banca: FCCInstituição: TCE/CECargo: Analista de Controle Externo - Auditoria de Tecnologia da InformaçãoAno: 2008Questão: 75

Considere o seguinte requisito: �Para cada departamento com menos de 1000 funcionáriosdevem ser listados os salários médios de cada departamento�. As cláusulas SQL-ANSI vin-culadas a uma única expressão SELECT, uma que calcula o salário médio e a outra querestringe a quantidade de empregados são, respectivamente,

(a). MID e COUNT.

(b). AVG e COUNT.

(c). AVG e HAVING.

(d). MID e WHERE.

(e). MID e HAVING.

Solução:

No SQL-ANSI, a função que calcula a média de um conjunto de valores é a AVG (que vemde average, que em inglês signi�ca média). Portanto, essa já é uma pista de que a respostasó pode ser a alternativa B ou C.

A função COUNT, que aparece na alternativa B, é utilizada para fazer uma contagemsimples da quantidade de elementos retornados em uma consulta SQL. Portanto, por elimi-nação, já seria possível chegar a resposta da questão, que é a alternativa C. No entanto, elaserá necessária a consulta para contar o número de empregados por departamento.

A cláusula HAVING, assim como a cláusula WHERE, é utilizada para restringir os resul-tados das consultas SQL. No entanto, o HAVING só é utilizado em consultas que retornamresultados agrupados pela cláusula GROUP BY.

Pensemos no que poderia ser um modelo de dados para o caso ilustrado na questão:

DEPARTAMENTOS (DPTO_ID, DPTO_NOME)

FUNCIONARIOS (FUNC_ID, FUNC_NOME, FUNC_SALARIO)

DEPARTAMENTOS_FUNCIONARIOS (DPTO_ID, FUNC_ID)

Portanto, a consulta que retornaria o nome e o salário médio dos departamentos com menosde 1000 funcionários seria:

SELECT

D.DPTO_NOME, AVG(F.FUNC_SALARIO) AS SALARIO_MEDIO // Calcula média salarial

FROM

FUNCIONARIOS F,

DEPARTAMENTOS_FUNCIONARIOS DF,

DEPARTAMENTOS D,

( SELECT

DPTO_ID, COUNT(FUNC_ID) AS FUNCS_POR_DPTO // Contagem de funcionários

Página 81 de 120www.handbookdeti.com.br

Page 83: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

FROM

DEPARTAMENTOS_FUNCIONARIOS

GROUP BY

DPTO_ID // Agrega contagem por departamento

HAVING

FUNCS_POR_DPTO < 1000 // Restringe resultado

) AS T1

WHERE

F.FUNC_ID = DF.FUNC_ID AND

DF.DPTO_ID = T1.DPTO_ID AND

T1.DPTO_ID = D.DPTO_ID

GROUP BY

D.DPTO_NOME // Agrega média salarial por departamento

Página 82 de 120www.handbookdeti.com.br

Page 84: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

35. Assuntos relacionados: Banco de Dados, Consulta SQL, Operações de Composição deRelações,Banca: CesgranrioInstituição: BNDESCargo: Analista de Sistemas - DesenvolvimentoAno: 2008Questão: 42

Observe as seguintes tabelas de um sistema:

Pessoa (nomePessoa, endereço)Filme (nomeFilme, estúdio, verba)Trabalha (nomePessoa(FK), nomeFilme(FK), atividade, salário)

Um administrador de dados deseja fazer o seguinte relatório: Todas as pessoas, os �lmesnos quais já trabalharam e o total recebido por cada �lme. Se uma pessoa nunca trabalhounum �lme, ela deve aparecer no relatório. A atividade que a pessoa exerceu no �lme (ex:ator, diretor, câmera etc.) não é importante para o relatório.

Qual consulta retorna o conjunto resposta correto?

(a). SELECT P.nomePessoa, T.nomeFilme, sum(T.salário)

total

FROM Pessoa P LEFT OUTER JOIN Trabalha T

ON P.nomePessoa = T.nomePessoa

GROUP BY P.nomePessoa, T.nomeFilme

(b). SELECT T.nomePessoa, T.nomeFilme, sum(T.salário)

total

FROM Pessoa P INNER JOIN Trabalha T

ON P.nomePessoa = T.nomePessoa

GROUP BY T.nomePessoa, T.nomeFilme

(c). SELECT P.nomePessoa, T.nomeFilme, sum(T.salário)

total

FROM Pessoa P LEFT OUTER JOIN Trabalha T

ON P.nomePessoa = T.nomePessoa

GROUP BY P.nomePessoa, T.nomeFilme

HAVING sum(T.salário) > 0

(d). SELECT P.nomePessoa, F.nomeFilme, sum(T.salário)

total

FROM Pessoa P INNER JOIN Trabalha T

ON P.nomePessoa = T.nomePessoa

INNER JOIN Filme F

ON F.nomeFilme = T.nomeFilme

WHERE T.atividade IS NOT NULL

AND T.salário > 0

GROUP BY P.nomePessoa, F.nomeFilme

(e). SELECT T.nomePessoa, T.nomeFilme, sum(T.salário)

total

FROM Pessoa P LEFT OUTER JOIN Trabalha T

ON P.nomePessoa = T.nomePessoa

LEFT OUTER JOIN Filme F

Página 83 de 120www.handbookdeti.com.br

Page 85: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

ON F.nomeFilme = T.nomeFilme

Solução:

Esta questão tenta explorar o conhecimento do candidato em relação às operações INNERJOIN e LEFT OUTER JOIN devido à restrição se uma pessoa nunca trabalhou num �lme,ela deve aparecer no relatório.

A operação INNER JOIN é usada tipicamente na cláusula FROM para composição derelações. Sua sintaxe é <tabela A> INNER JOIN <tabela B> ON <condição desejada>.A operação INNER JOIN cria uma nova tabela, combinando os valores das duas tabelas(tabela A e tabela B) com base na condição desejada de junção das tabelas. A consulta comINNER JOIN compara cada linha da tabela A com cada linha da tabela B para encontrartodos os pares de linhas que satisfazem a condição desejada. Quando a condição desejadaé satisfeita, valores da coluna para cada par de linha encontrado das tabelas A e B sãocombinados em uma linha da nova tabela. Note que, a operação INNER JOIN retorna aslinhas das tabelas somente quando a condição desejada é satisfeita, isto é, se na tabela Aexiste uma linha que não satisfaz a condição desejada, esta linha não aparece no resultadoda operação INNER JOIN.

Como na operação INNER JOIN, a operação LEFT OUTER JOIN também é usada ti-picamente na cláusula FROM para composição de relações. Sua sintaxe é <tabela A>LEFT OUTER JOIN <tabela B> ON <condição desejada>. O LEFT OUTER JOIN éprocessado conforme mostrado anteriormente para o INNER JOIN. Entretanto, o LEFTOUTER JOIN retorna todas as linhas da tabela da esquerda (tabela A), mesmo se a condi-ção desejada não encontrar nenhuma linha correspondente na tabela da direita (tabela B).Ou seja, o LEFT OUTER JOIN retorna todas linhas da tabela da esquerda, mais as linhasda tabela da direita que satisfazem a condição desejada ou, nulo caso não satisfaça. Se atabela da esquerda retorna uma linha e a tabela da direita retornar mais que uma linha paraa condição desejada, a linha da tabela esquerda será repetida para cada linha encontradada tabela da direita.

Existem outras operações relacionadas à cláusula JOIN, como:

• EQUI-JOIN - mesma funcionalidade do operador INNER JOIN, mas aceita somentecomparação de igualdade na condição desejada

• NATURAL JOIN - uma especialização da operação EQUI-JOIN, porém a condiçãodesejada está implícita na operação. Por exemplo, SELECT * FROM employee NA-TURAL JOIN department

• CROSS JOIN - retorna o produto cartesiano do conjunto de linhas das tabelas asso-ciadas. É equivalente à operação INNER JOIN, onde a condição desejada é sempreverdadeira

• RIGHT OUTER JOIN - retorna todas as linhas da tabela da direita, mesmo se acondição desejada não encontra nenhuma linha correspondente na tabela da esquerda

• FULL OUTER JOIN é uma combinação dos tipos das operações LEFT OUTER JOINe RIGHT INNER JOIN, isto é, ao resultado �nal são adicionadas as linhas da tabelaesquerda que não correspondem a nenhuma linha da tabela direita, e similarmente paraas linhas da tabela da direita

Conforme explicado anteriormente, para a nossa consulta retorna o conjunto de respostacorreto, devemos utilizar a operação LEFT OUTER JOIN para satisfazer a restrição se uma

Página 84 de 120www.handbookdeti.com.br

Page 86: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

pessoa nunca trabalhou num �lme, ela deve aparecer no relatório, pois existe a possibilidadeuma pessoa nunca ter trabalho em um �lme. Então, a operação LEFT OUTER JOIN deveser entre as tabelas Pessoa e Trabalha, onde a tabela Pessoa é a tabela esquerda, isto é,a consulta SQL deve conter a seguinte trecho: Pessoa P LEFT OUTER JOIN Trabalha TON P.nomePessoa = T.nomePessoa. A seguir, analisamos as alternativas desta questão:

(A) CORRETA

Esta consulta retorna o conjunto de resposta correto, pois faz uso da operação LEFT OU-TER JOIN entre as tabelas Pessoa e Trabalha na cláusula FROM, sendo que a tabelaPessoa está do lado esquerdo da operação, satisfazendo a restrição do enunciado. Alémdisso, esta consulta utiliza a cláusula GROUP BY para formar grupos de P.nomePessoae T.nomePessoa. Isso é utilizado para somar os salários das pessoas que trabalharam nos�lmes na cláusula SELECT (sum(T.salário)). E, por �m, esta consulta exibe o resultadona cláusula SELECT P.nomePessoa, T.nomeFilme, sum(T.salário) total como o enunciadosolicitou. Portanto, alternativa correta.

(B) ERRADA

Esta consulta não retorna o conjunto de resposta correto, pois faz uso da operação INNERJOIN na cláusula FROM, conforme explicado anteriormente. Então, alternativa errada.

(C) ERRADA

Esta consulta é semelhante à consulta da alternativa (A), com a diferença do uso da cláusulaHAVING com a condição sum(T.salário) > 0. A utilização desta condição na consulta, nãosatisfaz a restrição imposta pelo enunciado (se uma pessoa nunca trabalhou num �lme, eladeve aparecer no relatório), pois o resultado �nal não conterá as pessoas que nunca traba-lharam em um �lme. Portanto, alternativa errada.

(D) ERRADA

Esta consulta não retorna o conjunto de resposta correto, pois faz uso da operação INNERJOIN na cláusula FROM, conforme explicado anteriormente. Então, alternativa errada.

(E) ERRADA

Esta consulta faz uso duas vezes da operação LEFT OUTER JOIN. Uma nova tabela (tabelaA) é produzida pela operação Pessoa P LEFT OUTER JOIN Trabalha T ON P.nomePessoa= T.nomePessoa. Esta nova tabela (tabela A) é utilizada para gerar outra nova tabela(tabela B) pela operação tabela A LEFT OUTER JOIN Filme F ON F.nomeFilme =T.nomeFilme. Observe que esta última operação é desnecessária, pois com a primeira ope-ração é possível gerar o conjunto resposta correto. A alternativa está errada, pois não utilizaa cláusula GROUP BY para formar grupos P.nomePessoa e T.nomePessoa para somar ossalários das pessoas que trabalharam nos �lmes na cláusula SELECT (sum(T.salário)).

Página 85 de 120www.handbookdeti.com.br

Page 87: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

36. Assuntos relacionados: Banco de Dados, SQL, JOIN, HAVING,Banca: CesgranrioInstituição: BNDESCargo: Analista de Sistemas - DesenvolvimentoAno: 2008Questão: 49

Seja o seguinte grupo de tabelas de um sistema:

fabricante (idfabricante, nome, endereço)peça (idmodelo, nome, descrição)constrói (idmodelo (FK), idfabricante (FK), data, quantidade, cor)

Um programador monta a seguinte consulta SQL:

SELECT f.nome, count(distinct c.idmodelo) as num

FROM fabricante f \textbf{INNER JOIN} constroi c

ON f.idfabricante = c.idfabricante

WHERE c.cor = 'VERMELHO'

GROUP BY f.nome

HAVING count(distinct c.idmodelo) > 10

ORDER BY num DESC

Qual o retorno dessa consulta?

(a). Os nomes dos fabricantes e a respectiva quantidade total de peças construídas nacor vermelha, desde que, em cada data, a quantidade construída seja maior que10; o relatório estará ordenado de forma descendente pela quantidade de peçasconstruídas.

(b). Os nomes dos fabricantes que já construíram mais de 10 modelos diferentes depeças na cor vermelha e a quantidade de modelos diferentes, mostrando a listaordenada de forma descendente pela quantidade.

(c). Os nomes dos fabricantes que já construíram pelo menos uma peça na cor verme-lha; o relatório estará ordenado de forma descendente na quantidade de modelosdiferentes construídos.

(d). Todos os nomes dos fabricantes e a respectiva quantidade de modelos diferentes depeças vermelhas que já construíram; se um fabricante nunca construiu uma peçana cor vermelha, a contagem mostrará zero.

(e). Todos os nomes dos fabricantes e a respectiva quantidade de modelos diferentesconstruídos, não importando a quantidade de peças, cor ou a data da construção;o relatório estará ordenado de forma descendente na quantidade de peças.

Solução:

Para resolver esta questão, é necessário conhecer os conceitos de chave primária, chave es-trangeira e, por �m, entender o que os principais comandos SQL fazem e o resultado delessobre os dados manipulados de uma ou mais tabelas.

Por ser mais essencial, vamos começar entendendo o que são chave primária e estrangeira.Tabelas são coleções de dados que possuem identidade entre si pela semântica. Isso signi�ca

Página 86 de 120www.handbookdeti.com.br

Page 88: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

que as linhas (ou tuplas) de uma tabela referem-se a coisas que guardam semelhança entresi. Entretanto, apesar das semelhanças, cada tupla é única e deve ser assim, para que osdados armazenados façam sentido à aplicação e ao usuário. Para garantir essa unicidade,foi desenvolvido o conceito de chave primária nos bancos de dados. A chave primária podeser composta por um ou mais campos da tabela. O SGBD (Sistema Gerenciador de Bancode Dados) irá garantir que haverá apenas uma tupla com uma determinada combinaçãodos campos que compõe a chave primária.

Ilustrando como exemplo, podemos supor uma tabela que armazene os produtos de umamercearia. A tabela, poderia ser:

produto (nome, quantidade, precoUnitario)

O campo nome foi utilizado como chave primária. Sabemos disso, pois, por convenção,os campos de uma tabela que aparecem sublinhados são os considerados como chave pri-mária. Nesse exemplo, o SGBD, ao tratar as operações de inserção permitiria que cadaproduto aparecesse uma vez na tabela. Isso quer dizer que, se por descuido, o usuário játivesse cadastrado o produto 'banana' e tentasse cadastrar novamente 'banana' o sistemareceberia um erro por chave duplicada. Repare que isso é extremamente útil. Na hora defazer a contabilidade e de gerar relatórios de reposição de estoque, 'banana' é um únicoproduto da mercearia e não queremos que ela apareça repetidamente.

Para entender o conceito de chave estrangeira, podemos utilizar o exemplo da merceariatambém. Sabemos que, além do cadastro do estoque, o comerciante precisa manter o his-tórico de suas vendas, de modo que possa atualizar sua contabilidade e prestar contas aogoverno. Para tal, podemos supor que o desenvolvedor do aplicativo de controle comercialtenha criado uma tabela que irá registrar todas as vendas feitas. Para isso, ele criará astabelas:

venda (idVenda, data)itemVenda (idVenda (FK), nomeProduto (FK), quantidade)

Veja que a tabela venda possui também um campo de chave primária. Como vendas nãopossuem nomes, podemos imaginar que esse campo pode ser numérico e sequencial, de modoa impedir que vendas sejam sobrescritas. A tabela itemVenda é criada por um motivo muitosimples: repare que cada venda poderá ter mais de um item nela; o freguês pode levar, namesma compra, 6 bananas e 3 maçãs. Se não tivéssemos a tabela itemVenda, para cadaproduto vendido teríamos que, além de armazenar o �identi�cador� da venda, armazenartambém a data dela. Isso causaria uma repetição de valores indesejada, aumentando des-necessariamente o tamanho do banco, além de prejudicar a velocidade de processamento dealgumas consultas sobre ele.

Repare que a tabela itemVenda possui uma chave primária composta de 2 campos: id-Venda e nomeProduto. Ambas aparecem com um (FK) após seu nome. Isso indica queesses campos são chaves estrangeiras importadas de outras tabelas. no caso de idVenda,ela é importada da tabela venda, do campo de mesmo nome; nomeProduto vem da tabelaproduto, do campo 'nome'. O controle realizado pelo SGBD sobre chaves estrangeiras visaa garantir a integridade referencial entre os diversos dados armazenados no banco de da-dos. No caso de nosso exemplo, a existência das chaves estrangeiras na tabela itemVendapretende garantir que só existam itens de venda para vendas que realmente existam e que

Página 87 de 120www.handbookdeti.com.br

Page 89: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

os produtos das vendas estejam cadastrados antes de serem vendidos. (Além desse controle,há também outros sobre a exclusão de itens em cascata, onde, por exemplo, a remoção deum produto poderia desencadear a deleção dos itens de venda cadastrados para ele).

A chave primária composta, conforme o exemplo da tabela itemVenda tem a seguinte se-mântica: �para cada item de venda cadastrado na tabela itemVenda só poderá existir umaúnica referência a um produto para cada venda distinta�. Em outras palavras, na vendade número '10' poderá aparecer apenas uma vez o item 'banana'. Veja que isso não limitaa compra do cliente a apenas uma banana, pois o campo 'quantidade' permite que váriasbananas sejam vendidas para o cliente. A diferença estará apenas no armazenamento dessainformação no sistema, pois o item banana aparecerá apenas uma vez, com a quantidadecomprada registrada no campo especí�co para isso. Fica claro que essa medida evita quevárias linhas para o mesmo produto sejam repetidas para expressar a mesma compra. Utili-zando esse artifício, economiza-se muito espaço, além de se aumentar também a velocidadedas consultas, visto que, em qualquer hipótese, uma quantidade maior de linhas em umatabela resultará, impreterivelmente, em maior tempo de consulta. (Este tipo de preocupa-ção com otimização de tempos de consulta e quantidade de armazenamento deu origem aoestudo das formas normais. Complemente seu aprendizado buscando por essa informação).

Com essas informações, passamos a entender a estrutura das tabelas apresentadas:

fabricante (idfabricante, nome, endereço)

• Cada fabricante cadastrado será identi�cado pelo seu id (idFabricante) respectivo.

peça (idmodelo, nome, descrição)

• Cada peça cadastrada será identi�cada pelo seu id (idModelo) respectivo.

constrói (idmodelo (FK), idfabricante (FK), data, quantidade, cor)

• Cada linha da tabela constrói terá a quantidade e a cor de uma única peça fabricada porum fabricante especí�co em uma determinada data. Além disso, em uma determinadadata, um fabricante só produzirá uma determinada peça em uma única cor.

Com essas de�nições, podemos passar à segunda parte da questão que envolve entender oscomandos SQL. Nessa questão são utilizados os seguintes comandos:

• SELECT: indica quais os campos das tabelas que são listadas no comando FROM sedeseja exibir;

• FROM: indica as tabelas que fazem parte da consulta em questão;

• INNER JOIN: esse comando, sempre que aparecer, estará entre duas tabelas e logoapós o comando FROM. Ele é um indicador que informa que os dados da tabela anteriora ele serão cruzados com os dados da tabela posterior, utilizando a comparação descritano campoON. Este comando é um caso especí�co do comando JOIN. O pre�xo INNERindica que apenas os registros que casarem na comparação do campo ON deverão serretornados;

• WHERE: de�ne os �ltros que deverão ser aplicados na consulta. De todos os registrosresultantes da junção das tabelas envolvidas na consulta, apenas aqueles que atenderemàs restrições descritas aqui deverão ser considerados para o resultado;

• GROUP BY: o resultado da consulta será agrupado pelo(s) campo(s) indicados nestecomando. Este comando é utilizado em conjunto com funções de agregação, que, de

Página 88 de 120www.handbookdeti.com.br

Page 90: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

modo geral, geram estatísticas sobre outros campos que não os listados aqui. No caso denosso exemplo, deseja-se contar os modelos diferentes resultantes da consulta agrupadospelo nome do fabricante;

• HAVING: esta é outra cláusula de restrição ao resultado da consulta. Aqui, pode-sede�nir parâmetros para os campos agregados. A diferença primordial entre a cláusulaHAVING e WHERE é que os �ltros descritos na segunda são aplicados no cálculo daconsulta enquanto que os da primeira são aplicados apenas ao resultado pronto. Deum modo geral, �ltros colocados em WHERE geram consultas mais rápidas do queaqueles de�nidos em HAVING ;

• ORDER BY: os campos aqui descritos serão utilizados como parâmetro de orde-nação do resultado da consulta. Por padrão, os campos são ordenados seguindo emque aparecem. Assim, o SGBD ordena o resultados sobre o primeiro campo, depois,considerando essa primeira ordem, sobre o segundo e assim por diante. A ordenaçãopode ser ascendente - do menor para o maior - utilizando o su�xo ASC após o campoem questão, ou descendente - utilizando o su�xo DESC. Por padrão, a ordenação éascendente em todos os campos listados.

Vistos os comandos utilizados, basta agora que analisemos a consulta em questão combinando-a com as informações que são armazenadas nas tabelas de acordo com o estudo das chaves.Vejamos a Figura 6.

Figura 6: cláusulas SQL e suas interpretações.

Portanto, a resposta da questão é a letra (B).

Página 89 de 120www.handbookdeti.com.br

Page 91: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

37. Assuntos relacionados: Banco de Dados, SQL, Consulta SQL,Banca: CesgranrioInstituição: IBGECargo: Analista de Sistemas - SuporteAno: 2010Questão: 45

Considere uma tabela em um banco de dados relacional. A tabela apresenta três atributosdo tipo texto, sendo CPF o campo chave.

Cliente(CPF, Nome, Endereco)

Considerando-se que homônimos são pessoas que possuem o mesmo nome, mas CPF dife-rentes, a expressão SQL que resulta na lista dos Clientes que têm homônimos, juntamentecom o número de homônimos, é:

(a). SELECT DISTINCT C1.Nome, C1.CPF, COUNT(C2)

FROM Cliente C1, Cliente C2

WHERE C1.Nome = C2.Nome AND C1.CPF <> C2.CPF

(b). SELECT Nome, CPF,

(SELECT COUNT(*) FROM Cliente C1

WHERE C.Nome = C1.Nome AND C.CPF <> C1.CPF)

FROM Cliente C

(c). SELECT Nome, CPF, COUNT(Cliente) FROM Cliente

GROUP BY Nome, CPF

HAVING COUNT(*) > 1

(d). SELECT TOP 1 C1.Nome, C1.CPF, COUNT(*)

FROM Cliente C1, Cliente C2

WHERE C1.Nome = C2.Nome AND C1.CPF <> C2.CPF

(e). SELECT C1.Nome, C1.CPF, COUNT(*)

FROM Cliente C1, Cliente C2

WHERE C1.CPF <> C2.CPF AND C1.Nome = C2.Nome

GROUP by C1.Nome, C1.CPF

HAVING count(*) > 0

Solução:

A resposta da questão é alternativa E. Para compreendê-la, vamos analisar cada uma daspartes da consulta mostrada na alternativa. Para facilitar a explicação, abaixo a consulta émostrada novamente, porém com as linhas numeradas.

1 SELECT C1.Nome, C1.CPF, COUNT(*)

2 FROM Cliente C1, Cliente C2

3 WHERE C1.CPF <> C2.CPF AND C1.Nome = C2.Nome

4 GROUP by C1.Nome, C1.CPF

5 HAVING count(*) > 0

Página 90 de 120www.handbookdeti.com.br

Page 92: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Na linha 1, é utilizado o comando SELECT, que indica quais serão as colunas retornadaspela consulta. Foram selecionadas as colunas CPF, NOME. A terceira coluna que será re-tornada na consulta é a coluna COUNT(*).

Na linguagem SQL, o operador COUNT serve para contar a quantidade de ocorrênciasde uma determinada combinação de valores das colunas. Na consulta em questão, a expres-são COUNT(*) irá retornar a quantidade de vezes que uma determinada combinação dosvalores da colunas NOME e CPF se repete no resultado da consulta.

Para que o operador COUNT funcione, é necessário ainda que se utilize a cláusula GROUPBY, enumerando a combinação de colunas que se deseja agrupar. Na consulta em questão,essa exigência é cumprida na linha 4.

Já na linha 2, temos a cláusula FROM, que é utilizada para enumerar as tabelas que serãonecessárias para a execução da consulta. Como deseja-se descobrir os clientes homônimos,é necessário que se compare o nome de um cliente com o nome dos demais. Portanto, nacláusula FROM o programador teve que trabalhar com duas tabelas CLIENTE. Em outraspalavras, na linha 2 gerou um produto cartesiano da tabela CLIENTE com ela mesma.

Para restringir o produto cartesiano mencionado, na linha 3 o programador teve que adici-onar algumas restrições. Na primeira delas (C1.CPF <> C2.CPF), o programador garanteque o nome de um dado cliente (que é identi�cado unicamente pelo CPF) só será comparadocom o nome dos demais, e não com seu próprio nome. Já na segunda restrição (C1.Nome =C2.Nome), o programador veri�ca se os clientes possuem o mesmo nome.

Na linha 5 o programador faz uso da cláusula HAVING, que tem como função restringiros resultados em consultas que façam uso de operadores de agregação, como SUM, COUNT,MEDIA, DEVPAD, entre outros. Na consulta em questão, a expressão utilizada foi HA-VING count(*) > 0, que garante que a consulta só retornará combinações de NOME e CPFque possuam no mínimo 1 ocorrência. Ou seja, só retornará clientes que possuam no mínimo1 homônimo.

Por �m, vale ressaltar que a consulta retornará um registro para cada cliente que pos-suir um homônimo, contendo o CPF do cliente, o seu nome, e a quantidade de homônimosassociada. Um exemplo do resultado que poderia ser retornado pela consulta segue abaixo:

JOSE DA SILVA 03556236920 2

JOSE DA SILVA 23698563222 2

JOSE DA SILVA 78946123362 2

MICHAEL PAULO 45632152875 1

MICHAEL PAULO 78542635985 1

ALEX DA COSTA 45896325644 3

ALEX DA COSTA 45823666999 3

ALEX DA COSTA 45236698888 3

ALEX DA COSTA 78542666666 3

Página 91 de 120www.handbookdeti.com.br

Page 93: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

38. Assuntos relacionados: Banco de Dados, SQL,Banca: ESAFInstituição: Agência Nacional de Águas (ANA)Cargo: Analista Administrativo - Tecnologia da Informação e Comunicação / Desenvolvi-mento de Sistemas e Administração de Banco de DadosAno: 2009Questão: 23

Em SQL, a cláusula check aplicada a uma declaração de domínio

(a). permite especi�car um predicado que deve ser satisfeito por qualquer valor atri-buído a uma variável de determinado domínio.

(b). especi�ca um predicado que deve ser satisfeito por uma tupla em uma relação.

(c). proíbe a inserção de um valor nulo para as variáveis do domínio.

(d). veri�ca se os atributos considerados formam uma chave candidata.

(e). não tem efeito, pois não se aplica esta cláusula a declarações de domínio.

Solução:

Uma tabela em um banco de dados é de�nida por um nome e pelos seus campos (atributos)e restrições.

Por exemplo:

create table carro

(

nome char (20) not null,

placa char (7) not nul,

marca char (50) not nul,

ano integer

)

Como pode ser observado, o nome da tabela é carro e possui os seguintes atributos: nome,placa, marca e ano cada um com seu tipo de dado. Cada tipo de dado representa um do-mínio (intervalo) de valores para um determinado atributo. Assim, um domínio é a coleçãode valores permitidos para um atributo.

A cláusula check na SQL pode ser aplicada a declarações de domínio. Quando aplicadoa um domínio, a cláusula check permite especi�car um predicado que precisa ser satisfeitopara qualquer valor atribuído a uma variável cujo tipo é o domínio. Por exemplo, umacláusula check pode garantir que um domínio de idade permita apenas valores maiores doque um valor especi�cado (pessoa maior de idade).

create domain Idade numeric (5,2)

constraint teste-valor-idade

check (value >= 18)

O domínio Idade possui uma restrição que garante que o atributo idade seja maior ou iguala 18 anos. A cláusula constraint teste-valor-idade é opcional usada para atribuir o nometeste-valor-idade a restrição. O nome é usado pelo sistema para indicar a restrição que umaatualização violou. Outro exemplo sobre a cláusula check: um domínio pode ser restritopara conter apenas um conjunto especi�cado de valores usando a cláusula in:

Página 92 de 120www.handbookdeti.com.br

Page 94: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

create domain TipoConta char(10)

constrait teste-valor-idade

check(value in ('Corrente','Poupança') )

Desse modo, a cláusula check permite que atributos e domínios sejam restritos, descrevendoum predicado que deve ser satisfeito por qualquer valor atribuído a uma variável de domínio.Portanto, a questão correta é a letra A.

Página 93 de 120www.handbookdeti.com.br

Page 95: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

39. Assuntos relacionados: Banco de Dados, SQL, Data Manipulation Language (DML),Data De�nition Language (DDL), Data Control Language (DCL),Banca: ESAFInstituição: Controladoria-Geral da União (CGU)Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento deSistemas de InformaçãoAno: 2008Questão: 51

Em um banco de dados que utiliza a linguagem SQL para de�nição, manipulação e controlede dados, é correto a�rmar que os comandos

(a). CREATE, DROP e INSERT fazem parte da DML (Linguagem de Manipulaçãode Dados).

(b). GRANT e REVOKE fazem parte da DCL (Linguagem de Controle de Dados).

(c). INSERT, UPDATE e SELECT fazem parte da DDL (Linguagem de De�nição deDados).

(d). ALTER, DELETE e REVOKE fazem parte da DML (Linguagem de Manipulaçãode Dados).

(e). CREATE, GRANT e DROP fazem parte da DCL (Linguagem de Controle deDados).

Solução:

Os Bancos de Dados, em geral, possuem diversos tipos de usuários, desde administradoresde bancos de dados (DBAs) até usuários casuais, passando por projetistas de bancos dedados e programadores/analistas de sistemas. Para cada uma desta variedade de usuários,o Sistema de Gerenciamento de Banco de Dados (SGBD) deve proporcionar linguagens einterfaces apropriadas.

Em muitos SGBDs onde não há uma clara separação entre os níveis interno e conceitual, umalinguagem chamada Linguagem de De�nição de Dados (DDL � Data De�nition Language) éutilizada pelo DBA e pelos projetistas para de�nir ambos os esquemas. Em SGBDs onde émantida uma separação clara entre os dois níveis, a DDL é utilizada para especi�car apenaso esquema conceitual e uma outra linguagem, a Linguagem de De�nição de Armazenamento(SDL � Storage De�nition Language), é utilizada para especi�car o esquema interno. Paraespeci�car visões de usuários e seus mapeamentos para o esquema conceitual, a Lingua-gem de De�nição de Visão (VDL � View De�nition Language). Entretanto, na maioria dosSGBDs a DDL é utilizada para de�nir tanto o esquema conceitual quanto o esquema externo.

Os SGBDs oferecem um conjunto de operações para manipulação de dados, como pesquisa,inserção, exclusão e modi�cação, através de uma linguagem conhecido por Linguagem deManipulação de Dados (DML � Data Manipulation Language).

A SQL (Structured Query Language � Linguagem de Consulta Estruturada) representauma combinação de DDL, VDL e DML, além de diretivas para especi�car restrições e ou-tras características. A SDL foi um componente da SQL em versões antigas, mas foi removidada linguagem para mantê-la apenas nos níveis conceitual e externo.

Em SQL, a DML é composta pelos comandos INSERT, UPDATE e DELETE, que são

Página 94 de 120www.handbookdeti.com.br

Page 96: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

utilizados para inserir, atualizar e excluir registros de uma tabela, respectivamente. Já aDDL possui os comandos básicos CREATE, ALTER e DROP que criam, alteram ou apagamobjetos (tabelas, índices e visões) do banco de dados. Para alguns autores, os comandosCREATE VIEW e DROP VIEW comporiam a VDL de SQL.

Um outro grupo de comandos de SQL serve para controlar aspectos de autorização deacesso de dados por usuários. Este grupo é chamado de DCL (Data Control Language� Linguagem de Controle de Dados) e é composto pelas diretivas GRANT e REVOKE. Aprimeira, autoriza um usuário a executar operações e a segunda remove ou restringe o acesso.

Tem-se ainda a DTL (Data Transaction Language � Linguagem de Transação de Dados)que controla as transações em SQL e é composta por BEGIN WORK, COMMIT e ROLL-BACK. A primeira diretiva inicia uma transação e as outras duas �nalizam, sendo queCOMMIT conclui a execução dos comandos e ROLLBACK desfaz as operações executadas.

Embora com apenas um único comando (o comando SELECT), a DQL (Data Query Lan-guage � Linguagem de Consulta de Dados) é a parte da SQL mais utilizada, permitindo queconsultas sejam efetuadas ao banco de dados.

Pela teoria exposta, percebe-se que a alternativa b) é a única que apresenta o correto agru-pamento de comandos componentes de uma das partes da SQL, sendo a resposta para aquestão.

Página 95 de 120www.handbookdeti.com.br

Page 97: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

40. Assuntos relacionados: Banco de Dados, SQL, Triggers,Banca: ESAFInstituição: Receita Federal (RF)Cargo: Técnico da Receita Federal - Tecnologia da InformaçãoAno: 2006Questão: 32

Analise as seguintes a�rmações relacionadas a Bancos de Dados e à linguagem SQL:

I. A cláusula GROUP BY do comando SELECT é utilizada para dividir colunas emconjuntos maiores de dados relacionados entre si.

II. Uma view é uma forma predeterminada de visualizar dados de uma ou mais tabelascomo se fosse apenas uma tabela.

III. Quando o comando DROP TABLE é executado, as estruturas da tabela e os dadossão excluídos. Porém, quando o DROP VIEW é executado, nenhum dado referenciadopela view é afetado.

IV. O trigger é um tipo de view criado quando um evento em particular ocorre.

Indique a opção que contenha todas as a�rmações verdadeiras.

(a). I e II

(b). III e IV

(c). II e III

(d). I e III

(e). II e IV

Solução:

Para esta questão o melhor caminho é tratar item por item para chegar na tão esperadaresposta correta.

I. ERRADA. A cláusula GROUP BY do comando SELECT é utilizada para agruparLINHAS em conjuntos de dados relacionados entre si. Cada grupo será formado porlinhas que tenham o mesmo valor do atributo de�nido pela cláusula;

II. CORRETA. A view facilita a vida para o usuário sendo que ele pode fazer consultas ouatualizações e estas vão re�etir nas respectivas tabelas que estão sendo utilizadas. Umaview proporciona mais segurança, ajuda na prevenção de erros, melhora a performancee faz com que os dados sejam mais compreensíveis para o usuário;

III. CORRETA. O comando DROP é utilizado para eliminar tabelas, esquemas, domíniosou restrições.

No caso do DROP TABLE duas opções de comportamento podem ser selecionadas:

� CASCADE: todas as restrições e views que referenciam a tabela são eliminadasjuntamente com os dados da tabela e suas estruturas;

� RESTRICT: a tabela será eliminada somente se ela não for referência em ne-nhuma restrição ou view.

O comando DROP VIEW elimina a view e, como este tipo de tabela é virtual e seus da-dos são referencia à dados existentes em outras tabelas, nenhum conteúdo será perdido.

Uma view também pode ser atualizada e esta atualização é re�etida nas tabelas utili-zadas na de�nição da mesma, porém alguns fatores devem ser observados:

Página 96 de 120www.handbookdeti.com.br

Page 98: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

� caso seja for formada a partir de uma única tabela, ela deve conter a chave primáriae todos os outros atributos com restrição NOT NULL que não tenham um valorDEFAULT especi�cado;

� normalmente não é atualizável se for formada por diversas tabelas utilizando-seJOIN;

� não é atualizável se for de�nida utilizando a função GROUP BY, HAVING oufunções agregadas (ex.: COUNT, SUM, MAX, MIN e AVG);

� deve-se adicionar a cláusula WITH CHECK OPTION no momento da especi�caçãoda view para que o sistema veri�que a capacidade de atualização e de�na umaestratégia de atualização da view.

IV. ERRADA. O trigger é uma função e é utilizada para executar uma ação (execuçãode SQL's ou de algum programa externo ao Banco de Dados) após a ocorrência de umevento (operações de atualização por exemplo) que atenda uma condição (expressãoque retorna um valor VERDADEIRO ou FALSO) especi�cada durante a de�nição dotrigger.

Sendo assim, a resposta correta é a letra C.

Página 97 de 120www.handbookdeti.com.br

Page 99: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

41. Assuntos relacionados: Banco de Dados, Níveis de Isolamento,Banca: CESGRANRIOInstituição: BNDESCargo: Analista de SuporteAno: 2008Questão: 49

Considere o ambiente de uma aplicação multiusuário que acessa um sistema de gerênciade banco de dados relacional. Os usuários acessam a aplicação em simultâneo, submetendotransações concorrentes ao banco de dados. Todas as transações realizadas na base de dados,pela referida aplicação, estão de�nidas com o nível de isoladamente READ COMMITTED(leitura com efetivação).

O usuário João está executando, através da aplicação, uma transação T1, composta porvários comandos SQL. Neste caso, é correto a�rmar que

(a). o nível de isolamento adotado não irá impedir o aparecimento de linhas fantasmas(phantom) durante a execução de T1.

(b). as atualizações de dados realizadas por João dentro de T1 podem ser lidas poroutros usuários imediatamente, mesmo antes de João efetivar sua transação.

(c). se João abortar a execução de T1 após ter executado, como parte da transação,comandos de atualização de dados, as referidas atualizações não poderão ser des-feitas.

(d). no ambiente descrito, a execução intercalada de qualquer conjunto de transaçõesserá serializável.

(e). devido à utilização do nível de isolamento especi�cado, enquanto João executarT1, nenhum outro usuário poderá executar comandos no banco de dados.

Solução:

(A) CORRETA

O nível de isolamento de uma determinada transação de�ne o tipo de bloqueio em rela-ção às operações de leitura. No caso de um nível de isolamento READ UNCOMMITTED(leitura sem efetivação), a transação poderá ler dados que foram modi�cados por outrastransações e que ainda não foram con�rmadas. Esses são fenômenos conhecidos como dirtyreads (leituras sujas). Já o nível de isolamento READ COMMITTED impede que ocorradirty reads.

Há dois tipos de anomalias que não são resolvidas por esse nível de isolamento: leituranão-repetível e leitura fantasma (phantom).

Suponha que duas consultas sejam executadas uma após a outra dentro da mesma tran-sação. No nível de isolamento READ COMMITTED, nada impede que outra transaçãoefetive suas alterações durante a execução da primeira consulta. O comando SELECT,nesse nível de isolamento, enxerga apenas os dados con�rmados antes da consulta ser exe-cutada. Nesse caso, os resultados das duas consultas realizadas uma após a outra, mesmopertencentes à mesma transação, podem ser diferentes.

Já o fenômeno de leitura fantasma é semelhante à leitura não-repetível no sentido em que

Página 98 de 120www.handbookdeti.com.br

Page 100: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

são necessárias duas consultas com os mesmos critérios para que o fenômeno possa ser obser-vado. Quando os retornos contém as mesmas linhas, mas com dados diferentes, o fenômenoé de leitura não-repetível. Quando a diferença no resultado indica que as linhas não são asmesmas, diz-se que ocorreu uma leitura fantasma.

O padrão ISO de�ne mais dois níveis de isolamento: leitura repetível e leitura serializá-vel. O fenômeno de leitura fantasma só é eliminado no nível serializável, que é o nível maisrestrito.

(B) ERRADA

Para que o citado ocorra, o nível de isolamento deveria ser READ UNCOMMITTED.

(C) ERRADA

Todo sistema gerenciador de banco de dados deve garantir que uma transação possa serdesfeita para manter a propriedade de atomicidade, que é essencial para a recuperação dosdados em casos de desastre e para a resolução de con�itos entre transações. Logo, tal fatoé impensável.

(D) ERRADA

O nível de isolamento citado não permite a serialização em relação as outras transações.Mas vale lembrar que tal nível propicia melhoria do desempenho do sistema.

(E) ERRADA

Várias transações podem ser executadas simultaneamente, mas respeitando-se os bloqueiosque garantem o modo de serialização adotado.

Página 99 de 120www.handbookdeti.com.br

Page 101: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

42. Assuntos relacionados: Banco de Dados, Concorrência entre Transações, SGBD,Banca: CESGRANRIOInstituição: BNDESCargo: Analista de SuporteAno: 2008Questão: 67

Em ambiente de Sistema Gerenciador de Banco de Dados (SGBD) multi-usuários, bloqueiose controles por timestamp (registro de tempo) são mecanismos utilizados para a manutençãoda integridade das transações.

Sobre tais mecanismos e sua utilização em SGBD relacionais, tem-se que

(a). a utilização de intenções de bloqueio visa aumentar a capacidade de concorrênciado sistema, no qual são permitidos somente bloqueios e intenções de bloqueio emlinhas individuais.

(b). a utilização de bloqueios pode ocorrer tanto em linhas de dados quanto em es-truturas de maior granularidade, como tabelas, podendo, também, ocorrer emestrutura de índices.

(c). o protocolo de bloqueio em duas fases foi desenvolvido para utilização em bancode dados distribuídos, e nele um nó coordenador realiza uma eleição para que cadanó participante indique se pode ou não concluir uma transação.

(d). o protocolo de ordenação por timestamp (registro de tempo) é baseado no mo-mento em que um bloqueio foi obtido por uma transação, indicando que essebloqueio somente pode ser mantido por determinado período de tempo.

(e). o protocolo de ordenação por timestamp (registro de tempo) garante que não ocor-rerão deadlocks, pois esse protocolo impede que transações mantenham o bloqueiode um objeto por tempo inde�nido.

Solução:

Bloqueios permitem que apenas uma única transação manipule (altere) um item de dadosem um momento particular. Também é possível o bloqueio multigranular, que permite auma transação bloquear diferentes tipos de recursos como tabelas e estruturas de índicese, geralmente, esse bloqueio se dá de forma hierárquica, onde o bloqueio explícito de umdeterminado objeto implica no bloqueio implícito dos seus sub-objetos. Concluímos, assim,que a alternativa B é a alternativa correta e excluímos a alternativa A.

O protocolo de bloqueio de duas fases pode ser utilizado em qualquer SGBD, ou seja, elenão foi especi�camente desenvolvido para uso em bancos de dados distribuídos, e sim paragarantir a serialização de transações. Logo, a alternativa C está errada.

O protocolo de ordenação por timestamp atribui um timestamp para cada transação an-tes que ela inicie e serve para garantir que quaisquer execuções de leitura e escrita sejamexecutadas por ordem de timestamp. Nesse protocolo não é possível que ocorram deadlocks,pois não é um método baseado em bloqueios de recursos. Entretanto, uma transação podeser cancelada várias vezes. A alternativas D e E estão erradas, pois não há bloqueios noprocesso de ordenação por timestamp. O que existem são métodos que se baseiam em ti-meout para a manutenção do bloqueio por um tempo de�nido e são especi�camente paramanuseio de deadlocks, e não um protocolo que garanta a serialização como o protocolo detimestamp.

Página 100 de 120www.handbookdeti.com.br

Page 102: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

43. Assuntos relacionados: Banco de Dados, ACID,Banca: FCCInstituição: MPUCargo: Analista de Desenvolvimento de SistemasAno: 2007Questão: 63

A classi�cação das propriedades ACID, em transações de BD, signi�cam

(a). Activity, Commit, Integrity e Direccion.

(b). Apresentação, Conclusão, Inferência e Diálogo.

(c). Atomicidade, Consistência, Isolamento e Durabilidade.

(d). Alteração, Consulta, Inserção e Deleção.

(e). Apresentação, Consistência, Independência e Duração.

Solução:

Uma transação é uma unidade de execução de programa que acessa e, possivelmente, atua-liza vários itens de dados em um banco de dados. Para assegurar a integridade dos dados eda própria transação, o sistema de banco de dados deve manter as seguintes propriedades:Atomicidade, Consistência, Isolamento e Durabilidade. Essas propriedades são chamadasde ACID.

Para um sistema garantir a propriedade de Atomicidade, ou todas as operações da transa-ção são re�etidas corretamente no banco de dados ou nenhuma será, ou seja, uma transaçãoé indivisível. Qualquer ação que constitui falha no sistema, a transação deve ser desfeita(rollback). Quando todas as ações são efetuadas com sucesso, a transação pode ser efeti-vada (commit). A Atomicidade é garantida pelo próprio sistema de banco de dados, maisespeci�camente do componente chamado de Gerenciamento de Transações.

Na propriedade de Consistência, a execução de uma transação isolada (isto é, sem a execuçãoconcorrente de outra transação) preserva a consistência do banco de dados. A Consistênciagarante que uma transação deve ser um programa correto, e suas ações não devem resul-tar em violações de restrições de integridade de�nidas para o banco de dados. Assegurara propriedade de Consistência após uma transação é tarefa do programador que codi�ca atransação.

Embora diversas transações possam ser executadas de forma concorrente (simultânea), osistema garante que cada transação não toma conhecimento de outras transações concorren-tes no sistema. Isto é, a propriedade de isolamento garante que nenhuma outra transação,operando no mesmo sistema, pode interferir no funcionamento da transação corrente. Asse-gurar a propriedade de Isolamento é de responsabilidade de um componente do sistema debanco de dados chamado Controle de Concorrência.

Na propriedade de Durabilidade, depois de uma transação completar com sucesso (com-mit), as mudanças que ela fez no banco de dados persistem, até mesmo se houver falhasno sistema. A Durabilidade é assegurada também pelo próprio sistema de banco de dados,mais especi�camente pelo componente de Gerenciamento de Recuperação.

Conforme explicado anteriormente, a alternativa correta da questão é a letra C.

Página 101 de 120www.handbookdeti.com.br

Page 103: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

44. Assuntos relacionados: Banco de Dados, Transações de Banco de Dados, Serialização,Controle de Concorrência, Grafo de Precedências,Banca: CesgranrioInstituição: BNDESCargo: Analista de Sistemas - DesenvolvimentoAno: 2008Questão: 41

Duas transações (T1 e T2) de banco de dados executam as seguintes seqüências de operações:

T1:Na tabela DEPARTAMENTO, bloqueia a linha N em modo compartilhado;Na tabela DEPARTAMENTO, lê a coluna DESPESA da linha N;Na tabela DEPARTAMENTO, desbloqueia a linha N;Na tabela PROJETO, bloqueia a linha M em modo compartilhado;Na tabela PROJETO, lê a coluna VERBA da linha M;Na tabela PROJETO, desbloqueia a linha M;Na tabela PROJETO, bloqueia a linha M em modo exclusivo;Na tabela PROJETO, escreve a coluna VERBA da linha M com o valor VERBA + DES-PESA;Na tabela PROJETO, desbloqueia a linha M;

T2:Na tabela PROJETO, bloqueia linha M em modo compartilhado;Na tabela PROJETO, lê a coluna VERBA da linha M;Na tabela PROJETO, desbloqueia a linha M;Na tabela DEPARTAMENTO, bloqueia a linha N em modo compartilhado;Na tabela DEPARTAMENTO, lê a coluna DESPESA da linha N;Na tabela DEPARTAMENTO, desbloqueia a linha N;Na tabela DEPARTAMENTO, bloqueia a linha N em modo exclusivo;Na tabela DEPARTAMENTO, es creve a coluna DESPESA da linha N com o valor DES-PESA + VERBA;Na tabela DEPARTAMENTO, desbloqueia a linha N;

É correto a�rmar que essas transações

(a). não são serializáveis e, portanto, não podem ser executadas concorrentemente.

(b). não podem entrar em bloqueio in�nito porque obedecem ao protocolo de bloqueioem duas fases (two-phase locking).

(c). podem entrar em bloqueio in�nito (deadlock) se executadas concorrentemente.

(d). obedecem ao protocolo de bloqueio em duas fases (two-phase locking).

(e). são serializáveis e obedecem ao protocolo de bloqueio em duas fases (two-phaselocking).

Solução:

Para resolvermos essa questão, é necessário conhecer, primeiramente o conceito de seriali-zação e concorrência de transações. Todo sistema gerenciador de banco de dados (SGBD)deve garantir que qualquer transação executada por ele atenda aos 4 atributos ACID dastransações:

Página 102 de 120www.handbookdeti.com.br

Page 104: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

• A - Atomicidade: uma transação é considerada como um elemento único. Isso querdizer que ela só pode ser efetivada quando todos os comandos nela contidos foremexecutados sem falhas e na ordem em que foram programados. Em caso de erro, todasas operações devem ser desfeitas. A atomicidade garante que a ideia do usuário deestar executando uma única ação se concretize, muito embora, no banco de dados, essaação se traduza em uma sequência de comandos e operações;

• C - Consistência: ao �nal de uma transação o banco de dados deve estar em um estadoconsistente; um estado que esteja de acordo com o esperado pelo sistema a que eleatende, considerando o estado inicial logo anterior à transação;

• I - Isolamento: as transações não devem afetar o funcionamento umas das outras nemdevem enxergar os resultados parciais entre si;

• D - Durabilidade: o resultado �nal de cada transação deve ser permanente. Umavez completa, o SGBD deve garantir que o novo estado do banco seja o mesmo paraqualquer outra transação seguinte.

Para garantir essas características das transações, os SGBD's implementam mecanismosde controle de concorrência. Há várias propostas de mecanismos de controle de concor-rência. A concorrência de transações é algo desejado, uma vez que possibilita um melhoraproveitamento dos recursos computacionais. Na maioria dos casos, transações irão atuarem dados distintos e, portanto, a paralelização delas permite que os recursos computacio-nais disponíveis sejam administrados entre elas, aumentando a e�ciência da máquina. Porexemplo, enquanto uma transação busca dados no disco, outra pode trabalhar com os quejá buscou realizando cálculos no processador. A capacidade de um SGBD de paralelizartransações garantindo que o resultado �nal do banco seja consistente, ou seja, equivalentea execução serial das transações (isto é, uma após a outra) é conhecida como seriabilidade.

A ordem que as operações de transações concorrentes é executada de�ne um escalonamentodessas transações. Quem de�ne o escalonamento é o SGBD. A seriabilidade de um escalona-mento de transações é ditada pelo grafo de precedência gerado a partir dos tipos de acessoaos dados comuns envolvidos nas transações. Grafos de precedência que gerem ciclos nãosão serializáveis.

Para montar o grafo de precedências de um escalonamento deve-se seguir os seguintes passos:

1. para cada transação Ti participante do esquema S criar um nó Ti no grafo de prece-dência;

2. para cada operação em S onde Tj executa um read (X) após um write (X) executadopor Ti, criar um arco Ti -> Tj no grafo;

3. para cada operação em S onde Tj executa um write (X) após um read (X) executadopor Ti, criar um arco Ti -> Tj no grafo;

4. para cada operação em S onde Tj executa um write (X) após um write (X) executadopor Ti , criar um arco Ti -> Tj no grafo;

5. um esquema S é serializável se e somente se o grafo de precedência não contiver ciclos.

Para chegarmos ao gabarito da questão, o conceito de seriabilidade e a ideia contida naanálise de grafos de precedência será essencial.

A questão em tela menciona em 3 de suas opções (B, D e E) um tipo de mecanismode controle de concorrência conhecido como two-phase locking. Este mecanismo prevê duasfases durante a execução da transação: fase de expansão e fase de encolhimento.

Página 103 de 120www.handbookdeti.com.br

Page 105: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Na fase de expansão, a transação vai realizando bloqueios (locks) nos objetos em que precisade acesso e não os desbloqueia até a fase seguinte. Esses bloqueios podem ser de 2 tipos:

• Compartilhado (shared) - onde a própria transação e todas as outras concorrentespodem apenas ler os objetos bloqueados e nenhuma pode alterá-los;

• Exclusivo (exclusive) - o objeto �ca acessível apenas para a transação tendo ela direitosde alterá-lo inclusive.

Na fase de encolhimento, a transação não executa mais nenhum bloqueio sobre nenhum ob-jeto e vai gradativamente liberando os bloqueios que conseguiu na fase de expansão conformenão necessita mais deles.

Considerando essa característica, é possível ver com um simples exemplo que esse tipo decontrole de concorrência pode levar a casos de bloqueio in�nito (deadlock). Suponha duastransações T3 e T4 escalonadas conforme Figura 7:

Figura 7: escalonamento.

Nesse escalonamento, ambas as transações �cam esperando a liberação de recursos comunsa elas que já foram previamente alocados transversalmente. Nenhuma das duas conseguiráo recurso esperado e nunca terminarão.

Esse tipo de problema pode ser corrigido através de outros mecanismos de controle detransações, mas não estão no escopo da questão.

Retornando à análise das opções da questão, vemos claramente que as assertivas (B), (D) e(E) estão erradas, visto que as transações não utilizam o mecanismo de two-phase locking.A letra (B) inclusive diz que tal mecanismo impede a ocorrência de bloqueio in�nito, o quejá foi visto que está errado. A letra (E) menciona ainda que as transações são serializáveis,o que também é falso e será mostrado em breve.

A opção (C) diz que há possibilidade de bloqueio in�nito na execução concorrente dastransações. Entretanto isso é completamente impossível. As transações da questão mantémbloqueado apenas um objeto por vez. Logo, mesmo que o escalonamento levasse uma aprecisar do objeto bloqueado pela outra, eventualmente a transação que detinha o bloqueioo liberaria, permitindo o retorno da execução da que aguardava.

Página 104 de 120www.handbookdeti.com.br

Page 106: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Durante a prova, é importante utilizar a eliminação de opções erradas como feito acimapois nesse caso os erros estão bastante visíveis. Isso economiza um tempo precioso que vocêpoderá gastar em outras questões ou revisando a prova. A conclusão da exatidão da asser-tiva (A) depende da análise das operações contidas nas transações e da geração dos grafos deprecedência de vários escalonamentos possíveis. Isso demanda muito tempo e, dependendoda situação, pode ser até mesmo impossível. Nesse caso, deve-se reparar que, em qualquerescalonamento proposto, alguma das transações terminará escrevendo em um dos dados quefoi lido anteriormente pela outra. Esta, por sua vez, utilizará um dado inconsistente paraseus cálculos. Esse fenômeno é conhecido como leitura suja (dirty read), e também deve serimpedido pelos SGBDs. Dessa observação, vê-se que as transações não são serializáveis.

Página 105 de 120www.handbookdeti.com.br

Page 107: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

45. Assuntos relacionados: Banco de Dados, SQL, Gerência de Transações, Visões de Bancode Dados,Banca: CesgranrioInstituição: BNDESCargo: Analista de Sistemas - DesenvolvimentoAno: 2008Questão: 46

Um funcionário, encarregado de veri�car o correto funcionamento de uma base de dadosrelacional, faz o seguinte teste:

select nome from emp where matr = 123;

O resultado é vazio. Então ele executa:

insert into emp(matr, nome, salario, ativo)values (123, `José da Silva', 2000, `N');commit;

O banco de dados não retorna erro e informa que inseriu uma linha. Por �m, para ve-ri�car, ele consulta novamente:

select nome from emp where matr = 123;

O resultado continua vazio. Supondo que o sistema gerenciador de banco de dados estejafuncionando corretamente, que opção explica o ocorrido?

(a). Como o funcionário executou o primeiro SELECT momentos antes de executar oINSERT, o resultado �cou na memória cache do computador e não foi executadopelo banco de dados na segunda vez. Somente após protocolo LRU ter retiradodo cache o resultado do SELECT é que ele será novamente executado.

(b). Como �emp� é uma visão e uma visão é nada menos que uma consulta gravada nobanco de dados, nunca é possível usá-la em operações de manipulação de dados.O COMMIT ignora a inserção anterior.

(c). �emp� é uma visão que retorna todos os empregados ativos (ativo='S'), mas foicriada sem a expressão WITH CHECK OPTION, que evitaria o problema acima.

(d). �emp� não é uma tabela, mas uma visão que retorna todos os empregados ativos(ativo='S') e foi criada com a expressão WITH CHECK OPTION. Dessa forma,como o empregado José da Silva não está ativo, o banco de dados não gravou oregistro no momento do COMMIT.

(e). O funcionário executou o SELECT pouco tempo após a inserção do registro.Mesmo �nalizando a transação com o COMMIT, o registro está em memória eainda não foi gravado no disco. Somente após o CHECKPOINT é que o registroestará disponível para consulta.

Solução:

O comando COMMIT efetiva a transação sendo executada. Todas as modi�cações efetua-das pela transação se tornam visíveis para os outros, e existe a garantia de permaneceremse uma falha ocorrer, pois o sistema gerenciador de banco de dados mantém um registro,chamado log, de todos os dados que foram escritos no bando de dados. O log é utilizado

Página 106 de 120www.handbookdeti.com.br

Page 108: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

para garantir a propriedade de durabilidade � se o sistema sofrer uma queda antes que asalterações geradas por uma transação que foi executada satisfatoriamente forem persistidasem disco, o log é utilizado para restaurar essas informações quando o sistema for normalizado.

Eventualmente, a transação pode não ter sido efetivada com sucesso, neste caso o sistemagerenciador de banco de dados se encarrega em desfazer as alterações. Entretanto, não é ocaso da questão, pois a informação de que uma linha foi inserida e a existência do COMMITindica que a transação foi efetivada com sucesso. No COMMIT, os dados que foram altera-dos ou inseridos na transação são imediatamente visíveis para consultas que são executadasdepois. Esse fato elimina as alternativas (A) e (E) .

Views são consultas SQL que, em situações diversas, podem ser utilizadas no papel detabelas relacionais. Entretanto, diferentemente das tabelas, os registros de uma view nãosão armazenados na base de dados. Podemos imaginar uma view como uma tabela quetivesse uma instância virtual, que é construída cada vez que a mesma é invocada. Quandouma view é referenciada em expressões SQL, o gerenciador de bancos de dados manipula oresultado da consulta que de�ne a view como se fosse uma tabela normal.

A similaridade com tabelas estende-se ao ponto de permitir atualizações sobre os virtu-ais registros de uma view. Quando um novo registro é inserido, ou quando um registroexistente é alterado ou removido, na verdade o SQL inclui, altera ou remove registros nastabelas que compõem a view. Esse fato elimina a alternativa (B).

Cada implementação tem critérios ligeiramente diferentes para decidir se uma view podeou não ser atualizada. Como norma geral, entretanto, as seguintes restrições devem serobservadas na construção de uma view para que a mesma seja atualizável. Uma colunaatualizável não pode ser resultante de:

• funções de agregação, tais como sum, avg, etc.;

• funções escalares, tais como sin, trim, etc.;

• expressões aritméticas;

• expressões condicionais, tais como case, iif, etc.;

• literais;

• subconsultas.

Uma view atualizável deve conter

• pelo menos uma fonte de registros atualizável referenciada na cláusula from.

Uma view atualizável não pode conter:

• operadores algébricos, tais como union;

• a cláusula group by;

• a cláusula distinct.

As restrições acima formam um conjunto genérico de características das views atualizáveis.Essas regras, entretanto, devem ser analisadas à luz das operações pretendidas. Por exem-plo, uma view que tenha algumas colunas baseadas em expressões aritméticas talvez nãopossa ser objeto de um comando update nesses atributos, mas pode permitir a remoção deregistros. Por este e outros motivos, a lida de cada implementação com essa questão variabastante, e cada caso merece uma análise cuidadosa.

Página 107 de 120www.handbookdeti.com.br

Page 109: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Em views atualizáveis, temos a opção CHECK OPTION no momento de sua criação. Todosos comandos INSERT e UPDATE em uma view serão veri�cadas para garantir que os dadossatisfazem as condições que de�nem a visão. Se não satis�zer, a atualização será rejeitada.

Analisando as alternativas que ainda não foram eliminadas (C e D), supomos que a view emquestão representa todos empregados ativos (ativo='S'). Como a inserção trata da inserçãode um empregado inativo, a existência da opção CHECK OPTION impediria a sua inserção,mas não foi o que ocorreu, já que fomos informados de que uma linha foi inserida. Logo,concluímos que a opção CHECK OPTION não foi utilizada na de�nição da view �emp� e,portanto, a alternativa C representa a alternativa correta.

Página 108 de 120www.handbookdeti.com.br

Page 110: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

46. Assuntos relacionados: Banco de Dados, Escalonamento de Banco de Dados, Serializabi-lidade, Durabilidade, Leitura Limpa, Clean Read, Leitura Suja, Dirty Read,Missing Deadlock,Deadlock Ausente, Commit Alcançado, Reached Commit,Banca: CesgranrioInstituição: PetrobrasCargo: Analista de Sistemas - Processos de NegócioAno: 2008Questão: 28

A execução de um conjunto de transações em um banco de dados é chamado de escalona-mento. O critério para um escalonamento ser considerado correto é a(o)

(a). serializabilidade.

(b). durabilidade.

(c). leitura limpa (clean read).

(d). deadlock ausente (missing deadlock).

(e). commit alcançado (reached commit).

Solução:

A serializabilidade consiste em, dado um conjunto de transações, independentemente daforma como seus comandos são intercalados na execução, o resultado obtido equivale àexecução serial das transações. O escalonamento de transações em um SGBD (Sistema Ge-renciador de Bancos de Dados) deve ter como alvo a serializabilidade, de forma a garantir aintegridade das informações. Sendo assim, a opção correta é a letra (A).

As demais opções tratam de características das transações em si ou mesmo de caracte-rísticas que, juntas, traduzem a intenção da serializabilidade. A durabilidade, citada naletra (B), é uma das 5 características ACID desejadas para as transações em si. Ela dizque as alterações geradas por uma transação devem permanecer no banco após a efetivaçãoda mesma, garantindo sua efetivação real. No caso de uma falha do sistema, a transaçãoque tiver sido efetivada deve permanecer efetivada no banco para que a durabilidade sejaatendida. Repare que essa característica é imprescindível para as transações e não para oescalonamento.

A leitura limpa é uma das características que compõe a serializabilidade. Ela prevê que,diferentemente da leitura suja, os dados lidos pelas transações estejam sempre coerentescom o estado do início da transação e sejam sempre coerentes. O deadlock ausente é outracaracterística que compõe a serializabilidade. Nesse caso, o escalonamento, tal qual a exe-cução serial das transações, deve impedir que os recursos cedidos à transações concorrentesnão gerem con�itos de interesse entre ambas e impeça mutuamente a execução destas. Es-tas características são tratadas no controle de concorrência. Entretanto, estão intimamenteligadas ao escalonamento, visto que in�uenciarão diretamente nele.

Página 109 de 120www.handbookdeti.com.br

Page 111: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

47. Assuntos relacionados: Banco de Dados, Concorrência entre Transações,Banca: CesgranrioInstituição: PetrobrasCargo: Analista de Sistemas - InfraestruturaAno: 2008Questão: 57

Considere as duas transações (T1 e T2) de banco de dados abaixo.

read_lock - implementa bloqueio compartilhado no item de banco de dados write_lock -implementa bloqueio exclusivo no item de banco de dados unlock - desbloqueia o item debanco de dados read_item - executa a leitura do item write_item - executa a escrita do item

É correto a�rmar que estas transações

(a). seguem o protocolo de bloqueio em duas fases e não entram em impasse (deadlock),se executadas concorrentemente.

(b). podem entrar em impasse (deadlock), se executadas concorrentemente.

(c). são serializáveis e não seguem o protocolo de bloqueio em duas fases.

(d). não são serializáveis e, portanto, podem ser executadas concorrentemente.

(e). não seguem o protocolo de bloqueio em duas fases, não sendo portanto serializáveis.

Solução:

Uma transação é uma unidade lógica de processamento que pode incluir uma ou mais ope-rações sobre o Banco de Dados. Entende-se por transações concorrentes aquelas que sãoexecutadas ao mesmo tempo e pelo menos uma operação WRITE é executada por algumadas transações.

Podemos observar que estas duas transações implementam o protocolo de bloqueio de duasfases (Two-Phase Locking - 2PL), pois ambas possuem uma fase de crescimento (growning)e uma fase de encolhimento (shrinking), em que todos os read_locks e write_locks ocorremna primeira fase, enquanto que os unlocks ocorrem na segunda fase (na verdade, tão logo atransação libera um bloqueio, ela entra na fase de encolhimento e não poderá solicitar novosbloqueios). Portanto, podemos descartar as alternativas C e E.

Lembre-se que a instrução read_lock permite que outras transações apenas leiam o mesmoitem de dado e a write_lock impede que qualquer operação de escrita ou leitura possa serrealizada por outra transação sobre um item que esteja bloqueado para escrita. Além disso,a qualquer hora podem ser feitos diversos bloqueios compartilhados (read_lock) simultane-amente (por diferentes transações) sobre um item de dado particular. Já uma solicitação de

Página 110 de 120www.handbookdeti.com.br

Page 112: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

bloqueio exclusivo (write_lock) precisa esperar até que um bloqueio compartilhado terminepara ser efetivada.

Considere o caso em que estas duas transações são executadas simultaneamente, isto é,as instruções de cada transação podem ser intercaladas. A atribuição da ordem dessasinstruções é conhecida como escala de execução. Suponha que o sistema de controle deconcorrência tenha gerado a seguinte escala de execução:

T1 T2read_lock(Y)

read_lock(X)read_item(Y)write_lock(X)

read_item(X)write_lock(Y)

unlock(Y)read_item(X)X := X + Ywrite_item(X)unlock(X)

unlock(X)read_item(Y)Y := Y + Xwrite_item(Y)unlock(Y)

1. a transação T1 requer o bloqueio compartilhado sobre o item de dados Y. Como nãohá nenhum bloqueio exclusivo sobre este item, o sistema de controle de concorrênciaconcede o bloqueio a T1;

2. a transação T2 requer o bloqueio compartilhado sobre o item de dados X. Como nãohá nenhum bloqueio exclusivo sobre este item, o sistema de controle de concorrênciaconcede o bloqueio a T2;

3. a transação T1 requer o bloqueio exclusivo sobre o item de dados X. Esta transaçãoprecisa esperar até que bloqueio compartilhado sobre X termine para que, somenteassim, o bloqueio seja efetivado;

4. a transação T2 requer o bloqueio exclusivo sobre o item de dados Y. Esta transaçãoprecisa esperar até que bloqueio compartilhado sobre X termine para que, somenteassim, o bloqueio seja efetivado.

Podemos observar, neste ponto, que T1 está �parada� esperando que T2 libere X, e estatambém está �parada� à espera que T1 libere Y. A esta situação de impasse damos o nomede deadlock. Descartamos, assim, a alternativa A.

Por �m, lembre-se que o protocolo de bloqueio em duas fases garante a serialização decon�itos (onde uma sequência de instruções pertencentes a uma única transação aparecemjuntas), porém não garante a ausência de deadlocks. Além disso, uma forma de garantir aconsistência em execução simultânea (concorrente) é cuidar para que qualquer escala execu-tada seja, de certa forma, equivalente a uma escala serial. Eliminamos, assim, a alternativaD. Portanto, a alternativa B está correta.

Página 111 de 120www.handbookdeti.com.br

Page 113: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

48. Assuntos relacionados: Banco de Dados, Isolamento entre Transações, Escala de Execu-ção,Banca: CesgranrioInstituição: PetrobrasCargo: Analista de Sistemas - InfraestruturaAno: 2008Questão: 60

Uma transação em um sistema de banco de dados pode ser descrita como uma unidade deexecução de programa que acessa e, possivelmente, atualiza vários itens de dados. Para ogerenciamento de transações em sistemas de bancos de dados, assinale a a�rmação correta.

(a). Atomicidade para uma transação signi�ca que cada operação de uma transação ére�etida na base de dados ou nenhuma operação o é.

(b). Um escalonamento é a ordem de execução de várias transações de forma concor-rente, mas nunca entrelaçada.

(c). Integridade para uma transação signi�ca que a execução de uma transação deforma isolada (sem sofrer concorrência de outra transação) preserva a consistênciada base de dados.

(d). Mesmo após a execução de um comando commit, é possível a uma transaçãoretornar a seu estado inicial com a utilização de rollback.

(e). Em transações que ocorrem simultaneamente, não existe qualquer garantia de queos dados lidos em um determinado momento são consistentes, independente donível de isolamento utilizado.

Solução:

Como o enunciado bem mencionou, uma transação em um sistema de banco de dados podeser descrita como uma unidade de execução de programa que acessa e, possivelmente, atua-liza vários itens de dados. As quatro propriedades fundamentais das transações, usualmenteconhecidas como ACID, são as seguintes:

• atomicidade: o conjunto de operações de uma transação é indivisível, de modo que sófaz sentido se for executado por completo. Ou seja, para que a transação faça sentido,todas as operações que a compõe devem ser executadas;

• consistência: cada transação deve levar o banco de dados de um estado consistentepara outro estado também consistente;

• isolamento: a execução de uma transação não deve ser prejudicada pela execução deoutras transações que sejam executadas de forma concorrente;

• durabilidade: as alterações realizadas por uma transação con�rmada devem persistirno banco de dados.

Com base no princípio de Atomicidade (que vem de atômico, ou seja, indivisível) apre-sentado, podemos a�rmar que a alternativa A está correta. Portanto, ela é a resposta daquestão.

Na alternativa B, é abordado o conceito de escala (ou escalonamento) de execução de tran-sações. Quando várias transações são executadas de forma concorrente, as operações decada transação podem ser intercaladas. Portanto, a alternativa B está errada. A ordemde execução das operações das múltiplas transações que executam de forma concorrente é

Página 112 de 120www.handbookdeti.com.br

Page 114: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

chamada escala de execução. É responsabilidade do SGDB escolher uma escala de execuçãoque deixe o banco de dados em estado consistente.

A a�rmativa trazida na alternativa C, diz respeito a propriedade Consistência. Repareque no início da a�rmativa é citado o termo Integridade, que não é uma das propriedadesdas transações. Ao �m, o elaborador da questão tenta confundir o candidato usando otermo Consistência, que por sua vez é uma das propriedades da questão. De todo modo, aa�rmativa está errada.

A alternativa D está errada pois o comando COMMIT é utilizado justamente para con�rmaras operações realizadas pela transação. Após a sua utilização, a transação está concluída,não sendo mais possível levar a transação ao seu estado inicial.

Já a alternativa E trata do conceito de níveis de isolamento na execução de transações.Como vimos, o isolamento diz respeito a interferência das transações entre si quando sãoexecutadas de forma concorrente. Para lidar com essa propriedade, o padrão SQL de�nequatro níveis de isolamento que podem ser implementados pelos SGBDs em termos de trêsfenômenos que devem ser evitados entre transações concorrentes. Os fenômenos são osseguintes:

• leitura suja (dirty read): uma transação lê valores que foram escritos por outratransação ainda não con�rmada;

• leitura não-repetitiva (nonrepeatable read): uma transação lê o valor de ummesmo objeto mais que uma vez e encontra valores diferentes nas leituras realizadas;

• leitura fantasma (phantom read): caso uma consulta seja realizada mais que umavez, e em cada execução, sejam retornados resultados com conjuntos diferentes deregistros, modi�cados por outras transações.

Para lidar com estes fenômenos, os quatro níveis de isolamento estabelecem políticas que,quanto mais abertas, mais estimulam a concorrência, tornando a ocorrência destes fenômenosmais provável. Os níveis com políticas mais restritivas evitam a ocorrência desses fenômenos,porém tornam a execução mais lenta.

Nível de Isolamento Dirty Read Nonrepeatable Read Phantom ReadRead uncommitted Possível Possível PossívelRead committed Impossível Possível PossívelRepeatable read Impossível Impossível PossívelSerializable Impossível Impossível Impossível

Tabela 6: níveis de isolamento de transações.

A Tabela 6 mostra os quatro níveis e suas respectivas susceptibilidades aos fenômenos. Comisso, a alternativa E está errada, já que a consistência dos dados lidos em um cenário deexecução concorrente de transações depende do nível de isolamento empregado.

Página 113 de 120www.handbookdeti.com.br

Page 115: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

49. Assuntos relacionados: Banco de Dados, ACID, Atomicidade em Transação, Consistên-cia em Transação, Isolamento entre Transações, Durabilidade em Transação,Banca: CesgranrioInstituição: PetrobrasCargo: Analista de Sistemas Pleno - ProcessosAno: 2006Questão: 22

T11 Ler(A);2 A = A � 30;3 Escrever(A);4 Ler(B);5 B = B + 30;6 Escrever(B);

A transação T1, pertencente a um sistema bancário e de�nida pelas operações listadas acima,é responsável pela transferência de R$ 30,00 da conta A para a conta B. Considere tambémuma transação T2 que esteja sendo executada simultaneamente a T1. Caso a transação T2realize uma operação Escrever(B) após a execução da operação 4 e antes da execução daoperação 6 por T1, qual das propriedades das transações estará sendo violada no banco dedados do sistema bancário?

(a). Atomicidade.

(b). Distributividade.

(c). Consistência.

(d). Durabilidade.

(e). Isolamento.

Solução:

O cerne desta questão está relacionado às propriedades de um transação em banco de dados.

Uma transação é um conjunto de operações em banco de dados, possivelmente de leiturae/ou alteração, que devem ser executadas como uma única unidade de trabalho. Elas devemser processadas de forma con�ável, de tal forma que nenhum dado se perca, ou seja indevi-damente alterado, em decorrência de múltiplos usuários e possíveis falhas de sistema. Umexemplo típico de transação é a uma transferência bancária entre contas. Ela exige váriasoperações (débito na conta de origem, crédito na conta de destino, cobrança de taxas, etc.),mas todas são processas como uma única unidade. É dessa forma que se elimina a possibili-dade de situações indesejadas no que se refere a banco de dados, como: débito na conta deorigem sem o devido crédito na conta de destino; crédito na conta de destino sem o devidodébito na conta de origem; cobrança de taxas sem a devida efetivação da transferência.

São os Sistemas de Gerenciamento de Banco de Dados (SGBD) que devem assegurar quetransações obedeçam certas propriedades. A�nal de contas, são eles que são responsáveispelo gerenciamento do banco de dados (como o seu próprio nome já diz). Dessa forma,garante-se que sempre os dados do banco estarão íntegros.

Página 114 de 120www.handbookdeti.com.br

Page 116: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

As propriedades mais importantes e mais difundidas entre os SGBDs são as que formamo acrônimo ACID:

• atomicidade: ela assegura que a transação é indivisível. Ou todas as operações que acompõem são concluídas ou nada é realizado. Isso implica que quando uma transaçãotem que ser abortada, por qualquer motivo, as suas operações que eventualmente formaconcluídas devem ser desfeitas. Essa forma de �desfazer� uma transação recebe o nomede rollback. No nosso exemplo acima, é esta a propriedade que garante que nenhumasituação não desejada citada acima ocorra;

• consistência: ela garante que as regras de integridade do banco de dados, de�nidaspelo seu projetista, serão sempre preservadas. Caso uma transação tente levar o bancoa uma estado não-íntegro, o SGBD abortará essa transação. Vejamos um exemplono caso de uma transferência bancária. Caso haja hipoteticamente uma restrição deintegridade que diga que qualquer conta bancária não possa �car com saldo negativo euma transação tente transferir R$500,00 a partir de uma conta com apenas R$200,00,o SGBD não permitirá a conclusão dessa transação;

• isolamento: ela garante que transações não interferem umas com as outras, exceto deforma permitida. De maneira geral, uma transação nunca deve sobrescrever alteraçõesfeitas por outra transação. Além disso, outras restrições podem ser estabelecidas,como por exemplo habilitar/desabilitar leitura de mudanças temporárias realizadaspor outras transações. Esta propriedade é assegurada pelo componente chamado deControle de Concorrência. Este é justamente o caso descrito no enunciado. Como atransação T2 escreve na conta B após a leitura dessa conta pela transação T1, quantoT1 for escrever na conta B (linha 6), a escrita feita por T2 será simplesmente sobrescrita.Portanto, é a alternativa E que o candidato deve marcar;

• durabilidade: ela assegura que qualquer alteração resultante de uma transação serápermanente. E isso deve ser verdade mesmo em caso de falha de sistema após aconclusão da transação. Imagine que uma transferência bancária seja feita em umcaixa eletrônico e que 30 segundos depois da sua conclusão o equipamento falhe. É apropriedade de durabilidade que garante que a tal transferência permanece válida nasua conta.

Já a alternativa B nos traz a propriedade de distributividade, que não tem um relacionamentodireto com transações de banco de dados. Essa propriedade está relacionada a operaçõesalgébricas (da Matemática ou Relacional). Um exemplo bem simples de distributividade évisto entre operações de soma: (3+6)+5 = 3+(6+5) = 14. Ou seja, como a ordem entreas execuções dessas operações não interfere no resultado, se diz que esse tipo de operaçãorespeita a propriedade de distribuitividade.

Página 115 de 120www.handbookdeti.com.br

Page 117: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

50. Assuntos relacionados: SGBD, Consulta SQL, Modelo Relacional, Concorrência entreTransações, Controle de Concorrência, Two-Phase Locking (2PL),Banca: CespeInstituição: ANACCargo: Analista Administrativo - Tecnologia da InformaçãoAno: 2009Questão: 68�70

Segundo Abraham Silberschatz, um Sistema Gerenciador de Banco de Dados (SGBD) éconstituido por um conjunto de dados associados a um conjunto de programas para acessoa esses dados. (Silberschatz, Abraham; Korth, Henry F e Sudarshan, S. Sistema de Bancode Dados. Makron Books, 1999. p. 1.)

Acerca dos conceitos e características do Sistema Gerenciador de Banco de Dados, julgue ositens a seguir.

68 No processamento de uma consulta expressa em uma linguagem de alto nível, como aSQL, o SGBD deve planejar uma estratégia de execução para recuperar o resultado daconsulta, a partir dos arquivos do banco de dados.

69 Um banco de dados relacional é um banco de dados em que a estrutura tem a formade tabelas. Formalmente uma relação R de�nida sobre n conjuntos D1, D2, . . . , Dn(Dominio - conjunto de valores obrigatoriamente distintos) é um conjunto de n-tuplas(ou simplesmente tuplas) <d1, d2, . . . , dn> tais que d1 ∈ D1, d2 ∈ D2, . . . , dn ∈ Dn.

70 Para o SGBD viabilizar a execução de transações concomitantemente existem diversastécnicas de controle de concorrência que são utilizadas para garantir propriedade denão-interferência ou isolamento de transações. Uma dessas técnicas é o controle deconcorrência baseado em ordenamento de registro de timestamp que utiliza o bloqueiocombinado com o Protocol Two-Phase locking (2PL).

Solução:

Um Sistema Gerenciador de Banco de Dados (SGBD) é uma coleção de arquivos e programasque estão inter-relacionados, permitindo ao usuário acesso a consultas e alterações dessesdados. Essa coleção de arquivos ou conjunto de dados é chamado de banco de dados.

O principal objetivo de SGDB é oferecer um ambiente tão e�ciente quanto convenientepara armazenamento e recuperação das informações que estão no banco de dados. O maiorbenefício de um SGBD é proporcionar uma visão abstrata dos dados, isto é, o sistema ocultaalguns detalhes de como esses dados estão armazenados e como são mantidos.

A seguir analisamos os itens referentes ao SGBD:

68 CERTO

Dentre as funções básicas desempenhadas pelo SGBD, está a de processamento deconsultas. Uma consulta nada mais é que uma solicitação para recuperação de infor-mação no banco de dados.

Nos processamentos de consultas são realizadas diversas tarefas para extrair informa-ção do banco de dados. As tarefas básicas envolvidas são: análise sintática e tradução;otimização; e avaliação.

Página 116 de 120www.handbookdeti.com.br

Page 118: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Antes do processamento de uma consulta, o SGBD deve traduzir uma linguagem dealto nível, como a SQL, para uma representação interna de uma consulta ao sistema.Ou seja, nesta geração da forma interna é realizada uma análise sintática da sintaxe daconsulta, e, então uma tradução para uma expressão algébrica relacional (representaçãointerna).

A tarefa de otimização compreende em selecionar um plano de avaliação de consultaque seja mais e�ciente para a consulta. Ou seja, são realizadas tentativas de encontraruma expressão equivalente e mais e�ciente a consulta dada.

Uma vez o plano de consulta selecionado, a consulta é avaliada com esse plano e resul-tado da consulta é produzido.

Então, conforme explicado anteriormente, o SGBD de�ne uma estratégia de execu-ção (análise sintática e tradução, otimização e avaliação) para execução de consultas.Portanto, este item está certo.

69 ERRADO

Sob a estrutura de um banco de dados está o modelo de dados. Existem vários modelos,mas o principal é o modelo relacional.

O modelo relacional, que é um modelo com base em registros, utiliza um conjuntode tabelas para representar tanto os dados quanto as relações entre eles. Cada tabelapossui múltiplas colunas, cada uma com nome único. Cada coluna da tabela é chamadade atributo.

Formalmente, dado uma coleção de conjuntos D1, D2, . . . ,Dn, não necessariamentedistintos, uma relação R é de�nida sobre esses n conjuntos se for constituída por umsubconjunto de n-tuplas <d1, d2, . . . , dn> tal que d1 E D1, d2 E D2, . . . , dn E Dn.

Note que, o enunciado deste item a�rma que domínio é um conjunto de valores obri-gatoriamente distintos. Portanto, este item está errado.

70 ERRADO

Entende-se por transações concorrentes aquelas que desejam executar ao mesmo tempoe pelo menos uma operação de escrita no banco de dados.

Embora diversas transações possam ser executadas de forma concorrente, o SGDBdeve garantir que uma transação não tome conhecimento de outras transações concor-rentes no sistema com forma de garantir a consistência dos dados. Ou seja, O SGBDdeve garantir o isolamento entre as transações concorrentes.

O isolamento de uma transação garante que a execução de transações concorrentesresulte em uma situação no SGBD equivalente caso as transações tivessem sido exe-cutadas uma de cada vez. Note que a execução concorrente de transações aumenta odesempenho do SGBD em termos do número de transações que o sistema pode executarem um determinado período e do tempo médio de resposta.

Página 117 de 120www.handbookdeti.com.br

Page 119: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

A forma mais simples de implementar um controle de concorrência é por meio dautilização de mecanismos de bloqueios baseados em locks binários, como operações delock e unlock. Porém, os locks binários têm o inconveniente de não permitir que duasou mais transações que desejam realizar uma operação de leitura no banco de dadosacessem o item simultaneamente, o que reduz o desempenho do SGBD.

Para contornar esse problema, foi criado outro mecanismo de lock baseado em 3 ope-rações: read_lock, write_lock e unlock. A read_lock é utilizada quando uma transaçãodeseja ler um item no banco de dados. A write_lock é utilizada quando uma transaçãodeseja escrever no banco de dados. E, a unlock é utilizada após o término das operaçõesread_lock e write_lock.

Embora, os locks binários e os locks read/write garantam a exclusividade de execu-ção de uma transação, eles não garantem a serialização das transações concorrentes. Aserialização é uma propriedade do SGBD que garante que independente da ordem dosacessos aos dados feitos pelas transações, o resultado �nal será o mesmo (vide Figura8).

Figura 8: exemplo de transações serializáveis.

Outra técnica que visa solucionar o problema de exclusividade e de serialização é autilização do algoritmo de bloqueio de duas fases (Two-Phase Locking - 2PL). Este al-goritmo tem duas fases: a primeira consiste na obtenção de locks, chamada de growing;e a segunda consiste na liberação de locks. O principal problema desse tipo de controlede concorrência é a possibilidade de deadlocks.

Uma técnica para prevenção de deadlocks é a baseada em timestamp. Nesta técnica,a cada transação do sistema é associado um único timestamp �xo. Esse timestamp écriado pelo SGBD antes que uma transação inicie sua execução. Os timestamps dastransações determinam a ordem de serialização das transações e são atualizados a cadanova execução de leitura ou de escrita.

Conforme explicamos anteriormente, este item está errado, pois o timestamp não uti-liza o algoritmo 2PL.

Caso deseje aprofundar no assunto sobre SGBD, recomendamos a seguinte referência

Página 118 de 120www.handbookdeti.com.br

Page 120: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Sistema de banco de dados - Silberschatz, Abraham; Korth, Henry F e Sudarshan.

Página 119 de 120www.handbookdeti.com.br

Page 121: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Questão Resposta

1 D

2 A

3 B

4 D

5 E

6 B

7 E

8 E

9 C

10 C

11 C

12 E

13 B

14 80 CERTO 81 ERRADO 82 ERRADO

15 C

16 A

17 E

18 B

19 C

20 E

21 B

22 E

23 C

24 C

25 E

26 C

27 E

28 E

29 A

30 E

31 B

32 A

33 A

34 C

35 A

36 B

37 E

38 A

39 B

40 C

41 A

42 B

43 C

44 A

45 C

46 A

47 B

48 A

49 E

50 68 CERTO 69 ERRADO 70 ERRADO

Página 120 de 120 Handbook de TI Além do Gabarito

Page 122: Bancos de dados - apostilando.yolasite.comapostilando.yolasite.com/resources/handbook_questoes_banco_de... · Handbook de Questões de TI Comentadas para Concursos olumeV questões

Índice Remissivo

Álgebra Relacional, 42

ACID, 49, 52, 101, 114Atomicidade em Transação, 114

Banco de Dados, 4, 5, 7, 10, 14, 16, 18, 21, 23,26, 28, 30, 33, 37, 39, 42, 44, 46, 49,52, 54, 63, 65, 67, 69, 72, 75, 77, 79,81, 83, 86, 90, 92, 94, 96, 98, 100�102,106, 109, 110, 112, 114

Bancos de Dados Distribuídos, 59

Categorias de Linguages de Banco de Dados,54

Chave Assimétrica, 37Chave Secundária, 37Chave Simétrica, 37Clean Read, 109Commit, 14Commit Alcançado, 109Concorrência entre Transações, 100, 110, 116Consistência em Transação, 114Consulta SQL, 75, 83, 90, 116Controle de Concorrência, 102, 116Criptogra�a, 37

Data Control Language (DCL), 54, 94Data De�nition Language (DDL), 54, 57, 94Data Manipulation Language (DML), 54, 57,

94Data Query Language (DQL), 54Deadlock Ausente, 109DER, 28Dicionário de Dados (DD), 4Dirty Read, 109Durabilidade, 109Durabilidade em Transação, 114

Escala de Execução, 112Escalonamento de Banco de Dados, 109

Gatilhos, 18Gerência de Transações, 106Grafo de Precedências, 102

HAVING, 86

Independência de Fragmentação, 61Independência de Localização, 61Independência do Sistema Operacional, 61

Indexação de Registros, 46Isolamento entre Transações, 112, 114

JOIN, 86

Leitura Limpa, 109Leitura Suja, 109

Missing Deadlock, 109Modelagem de Dados, 37Modelo Entidade-Relacionamento, 23, 26, 30,

33, 39Modelo Objeto-Relacionamento, 39Modelo Relacional, 30, 33, 39, 65, 69, 116

Níveis de Isolamento, 98Nível de Abstração, 44Nível de Visão, 44Nível Físco, 44Nível Lógico, 44Normalização de Banco de Dados, 63, 65, 67,

69

Operações de Composição de Relações, 83Oracle, 5, 7, 10, 12Otimizador de Consultas, 57

PL/SQL, 16Primeira Forma Normal (1FN), 63, 65, 67, 72Projeto Lógico de Banco de Dados, 30

Reached Commit, 109Rolling Back, 14Rolling Forward, 14

Savepoint, 14Segunda Forma Normal (2FN), 63, 67, 72Segurança da Informação, 37Serialização, 102Serializabilidade, 109SGBD, 4, 42, 57, 100, 116Sistemas Distribuídos, 61SQL, 12, 21, 54, 77, 79, 81, 86, 90, 92, 94, 96,

106Superchave, 37

Terceira Forma Normal (3FN), 63, 67, 72Transações de Banco de Dados, 102Transact SQL, 21Transaction Control Language (TCL), 54Triggers, 18, 96Two-Phase Locking (2PL), 116

Visões de Banco de Dados, 106121