You are on page 1of 122

Bancos de dados

para concursos Questes comentadas

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Prefcio
Banco de Dados um dos conceitos mais importantes de Cincia da Computao. Ele agrupa informaes utilizadas para um mesmo m, ou melhor, podemos entender um banco de dados como um conjunto de informaes estruturadas e que podem ser organizadas para facilitar operaes como insero, busca e remoo. Em geral, um software responsvel em gerenciar a estrutura dessas informaes e as operaes que nelas possam ser realizadas. Devido a sua grande importncia, torna-se, sem dvida, um dos assuntos mais cobrados nos concursos de TI. Ligado na importncia do assunto, o Grupo Handbook de TI preparou este volume, que traz uma srie de questes comentadas sobre Banco de Dados para voc se preparar muito bem nessa rea. Bons estudos,

Grupo Handbook de TI

Pgina 1 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Direitos Autorais
Este material registrado no Escritrio de Direitos Autorais (EDA) da Fundao Biblioteca Nacional. Todos os direitos autorais referentes a esta obra so reservados exclusivamente aos seus autores. Os autores deste material no probem seu compartilhamento entre amigos e colegas prximos de estudo. Contudo, a reproduo, parcial ou integral, e a disseminao deste material de forma indiscriminada atravs de qualquer meio, inclusive na Internet, extrapolam os limites da colaborao. Essa prtica desincentiva o lanamento de novos produtos e enfraquece a comunidade concurseira Handbook de TI. A srie

Handbook de Questes de TI Comentadas para Concursos  Alm do Gabarito

uma

produo independente e contamos com voc para mant-la sempre viva.

Grupo Handbook de TI

Pgina 2 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Canais de Comunicao
O Grupo Handbook de TI disponibiliza diversos canais de comunicao para os concurseiros de TI.

Loja Handbook de TI
Acesse a nossa loja virtual em

http://www.handbookdeti.com.br

Servio de Atendimento
Comunique-se diretamente conosco atravs do e-mail

faleconosco@handbookdeti.com.br

Twitter do Handbook de TI
Acompanhe de perto promoes e lanamentos de produtos pelo nosso Twitter

com/handbookdeti

http://twitter.

Pgina 3 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

1.

Assuntos relacionados: Banco de Dados, SGBD, Dicionrio de Dados (DD), Banca: CESGRANRIO Instituio: BNDES Cargo: Analista de Suporte Ano: 2008 Questo: 34
O catlogo (ou dicionrio de dados) de um Sistema Gerenciador de Bancos de Dados Relacional (a). visa a propiciar o acesso rpido a dados com um determinado valor. (b). um item opcional do banco de dados, que pode ser removido caso o usurio deseje. (c). raramente utilizado, sendo sua organizao pouco inuente no desempenho do sistema. (d). contm informaes descritivas sobre os diversos objetos do sistema. (e). tem seus dados organizados segundo um esquema hierrquico, para maior ecincia no acesso.

Soluo:
O dicionrio de dados (DD) a parte do sistema gerenciador de bancos de dados (SGBD) responsvel por armazenar informaes sobre a estrutura geral do banco de dados, incluindo cada um dos seus elementos de dados. Tais informaes so 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 so tabelas, colunas, relacionamentos, ndices, entre outros. No DD so armazenados os nomes das tabelas, os relacionamentos entre elas, bem como os nomes das colunas, os tipos e os domnios de dados. Alm de informaes estruturais, o DD tambm armazena informaes de segurana, que indicam as permisses de acesso aos elementos de dados, assim como informaes fsicas, indicando onde e como os dados so armazenados. Elementos como funes e stored procedures tambm so armazenados nos dicionrios de dados do SGBD. As implementaes de dicionrio de dados podem variar de acordo com a tecnologia do SGBD. No caso dos bancos de dados relacionais, os dicionrios de dados, geralmente, so implementados como tabelas. A forma como essas tabelas so indexadas e organizadas em disco fator fundamental para o desempenho do banco de dados, pois elas so acessadas na maior parte das operaes realizadas pelos SGBD.

Pgina 4 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

2.

Assuntos relacionados: Banco de Dados, Oracle, Banca: FCC Instituio: TRT 15a Regio Cargo: Analista Judicirio - Tecnologia da Informao Ano: 2009 Questo: 30
Cada database Oracle tem I um ou mais datales. 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.

Soluo:
A resposta da questo a alternativa A. Primordialmente, um banco de banco Oracle formado por trs tipos de arquivos que so: datales, redo log les e control les. Um banco de dados Oracle contm uma ou mais unidades lgicas de armazenamento chamadas tablespaces, que coletivamente armazenam os dados do banco de dados. Cada tablespace, por sua vez, consiste de um ou mais arquivos chamados datales, que so arquivos fsicos 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 buer

circular assim como o redo log buer, que mantido em memria pelo Oracle. A funo primria dos redo log les armazenar toda e qualquer mudana realizada nos dados do banco de dados. Se houver alguma falha, como o corrompimento de um datale, as informaes podem ser recuperadas utilizando o redo log les e os datales de backup. O Oracle grava os redo log les de forma circular. Isto signica que, quando o arquivo

redo log le atual ca cheio o banco de dados passa para o prximo arquivo redo. Quando o ltimo arquivo do redo log le for preenchido o banco de dados volta para o primeiro, apagando informaes j existentes e continuando o ciclo. Para que no se percam informaes quando o ciclo for reiniciado, os arquivos de redo so arquivados periodicamente. A quantidade de arquivos de redo utilizados e a frequncia do processo de arquivamento devem ser denidas de acordo com as caractersticas do banco de dados, de modo que dados no sejam 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. So eles que contm a identicao dos arquivos de log e de dados, o nome do banco e informaes de sincronismo entre os arquivos que o compe. Como regra geral, cada banco de dados Oracle possui um nico control le associado. No entanto, o Oracle possui um recurso chamado multiplexed control les, que permite o armazenamento de mltiplas cpias do control le

Pgina 5 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

em vrios discos diferentes, com o objetivo proporcionar redundncia. Embora na arquitetura do Oracle o banco de dados seja composto somente por esses trs arquivos, uma srie de outros arquivos so importantes para colocar uma instncia no ar. Exemplos desses arquivos so:

Parameter File: Arquivo texto que contm todos os parmetros necessrios para colocar uma instncia do Oracle no ar, por exemplo, quantidade de memria alocada para o SGA, nome e localizao de arquivos de controle, tamanho de buers e de blocos etc;

Alert File: Arquivo de log onde so registrados os erros ocorridos (processo, blocos corrompidos, deadlock etc.), tarefas administrativas alm dos valores de parmetros de inicializao no momento em que a instncia colocada no ar;

Trace File:

Arquivo de log onde so armazenadas informaes detalhadas sobre os

problemas ocorridos. A utilizao desse arquivo opcional.

Pgina 6 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

3.

Assuntos relacionados: Banco de Dados, Oracle, Banca: FCC Instituio: TRT 15a Regio Cargo: Analista Judicirio - Tecnologia da Informao Ano: 2009 Questo: 31
So apenas tipos de objetos de um schema Oracle: (a). table, index, cluster e prole. (b). table, index, cluster e view. (c). table, tablespace, index e cluster. (d). tablespace, index, cluster e directory. (e). tablespace, index, cluster e view.

Soluo:
Conceitualmente, um schema uma estrutura lgica, criada pelos usurios, utilizada para conter ou referenciar os seus dados. importante lembrar que, boa parte, mas nem todos SGBDs, utilizam o conceito de schema. No caso do Oracle, exemplos de objetos que so armazenados em um schema so tabelas, vises, ndices e clusters. No Oracle, no h relao entre os tablespaces e o schema, de modo que objetos do mesmo schema podem estar em diferentes tablespaces, e um nico tablespace podem conter objetos de diferentes schemas. Portanto, a resposta da questo a alternativa B. Agora, vamos aproveitar a questo para rever algumas denies importantes sobre os bancos de dados Oracle.

Table

Uma table (tabela) uma unidade bsica de armazenamento do banco de dados Oracle, e so elas que contm possuem todos os dados acessveis pelos usurio. Cada tabela formada por um conjunto de colunas, cada um uma delas com um nome (ID, FULLNAME, BIRTHDAY etc) e um tipo de dado (NUMBER, VARCHAR2, DATE etc) associados. Uma linha (row) da tabela formada pelas informaes das colunas e corresponde a um registro nico do banco de dados. Os usurios podem ainda especicar regras, chamadas restries de integridade, para cada uma das colunas das tabelas. Um exemplo tpico de regra restrio de integridade NOT NULL, que fora a coluna a conter um valor em todas as linhas.

Views

As views (vises) so apresentaes customizadas de dados de uma ou mais tabelas ou outras views. Um view pode ser considerada uma query de armazenamento. De modo geral, as views no contm dados, sendo os dados por ela apresentados derivados das chamadas base tables (tabelas base). Existem tipos especiais de views, as materialized views, que contm dados de fato. Esse tipo de view geralmente utilizada para aumentar o desempenho de determinadas consultas.

As views so utilizadas geralmente para responder a consultas, e tambm para proporcionar um nvel adicional de segurana, restringido acesso a determinados conjunto de

Pgina 7 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

linhas e colunas de uma tabela. No entanto, as views tambm podem ser denidas para aceitar inseres, atualizaes e excluses. Nesses casos, todas as operaes efetuadas na view afetam tambm as base tables.

Index

Os indexes (ndices) so estruturas de dados utilizadas para melhorar o desempenho das operaes sobre uma tabela do banco de dados. Os ndices podem ser criados com base em uma ou mais colunas da tabela, sendo essa denio baseada nas consultas que o SGBD ter que responder com ecincia.

No Oracle, os ndices mais populares so baseados em rvores B (b-trees) e nos mapas de bits (bitmaps), sendo que a melhor escolha depende do tipo de dado a ser indexado e, primordialmente, do perl de operaes da aplicao. Um timo teste comparativo entre os ndices b-tree e bitmap do Oracle pode ser vista no estudo disponvel em http://www.oracle.com/technology/pub/articles/sharma_indexes.html.

Embora sirvam para aumentar o desempenho das operaes sobre as tabelas, o que positivo, os ndices tambm possuem aspectos negativos, como o consumo de espao e a diminuio do desempenho das operaes de insero dados, j que, alm das tabelas, os ndices precisam ser atualizados. Portanto, os ndices no devem ser utilizados indiscriminadamente, mas apenas nos casos em que os seus benefcios superem seus aspectos negativos.

Cluster

Os clusters (agrupamentos) so grupos de duas ou mais tabelas que so sicamente armazenados prximas umas das outras, de modo a proporcionar maior desempenho das operaes que referenciem ambas as tabelas. Assim como os ndices, os clusters no afetam a lgica da aplicao. O fato de uma tabela pertencer ou no a um cluster transparente para o usurio, sendo relevante apenas para ns de desempenho da aplicao.

Por m, vamos falar um pouco sobre o conceito de Proles (pers) do Oracle, que foi mencionado na alternativa A da questo. O prole um recurso do Oracle que permite denir limites de utilizao de recursos do sistema e parmetros de segurana para os usurios do SGBD. Quando um usurio criado, por padro ele recebe o prole Default, que d acesso ilimitado aos recursos do sistema. Para limitar o acesso do usurio aos recursos, necessrio criar um prole e associ-lo ao usurio. Alguns exemplos de parmetros (cujos nomes so auto-explicativos) que podem ser controlados atravs de prole so mostrados a seguir.

Pgina 8 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Parmetros de Recursos [SESSIONS_PER_USER [CPU_PER_SESSION [CPU_PER_CALL [CONNECT_TIME [IDLE_TIME [LOGICAL_READS_PER_SESSION [LOGICAL_READS_PER_CALL [COMPOSITE_LIMIT [PRIVATE_SGA Parmetros 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] n|UNLIMITED|DEFAULT] n|UNLIMITED|DEFAULT] n|UNLIMITED|DEFAULT] n|UNLIMITED|DEFAULT] n|UNLIMITED|DEFAULT] n|UNLIMITED|DEFAULT] n|UNLIMITED|DEFAULT] n|UNLIMITED|DEFAULT] n [K|M]|UNLIMITED|DEFAULT]

Pgina 9 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

4.

Assuntos relacionados: Banco de Dados, Oracle, Banca: FCC Instituio: TRT 15a Regio Cargo: Analista Judicirio - Tecnologia da Informao Ano: 2009 Questo: 32
NO um processo do tipo background contido em uma instncia Oracle: (a). system monitor process. (b). checkpoint process. (c). archiver process. (d). server process. (e). recoverer process

Soluo:
O Oracle possui trs tipos bsicos de processo que so: processos User, processos server e processos em background. Com isso, a resposta da questo alternativa D, server process. Agora, vamos conhecer um pouco mais dos processos do Oracle. Os processos server recebem as requisies dos processos user, realizam o parse das instrues SQL, vericam as permisses de acesso do usurio, traz os dados do disco para o DBBC, caso necessrio, e retorna os dados para o usurio. Um processo server pode ser dedicado para um processo user (dedicated server process) ou compartilhado entre mltiplos processos user (shared server process). Os processos server compartilhados s so possveis em sistemas multithreaded. As funes desempenhadas pelos processos user so se conectar com os processos server, enviar instrues SQL e receber os resultados. ver. J os os processo em background no realizam nenhuma comunicao com os processos user. Os processos em backgound so responsveis pelas tarefas de apoio para garantir o funcionamento do sistema de gerenciamento de banco de dados como um todo. Um sistema Oracle tem inmeros processos em background, porm apenas 4 deles so obrigatrios. So eles: Caso o servidor suporte processos server compartilhados, diversos processos server podem ser atendidos por um mesmo processo ser-

Process Monitor (PMON): Realiza a recuperao quando algum processo falha, alm de liberar o cache, locks e demais recursos que o processo estava utilizando; System Monitor (SMON): Realiza o processo de recuperao da instncia durante o processo de inicializao, limpa segmentos temporrios que no esto mais em uso, recupera transaes terminadas de forma anormal e realiza desfragmentao nos arquivos de dados para facilitar a alocao;

Database Writer (DBWR): A funo principal do DBWR escreve os blocos de dados modicados (dirty) do DBBC para o disco. Isso feito nas seguintes situaes: (i) quando a lista de blocos modicados atinge um tamanho congurado; (ii) quando o processo percorre um quantidade congurada de blocos e no encontra nenhum bloco livre; (iii) quando ocorre um timeout; (iv) quando ocorre um checkpoint ou (v) quando

Pgina 10 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

o DBWR recebe um sinal do processo LGWR. Dessa forma, o processo DBWR alm de garantir que as alteraes feitas em buer sero persistidas, tambm gerencia o espao em buer para melhorar o desempenho do banco;

Log Writer (LGWR): o responsvel por copiar as informaes do redo log buer para o o redo log le (arquivo de log com a mesma estrutura do redo log buer). O LGWR tambm responsvel por atualizar os headers dos arquivos de dados quando ocorre um checkpoint. O LGWR disparado nas seguintes situaes: (i) quando ocorre um commit; (ii) quando ocorre um checkpoint; (iii) quando ocorre um timeout ou (iv) quando o redo log buer atinge um tero de sua capacidade.

Alm desses quatro, o Oracle possui uma srie de outros processos em background que so de instalao e uso opcionais. Os mais importantes so os seguintes:

CKPT: Atualiza os headers dos arquivos de dados quando ocorre um checkpoint. A utilizao desse processo pode ajudar a melhorar o desempenho do sistema permitindo que o processo LGWR se concentre apenas na cpia do redo log buer para o disco;

RECO: Responsvel pela recuperao de falhas envolvendo transaes distribudas. Esse processo necessrio quando o Oracle est rodando de forma distribuda; ARCH: Responsvel por copiar o redo log le (que um buer circular) para um dispositivos de armazenamento oine para que os logs no sejam perdidos; Pnnn: Processo responsvel pela execuo de consultas paralelas; SNPn: Controla a replicao de objetos dos banco de dados em outro site. Essas cpias so chamadas snapshots. Esse processo pode ser escalonado para executar periodicamente;

LCKn: Realiza o controle de locks entre mltiplas instncias; Dnnn: Esse processo funciona como um dispatcher quando o sistema est utilizando processos server compartilhados. comunicao utilizado. necessrio um dispatcher para cada protocolo de

Pgina 11 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

5.

Assuntos relacionados: Oracle, SQL, Banca: FCC Instituio: TRT 16a Regio Cargo: Analista Judicirio - Tecnologia da Informao Ano: 2009 Questo: 25
Os programas PL/SQL so constitudos por blocos que executam operaes lgicas e cada bloco tem trs partes que denem as: I. declaraes de variveis e itens. II. instrues procedurais e SQL. III. instrues de tratamento de erros. No bloco obrigatria a presena da seo que se arma em (a). I e II, apenas. (b). II e III, apenas. (c). I, II e III (d). I, apenas. (e). II, apenas.

Soluo:
A linguagem PL/SQL uma linguagem procedural da Oracle. Ela uma extenso da linguagem SQL padro. Ela serve para criar programas complexos e poderosos, no s para o banco de dados, mas tambm em diversas ferramentas Oracle. Os blocos de PL/SQL so processados por um uma PL/SQL Engine, que ltra os comandos SQL e os manda individualmente para o SQL Statement Executor no Oracle Server. A unidade bsica de um programa PL/SQL um bloco, que possui a seguinte estrutura:

DECLARE
Seo para declarao de variveis, tipos e subprogramas locais.

BEGIN
Seo executvel. Nesta seo, cam as instrues procedurais e SQL. Esta a nica seo do bloco que indispensvel e obrigatria.

EXCEPTION
Seo onde cam as instrues de tratamento de erro. Por denio, apenas a seo executvel requerida. As outras sees so opcionais. Logo, somente a armativa II est correta e alternativa a ser marcada a letra E. Aprofundando mais na linguagem, podemos dizer que as nicas instrues SQL que so permitidas em um programa PL/SQL so SELECT, INSERT, UPDATE, DELETE e vrias

Pgina 12 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

outras instrues de manipulao de dados e de controle de transao. Alm disso, PL/SQL no caso sensitivo, ou seja, no diferencia maisculas de minsculas. Instrues de denio de dados como CREATE, DROP ou ALTER no so permitidas. A seo executvel, citada anteriormente, tambm contm construes tais como atribuies, desvios, loops, chamadas a procedimentos e triggers. A capacidade de usar laos(loops) uma das principais diferenas entre SQL e PL/SQL. A instruo SELECT no PL/SQL funciona apenas se o resultado da consulta contm uma nica tupla. Se a consulta retorna mais do que uma tupla, ser necessrio usar um cursor. Um cursor uma varivel que itera sobre as tuplas de alguma relao. Essa relao pode ser uma tabela armazenada ou pode ser a resposta para alguma consulta. Enm, a linguagem PL/SQL possui mais recursos que o padro e visa fornecer mais exibilidade e aproveita o poder das linguagens procedurais para o desenvolvimento de programas complexos que envolvam acesso ao banco de dados Oracle.

Pgina 13 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

6.

Assuntos relacionados: Banco de Dados, Commit, Savepoint, Rolling Back, Rolling


Forward,

Banca: FCC Instituio: TRT 18a Regio Cargo: Analista Judicirio - Tecnologia da Informao Ano: 2008 Questo: 46
Antes do Oracle terminar uma transao deve acontecer explicitamente uma operao 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.

Soluo:
Vamos, primeiramente, apresentar o que cada operao signica:

commit:

operao que efetiva, no banco de dados, as alteraes (insert, delete e

update) realizadas em uma transao. Ou seja, as alteraes de uma transao somente so enxergadas por outras transaes de outras sesses aps um commit. Veja abaixo um exemplo de utilizao deste operador:

SQL> insert into alunos (matricula, nome) values (1, `Ricardo Vargas`); 1 row created. SQL> commit; Commit complete.
savepoint:
rollback. marca um ponto (estado) na transao para onde se pode voltar com um Portanto, em transaes mais complexas, se utiliza alguns savepoints para

marcar pontos para os quais seja possvel realizar rollback. Dessa forma, estrategicamente, apenas parte das alteraes da transao desfeita. Veja abaixo um exemplo de utilizao 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 transao sem savepoints, esta operao desfaz todas as alteJ em um transao com savepoints, um rollback desfaz todas as raes realizadas.

alteraes realizadas aps o ltimo savepoint (volta-se ao estado do ltimo savepoint). Veja abaixo um exemplo de utilizao deste operador:

SQL> rollback to estado_1; Rollback complete.

Pgina 14 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

rolling forward:

um recurso utilizado em caso de falha de banco de dados para que

o seu estado imediatamente antes da falha seja restabelecido. Durante o funcionamento normal de um banco de dados, todas as informaes sobre operaes so armazenadas em arquivos do tipo RedoFiles. Em situaes de falha, logo aps o banco de dados voltar a operar, esses arquivos so lidos e, ento, as operaes so refeitas. Como se pode concluir dos itens acima, as operaes savepoint e rolling forward no so obrigatrios at o trmino de cada transao. Isso porque savepoint opcional e rolling forward somente utilizado em casa do falha de bando de dados. Tendo em vista o exposto, para que toda operao seja atmica e o banco de dados seja mantido consistente, necessria ao nal de cada transao a execuo de um commit ou um rollback. Portanto, a alternativa que deve ser escolhida a letra B.

Pgina 15 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

7.

Assuntos relacionados: Banco de Dados, PL/SQL, Banca: FCC Instituio: TRT 18a Regio Cargo: Analista Judicirio - Tecnologia da Informao Ano: 2008 Questo: 47
A estrutura de controle Iterao 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.

Soluo:
PL/SQL o acrnimo para Procedural Language/Structured Query Language. Ou seja, PL/SQL uma linguagem procedural que estende SQL. Ela foi desenvolvida pela Oracle Corporation 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 instrues do tipo SQL nos cdigos-fonte procedurais (por exemplo, dentro de cdigos C). Com o aparecimento da PL/SQL isso mudou. Todo o cdigo procedural e tambm as instrues relacionadas ao banco podem ser escritos diretamente em PL/SQL. Essa linguagem suporta variveis, condies, loops, arrays, excees, funes e procedimentos. A estrutura bsica do PL/SQL chamada de bloco. Portanto, um programa escrito nessa linguagem composto por blocos. Geralmente, um bloco desenvolvido para efetuar uma ao lgica no programa. Cada bloco estruturado da seguinte forma:

DECLARE Seo onde so feitas as declaradas locais: subprogramas e variveis e seus tipos. Esta seo no obrigatria. BEGIN Seo que contm o que ser executado de fato: instrues procedurais e SQL. Esta seo obrigatria. EXCEPTION Seo onde ficam as instrues de tratamento de erro. Esta seo tambm no obrigatria. END
Um exemplo bem bsico apresentado a seguir:

DECLARE i NUMBER := 1; BEGIN LOOP

Pgina 16 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

INSERT INTO T1 VALUES(i,i); i := i+1; EXIT WHEN i>100; END LOOP; END;
Especicamente com relao a estrutura de controle do tipo iterao, PL/SQL possui os seguintes recursos: LOOP, WHILE, FOR e Cursor FOR. Os trs primeiros so bem conhecidos e geralmente esto presentes nas linguagem procedurais. J o quarto um tipo especial de FOR em que uma varivel assume o lugar de registros de uma relao. Abaixo um exemplo para 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 questo, a alternativa E a nica que traz apenas comandos PL/SQL relacionados a controle de iterao. Portanto, essa a alternativa correta.

Pgina 17 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

8.

Assuntos relacionados: Banco de Dados, Triggers, Gatilhos, Banca: Cesgranrio Instituio: Petrobras Cargo: Analista de Sistemas - Infraestrutura Ano: 2008 Questo: 59
Para os gatilhos (triggers) utilizados em bancos de dados, so feitas as armativas a seguir. I - Os triggers podem ser congurados para disparar antes ou aps a execuo de uma ao de Update, Delete ou Insert em uma tabela. II - A clusula When no comando Create Trigger vlida somente para triggers de nvel de linha. III - Os chamados triggers autnomos so executados como uma transao autnoma, sendo que as modicaes no banco de dados por eles efetuadas podem ser conrmadas ou revertidas, independente do estado da instruo que desencadeou a chamada do trigger. Est(o) correta(s) as armativas (a). I, apenas. (b). II, apenas. (c). I e II, apenas. (d). II e III, apenas. (e). I, II e III.

Soluo:
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 automaticamente 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 exigncias devem ser satisfeitas: i) especicar as condies sob as quais o gatilho deve ser executado; e ii) especicar as aes que devem ser realizadas quando um gatilho for disparado. Por exemplo, suponha que em vez de permitir saldos negativos em uma conta corrente, o banco crie condies para que a conta seja zerada e o saldo negativo seja transferido para a conta emprstimo de mesmo nmero que a conta corrente. Neste exemplo, a condio para o disparo do gatilho o saldo negativo da conta corrente, e a ao a ser realizada a transferncia do saldo negativo para a conta emprstimo. CREATE [DEFINER = {user | CURRENT_USER}] TRIGGER trigger_name trigger_time trigger_event ON 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 so os comandos de Linguagem de Manipulao de Dados (DML -

Data Manipulation Language ):

INSERT, DELETE e UPDATE.

Pgina 18 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Um gatilho criado utilizando a funo CREATE TRIGGER que especica a tabela a qual est associado, a condio para ocorrncia do evento e o tipo de ao (nome da funo) que ser executada com o evento. A sintaxe da funo CREATE TRIGGER no MySQL e no Postgree apresentada na Tabela 1 e na Tabela 2, respectivamente. Note que os sistemas de bancos de dados possuem seus prprios recursos de gatilho no padronizados. A seguir, explicamos cada um dos parmetros:

DEFINER: clusula opcional para denir o usurio para criar o gatilho; trigger_name: dene o nome do gatilho; trigger_time: dene se o gatilho ser ativado antes (BEFORE) ou depois (AFTER) do comando que o disparou; trigger_event: dene qual ser o evento: INSERT, DELETE ou UPDATE. Podem ser especicados vrios eventos utilizando OR; table_name: nome da tabela cujos eventos podem disparar o gatilho; trigger_stm: uma funo fornecida pelo usurio, declarada como no recebendo nenhum argumento e retornando o tipo TRIGGER, que executada quando o gatilho dispara;

FOR EACH ROW / FOR EACH STATEMENT: especica se o procedimento do gatilho deve ser disparado uma vez para cada linha afetada pelo evento do gatilho, ou apenas uma vez por comando SQL;

arguments: uma lista opcional de argumentos, separados por vrgula, a serem fornecidos para a funo quando o gatilho for executado.

O gatilho pode ser especicado para disparar antes (BEFORE) de realizar uma operao na linha (antes das restries serem vericadas e os respectivos comandos de DML serem executados), ou aps a operao estar completa (aps as restries serem vericadas e os respectivos comandos terem completado). Se o gatilho for disparado antes do evento, o gatilho pode fazer com que a operao no seja realizada para a linha corrente, ou pode modicar a linha sendo inserida. Se o gatilho for disparado depois (AFTER) do evento, todas as mudanas, incluindo a ltima insero, atualizao ou excluso, estaro visveis para o gatilho. Um gatilho que est marcado FOR EACH ROW chamado uma vez para cada linha que a operao modica. Diferentemente, um gatilho que est marcado FOR EACH STATEMENT somente executa uma vez para uma determinada operao, no importando quantas linhas foram modicadas. Em particular, uma operao que no modica nenhuma linha ainda assim resulta na execuo de todos os gatilhos FOR EACH STATEMENT aplicveis. 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 so usados com enorme ecincia para impor e manter integridade referencial de baixo nvel, e no para retornar resultados de consultas. A principal vantagem que eles podem conter uma lgica de processamento complexa. Os sistemas de bando de dados possuem algumas restries em relao aos gatilhos:

Pgina 19 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

No se pode chamar diretamente um gatilho; No permitido iniciar ou nalizar transaes em meio a execuo de um gatilho; No se pode criar um gatilho para uma tabela temporria ou para uma viso; No possvel criar gatilhos para o comando SELECT, pois este comando no modica nenhuma linha.

Com base no explicado anteriormente, analisaremos as armaes da questo: I - Os triggers podem ser congurados para disparar antes ou aps a execuo de uma ao de UPDATE, DELETE ou INSERT em uma tabela. Isso especicado no comando CREATE TRIGGER com os parmetros BEFORE ou AFTER, respectivamente. Portanto, armativa correta. II - Conforme apresentamos, a clusula WHEN no est presente no comando CREATE TRIGGER para o MySQL e PostgreeSQL. Entretanto, no Oracle SQL e SQLite possvel utilizar a clusula WHEN no comando CREATE TRIGGER. Quando a condio da clusula WHEN vlida, o gatilho executado para cada linha modicada, isto , a execuo do gatilho ocorre em nvel de linha. Portanto, alternativa correta. III - Os triggers autnomos (autonomous

triggers )

esto presentes no sistema de banco

de dados Oracle SQL. Diferente dos triggers normalmente existentes nos sistemas de banco de dados, os triggers autnomos so executados como uma transao autnoma. Por meio das transaes autnomas, um trigger pode conter comandos de controle de transao como COMMIT e ROLLBACK. Com os comandos COMMIT E ROLLBACK as modicaes no banco de dados efetuadas por um gtilho podem ser conrmadas ou revertidas, independente do estado da instruo que desencadeou a chamada do trigger. Os triggers autnomos tambm podem executar comandos de Linguagem de Denio de Dados( DDL -

Language ).

Data Denition

Portanto, armativa correta.

Todas as armativas feitas esto corretas. Logo, a resposta desta questo a

letra E.

Pgina 20 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

9.

Assuntos relacionados: Banco de Dados, SQL, Transact SQL, Banca: ESAF Instituio: Superintendncia de Seguros Privados (SUSEP) Cargo: Analista Tcnico da SUSEP - Tecnologia da Informao Ano: 2010 Questo: 33
Em relao s operaes em bancos de dados SQL, correto armar que (a). o Transact-SQL no permite alterar a credencial de login. (b). o Transact-SQL permite redenir a senha desde que seja fornecida a senha antiga. (c). para executar consultas de Transact-SQL pode-se emitir instrues ao se iniciar o SQL/CMD. (d). pode-se criar bancos de dados utilizando-se Transact-SQL, por meio do comando START DATABASE. (e). pode-se restaurar bancos de dados utilizando-se Transact-SQL, por meio dos comandos REUSE DATABASE e RESET BLOG.

Soluo:
A Structured Query Language, ou SQL uma linguagem de banco de dados desenvolvida para gerenciar dados em Sistemas de Gerncia de Banco de Dados Relacional (RDBMS), e foi originalmente baseada em lgebra relacional. Seu escopo inclui insero, remoo, consulta de dados, criao e modicao de esquemas e controle de acesso a dados. SQL uma linguagem declarativa, ao contrrio de linguagens de programao como C ou Pascal que so imperativas. Apesar de haver padres para o SQL (ANSI SQL92, SQL99 por exemplo), a maioria das implementaes utilizam extenses que incluem funcionalidades de linguagens de programao procedural, como controle de uxo, por exemplo. Transact SQL ou TSQL a extenso proprietria Microsoft e Sybase do SQL. Para a utilizao do T-SQL necessrio o Microsoft SQL Server. Toda aplicao que se comunique com um SQL Server utiliza instrues T-SQL. Entre as funcionalidades adicionais que o Transact SQL oferece em relao ao SQL, pode-se citar: Controle de uxo, variveis locais, funes adicionais para tratamento de strings, processamento de datas, funes matemticas etc. a)

ERRADO:

uma credencial um registro que contm informaes de autenticao criada pelo comando

necessrias para se conectar a servios fora do SQL Server.

CREATE CREDENTIAL e as propriedades das credenciais podem ser alteradas pelo comando ALTER CREDENTIAL. Uma credencial pode ser mapeada para um login do SQL Server atravs do comando CREATE LOGIN; b)

ERRADO: transact-SQL permite redenir a senha atravs da instruo ALTER LOGIN. Para alterar senha de outros usurios necessrio a permisso ALTER ANY LOGIN. Se o usurio atual tiver permisso CONTROL SERVER, ele no precisa informar o antigo password;

c)

CORRETO:

o SQL/CMD um utilitrio que permite que instrues SQL e TSQL

sejam escritas e enviadas ao servidor SQL Server, inclusive consultas;

Pgina 21 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

d)

ERRADO: cria-se banco de dados atravs do comando CREATE DATABASE. START


DATABASE no um comando T-SQL;

e)

ERRADO: o comando para restaurar backups o RESTORE. Ele permite restaurar


banco de dados inteiros, fazer restauraes parciais, apenas arquivos ou grupo de arquivos de banco de dados. REUSE DATABASE e RESET BLOG no so comandos T-SQL.

Pgina 22 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

10.

Assuntos relacionados: Banco de Dados, Modelo Entidade-Relacionamento, Banca: CESGRANRIO Instituio: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questo: 24

Um modelo entidade-relacionamento foi reestruturado conforme mostrado na gura acima. Concluiu-se que todos os usurios eram funcionrios, embora nem todos os funcionrios fossem usurios. O modelo relacional derivado desse modelo conceitual possua originalmente duas variveis de relao bsicas, com os mesmos nomes das entidades correspondentes, tendo ambas EMAIL como chave primria. Considerando que a varivel de relao FUNCIONARIO no ser modicada e que a independncia de dados lgica ser honrada, a varivel de relao USUARIO (a). ter que manter todos os seus atributos originais. (b). dispensar o uso de chaves candidatas. (c). ser substituda por uma varivel de relao bsica e uma derivada. (d). ser substituda por uma varivel de relao bsica, apenas. (e). ser substituda por uma varivel de relao derivada, apenas.

Soluo:
O modelo entidade-relacionamento um padro para modelagem conceitual de banco de dados. Na gura da questo, os objetos representados por retngulos so conjuntos de entidades e os objetos representados por elipses so atributos.

Pgina 23 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Uma entidade um objeto que pode ser identicado de forma unvoca a todos os outros objetos. A entidade pode representar tanto algo concreto, como uma pessoa, ou algo abstrato, como um emprstimo, por exemplo. Um conjunto de entidades rene todas as entidades de um mesmo tipo, ou seja, que possuem as mesmas propriedades: atributos. Os atributos so propriedades que descrevem cada entidade de um conjunto de entidades. Dizemos ainda que cada entidade pode ter seu prprio valor para cada atributo. Exemplo: uma determinada entidade que representa uma pessoa pode ter o valor Joo Assis para o atributo nome e o nmero

2367727

para o atributo nmero de inscrio.

O modelo entidade-relacionamento pode descrever diversos outros objetos importantes para a modelagem de banco de dados, como os conjuntos de relacionamentos, os atributos multivalorados e a participao de entidades em um conjunto de relacionamentos. H, ainda, os conceitos de generalizao e especializao. Generalizao o resultado da unio de dois ou mais conjuntos de entidades, produzindo um conjunto de entidades de nvel mais alto. Por outro lado, especializao o resultado da separao de um subconjunto de entidades, formando conjuntos de entidades de nvel mais baixo. A generalizao usada para enfatizar as semelhanas entre entidades de nvel mais baixo e ocultar suas diferenas. A especializao o inverso: ela enfatiza as diferenas entre as entidades. Verica-se que, no primeiro modelo, existem duas entidades independentes com seus respectivos atributos. A transformao realizada para se chegar ao segundo modelo conceitual nada mais do que um processo de generalizao. J o modelo relacional ao qual a questo se refere uma maneira de representar o banco de dados logicamente, e no conceitualmente. No modelo relacional, os dados so representados como relaes matemticas, isto , como um subconjunto do produto cartesiano de n conjuntos. Na etapa de transformao do modelo conceitual para o modelo lgico, ser permitido ao projetista criar um modelo consistente da informao a ser armazenada por meio do processo de normalizao, por exemplo. No modelo relacional, uma varivel relacional, tambm conhecida como relvar, uma varivel que representa uma relao. Para tornarmos a explicao bem simples, podemos dizer que uma varivel relacional bsica representa uma tabela no SQL e uma varivel relacional derivada representa uma viso ou o resultado de uma consulta. O modelo relacional derivado do primeiro modelo entidade-relacionamento pode ser descrito da seguinte maneira: Funcionario(email, nome) Usuario(email, nome, login) Segundo o enunciado, aps a generalizao, a varivel de relao Funcionario ser mantida sem modicaes. J, para a varivel de relao Usuario, criaremos uma nova varivel de relao bsica da seguinte forma: UsuarioTabela(email, login)

Pgina 24 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Isso pode ser feito, j que, na generalizao, foi criado um relacionamento de muitos-paraum com a varivel de relao Funcionario. Sendo assim, o campo e-mail ser suciente para representar o usurio na varivel de relao Funcionario. Note que, dessa maneira, a independncia lgica ainda no est honrada, j que a varivel de relao UsuarioTabela no possui a informao do atributo nome. Para garantirmos a independncia lgica, precisamos criar uma varivel relacional derivada que chamaremos de UsuarioVisao ou simplesmente Usuario. No SQL, essa varivel de relao representar uma juno das tabelas geradas pelas variveis de relao bsica Funcionario e UsuarioTabela e representar todos os usurios, mas, dessa vez, com o atributo nome advindo da tabela que representa o conjunto de funcionrios. Dada as explicaes imediatamente acima, a resposta correta a alternativa C.

Pgina 25 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

11.

Assuntos relacionados: Banco de Dados, Modelo Entidade-Relacionamento, Banca: FCC Instituio: TRT 2a Regio Cargo: Analista Judicirio - Tecnologia da Informao Ano: 2008 Questo: 39
Em um diagrama entidade relacionamento, uma situao de composio tal qual empregado gerencia empregado, geralmente apresentada como (a). entidade fraca. (b). relacionamento associativo. (c). auto relacionamento. (d). relacionamento interativo. (e). relacionamento restritivo.

Soluo:
A resposta da questo 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 de informao. A principal ferramenta do modelo o diagrama Entidade Relacionamento. O primeiro conceito fundamental do MER o de entidade. Uma entidade corresponde

representao de todo e qualquer substantivo, concreto ou abstrato, sobre o qual precisase armazenar e recuperar informaes. Em um sistema de vendas, por exemplo, algumas entidades comuns seriam Vendas, Produtos e Clientes. O segundo conceito fundamental o de relacionamento. mostra como as entidades se relacionam entre si. No MER, um relacionamento

Em um sistema de vendas, a entidade

Vendas estaria relacionada com a entidade Produtos, bem como com a entidade Clientes. Os auto relacionamentos (tambm chamados relacionamentos recursivos) so casos especiais onde uma entidade se relaciona com si prpria. Apesar de serem relacionamentos muito raros, a sua utilizao muito importante em alguns casos. Os auto relacionamentos podem ser do tipo 1:1, 1:N ou N:M. Exemplos deste relacionamento podem ser encontrados nas chamadas exploses de materiais, nas quais so formados por muitos

itens componentes.

itens compostos

Os itens compostos, por sua vez, podem ser

componentes de outros itens maiores. Para exemplicar melhor, vamos utilizar um exemplo concreto. O item automvel composto pelo chassis, motor, direo, cmbio etc. O motor, por sua vez, formado pelo carburador, velas, platinado etc. Esta exploso de composio dos itens pode ser representada por um auto relacionamento N:M da entidade itens, sendo que o papel de um determinado item ora de componente, ora de composto. Um outro exemplo tpico de auto relacionamento o gerenciamento de funcionrios, trazido na questo. Um gerente nada mais que um funcionrio que possui um relacionamento com

Pgina 26 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

outros funcionrios que lhe so subordinados. Esta relao pode ser representada por um auto relacionamento 1:N da entidade funcionrios, sendo que o papel de um determinado funcionrio ora de gerente, ora de subordinado.

Pgina 27 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

12.

Assuntos relacionados: Banco de Dados, DER, Banca: Cesgranrio Instituio: BNDES Cargo: Analista de Sistemas - Desenvolvimento Ano: 2008 Questo: 48
Um analista de sistemas recebe o seguinte trecho de descrio de um sistema: Uma empresa contrata um prossional para trabalhar em um projeto recebendo um determinado salrio. Sabe-se que um projeto pode ter a participao de diversas empresas e que um prossional pode desempenhar vrias atividades nesse projeto (p.ex. operador de guindaste e pedreiro). Que modelo ER representa corretamente essa descrio? (O smbolo (*) representa atributo multivalorado). (a). Modelo 1 (b). Modelo 2 (c). Modelo 3 (d). Modelo 4 (e). Modelo 5

Figura 1: Modelos ER

Soluo:
Esta uma questo polmica, pois seu enunciado um tanto quanto pobre de informaes. Quando isso acontece, a melhor estratgia tentar identicar quais alternativas estariam mais erradas e elimin-las. Uma considerao muito importante para uma resoluo consciente desta questo que o

Pgina 28 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

enunciado deveria trazer seria a denio se um prossional pode ser contratado por mais de uma empresa e, por consequncia, poder trabalhar em mais de um projeto. Se o candidato zer uma considerao diferente da imaginada pelo autor desta questo, suas chances de acertar esta questo diminuem consideravelmente. Vamos s alternativas. (A) ERRADA Considerando que um determinado prossional pode ser contratado por diferentes empresas para trabalhar em diversos projetos, este modelo inapropriado. Isso por conta do atributo atividade, que est relacionado ao prossional. Em outras palavras, teramos que um determinado prossional somente poderia exercer as mesmas atividades em todos os seus eventuais contratos, o que no apropriado. Por outro lado, caso a considerao acima no seja feita, este modelo se mostra adequado, porm limitado. (B) ERRADA A argumentao para esta alternativa similar feita na alternativa anterior. salrio para seus eventuais contratos, o que no apropriado. desta alternativa tambm atende, apesar de ser limitado. (C) e (D) ERRADA Estas deveriam ser as primeiras alternativas a serem eliminadas. se encaixa na descrio do sistema apresentada no enunciado. (E) CORRETA Esta a alternativa menos errada e, portanto, a escolha mais segura possvel. Como Perceba que a relao Se a con-

siderao supracida for feita, um determinado prossional somente poderia ter um nico Caso contrrio, o modelo

existente entre os conjuntos de entidades empresa e projeto, denominada possui, no

o atributo atividade est associado ao conjunto de relacionamentos contrato, este modelo no se limita ao cenrio de que um prossional somente pode ter um contrato para trabalhar em apenas uma empresa para participar de um nico projeto. De qualquer forma, cabe ressaltar que o nvel de normalizao deste modelo no bom. Em um banco de dados relacional, o conjunto de relacionamentos contrato seria implementado por meio de uma tabela. Imagine o caso em que um prossional execute 5 tarefas em um contrato com uma determinada empresa. Nesse caso, teramos nessa tabela 5 linhas com os 4 campos com valores repetidos: salrio e chaves estrangeiras dos conjuntos de entidades envolvidos. Essa repetio desnecessria de valores pode ser onerosa, mas ela pode ser eliminada com um processo de normalizao deste modelo, que resultaria em outro modelo mais adequado.

Pgina 29 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

13.

Assuntos relacionados: Banco de Dados, Modelo Entidade-Relacionamento, Modelo Relacional, Projeto Lgico de Banco de Dados, Banca: Cesgranrio Instituio: Petrobras Cargo: Analista de Sistemas Pleno - Processos Ano: 2006 Questo: 23

Considere o modelo entidade-relacionamento representado abaixo.

Na transformao deste modelo conceitual Entidade-Relacionamento em um modelo lgico relacional, as cardinalidades do relacionamento entre as entidades exercem papel importante. Dado que se deseja gerar um modelo relacional que atenda terceira forma normal, pode-se armar que sempre daro origem a uma tabela para cada uma das entidades relacionadas os relacionamentos do tipo: (a). (0,n) x (0,n), podendo ou no gerar uma tabela para o relacionamento. (b). (0,1) x (0,n), podendo ou no 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 no gerar uma tabela para o relacionamento. (e). (1,1) x (1,n), devendo gerar uma tabela para o relacionamento.

Soluo:
Uma entidade corresponde representao de todo e qualquer substantivo, concreto ou abstrato, sobre o qual precisa-se armazenar ou recuperar informaes. No modelo EntidadeRelacionamento representado por um retngulo. J o relacionamento a forma como os objetos que compem a realidade se relacionam. representado por um losango, mas h um conceito importante a ser entendido que a cardinalidade do relacionamento. Consiste de nmeros cardinais colocados ao lado do nome do relacionamento e dimensiona o nmero de ocorrncias de uma entidade que pode estar envolvido em um relacionamento, sendo til para extrair da regras de consistncia e integridade dos dados. Existem 3 (trs) tipos bsicos de relacionamento entre as entidades de acordo com a cardinalidade:

Um-para-um (1:1):

representa que uma nica ocorrncia de uma entidade pode se

relacionar com apenas uma nica ocorrncia de outra entidade; um-para-muitos (1:N): representa que uma ocorrncia de uma entidade pode se relacionar com muitas ocorrncias de outra entidade. verdadeira; No entanto, a recproca no

muitos-para-muitos (N:M): representa que vrias ocorrncias de uma entidade pode se relacionar com muitas ocorrncias de outra entidade.

Pgina 30 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

H ainda os relacionamentos recursivos onde uma entidade se relaciona com si prpria e so relacionamentos mais raros. Para que o modelo E-R pudesse representar melhor os conceitos foi observado que cardinalidades genricas do tipo 1:N (um-para-muitos) e N:M (muitos-para-muitos) no so sucientes. Isto porque o conceito de muitos um conceito vago, podendo ser um ou qualquer nmero acima de um, existindo, ainda, o valor zero, pois, em alguns casos, nem todas as ocorrncias das entidades participam do relacionamento. Para que isso seja resolvido, o modelo E-R prope que seja utilizado o conceito de

dade Mxima.

Cardinalidade Mnima

e de

Cardinali-

Para um melhor entendimento das Cardinalidades Mnimas e Mximas, vamos analisar os tipos 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 pode lavar um, vrios carros ou nenhum e um carro pode no ser lavado ou ser lavado por uma ou mais pessoas. J na letra (B), uma pessoa pode lavar nenhum, um ou vrios carros, mas um carro pode no ser lavado ou ser lavado por, no mximo, uma pessoa. A letra (C) indica que um carro deve ser levado por exatamente uma pessoa, mas que uma pessoa pode no ter lavado nenhum carro. Na letra (D), uma pessoa deve ter lavado, no mnimo, um carro e 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 um ou mais carros. Ao passarmos um relacionamento para o modelo relacional, temos trs opes: 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 adequadamente o relacionamento. Na letra (C), que o nico caso de mapeamento um-para-um, a melhor alternativa para atender a terceira forma normal incluir a chave primria de Pessoa como chave estrangeira na tabela Carro (opo 3). Sendo assim, todo registro da tabela Carro ter representado uma 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 (opo 1). Neste caso, no haveria o problema de redundncia indesejado para a terceira forma normal e nenhum dado seria perdido. Gerar uma tabela denitivamente no uma opo para a letra (C), que est incorreta. Os relacionamentos muitos-para-muitos esto representados nas letras (A) e (D). Nestes casos, a nica soluo possvel utilizar uma tabela para o relacionamento (opo 2). No possvel representar esse tipo de relacionamento atravs de uma chave-estrangeira em uma tabela que representa uma entidade e nem mesmo fundir tabelas de entidade sem que haja problemas de redundncia. As alternativas (A) e (D) esto erradas, pois a tabela deve ser criada para o relacionamento e no uma opo no t-la. Na letra (E), a melhor alternativa criar chave estrangeira para representar a pessoa que lavou o carro na tabela Carro (opo 3). Entretanto, ainda necessrio garantir que uma pessoa s exista na tabela Pessoa se j houver lavado um carro. Isso pode ser feito com incluso de regra adicional de integridade. A opo 1 no aceitvel, pois representaria dados redundantes. A opo (2) tambm tem a possibilidade de representar um modelo relacional

Pgina 31 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

que atenda o que a questo est pedindo e tambm deve ter adicionada a restrio de que toda pessoa da tabela Pessoa tenha um registro na tabela que representa o relacionamento Lava. Sem dvida, uma opo, mas no deve gerar uma tabela conforme diz o enunciado. A letra (E) est errada. Na alternativa (B), s o fato de no ser um relacionamento muitos-para-muitos, sabemos que o uso de tabela para representar o relacionamento Lava no obrigatrio. H a possibilidade de se criar uma chave estrangeira que represente uma pessoa na tabela Carro (opo 3). Neste caso, a tabela Carro deve permitir que o valor da chave estrangeira tambm possa ser nulo, pois um carro no necessariamente lavado por alguma pessoa. H controvrsias se, neste caso, a terceira forma normal obedecida. Se optssemos por criar uma tabela para o relacionamento, no haveria problemas, pois, para garantir que um carro seja lavado por no mximo uma pessoa, basta adotar a chave primria de Carro para garantir a unicidade do mesmo. A opo 1 no adequada para o caso, pois as informaes das pessoas iriam ser redundantes na nova tabela fundida. Embora haja a controvrsia de a permisso do uso de valor nulo no garantir a terceira forma normal e nem mesmo a primeiro, vamos adotar que o uso de chave estrangeira factvel para o problema e que o uso de tabela para o relacionamento tambm possvel. Sendo assim, a alternativa (B) a alternativa correta.

Pgina 32 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

14.

Assuntos relacionados: Banco de Dados, Modelo Entidade-Relacionamento, Modelo Relacional,

Banca: Cespe Instituio: Petrobras Cargo: Analista de Sistemas Jnior - Infraestrutura Ano: 2007 Questo: 8082

Considerando que, nas tabelas acima, FK e PK sejam, respectivamente, chaves estrangeira e primria em um banco relacional, julgue os itens subseqentes.

80

Se ALUNO em MATRICULAS referencia MATRICULA em ALUNOS, e TURMA em MATRICULAS referencia CODIGO em TURMAS, ento a cada registro em ALUNOS podem estar associados vrios registros em TURMAS e a cada registro em TURMAS podem estar associados vrios registros em ALUNOS.

81

Se DEPARTAMENTO em CURSOS referencia CODIGO em DEPARTAMENTOS, ento a cada registro em DEPARTAMENTOS podem estar associados vrios registros em CURSOS e a cada registro em CURSOS podem estar associados vrios registros em DEPARTAMENTOS.

82

Em um diagrama de entidades-relacionamentos do banco de dados composto pelas tabelas apresentadas, MATRICULAS ser representada por uma classe de entidades e ser muitos para muitos o relacionamento entre as classes de entidades que representem DISCIPLINAS e CURSOS.

Soluo:
Os itens 80, 81 e 82 esto 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 coleo 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 dentro de um banco de dados.

Pgina 33 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Para realizar a converso da representao do banco de dados em um modelo E-R para um banco de dados relacional, as seguintes regras gerais devem ser seguidas:

conjunto de entidades fortes:

seja E um conjunto de entidades fortes descrito pelos

atributos a1, a2, . . . , an. Representamos essa entidade por uma tabela E com n colunas distintas, 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 so atributos da entidade A mais os atributos que formam a chave primria do conjunto B;

relacionamentos:

seja R um conjunto de relacionamentos; seja a1, a2, . . . , an o

conjunto de atributos formados pela unio das chaves primrias de cada conjunto de entidades 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 so as chaves primrias da entidades participantes mais os atributos descritivos de R, caso existam;

atributos multivalorados:

para um atributo multivalorado, criamos uma tabela T

com uma coluna que corresponde ao atributo multivalorado e as colunas correspondentes chave primria do conjunto de entidades ou conjunto de relacionamentos do qual o atributo multivalorado atributo. No caso dos relacionamentos no modelo E-R, existem alguns tratamentos especiais em funo da cardinalidade do relacionamento entre as entidades como forma de eliminar tabelas redundantes:

um conjunto de relacionamentos que possuem cardinalidade um para um no precisa ser representado no modelo relacional, pois esse relacionamento no cria uma nova relao. Em geral, caso existam atributos descritivos do relacionamento, esses so acrescentados como atributos da tabela de uma das entidades participantes;

um conjunto de relacionamentos que possuem cardinalidade muitos para um e no possui atributos descritivos no precisa ser representado por uma tabela no modelo relacional. Em geral, isso ocorre no relacionamento entre um conjunto de entidades fracas e um conjunto de entidades forte. A chave primria do conjunto de entidades fortes funciona como um atributo no conjunto de entidades fracas (chave estrangeira);

um conjunto de relacionamentos que possuem cardinalidade muitos para muitos representado no modelo relacional por uma tabela, pois esse relacionamento cria uma nova relao, conforme descrito anteriormente na regra geral.

No nosso caso, em vez de partirmos do modelo E-R para o modelo relacional, temos que partir 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, DISCIPLINAS, CUROS e DEPARTAMENTOS. Por inferncia nossa, acreditamos que as setas indicam o sentido do relacionamento entre as tabelas:

ALUNOS est inscrito em CURSOS. Um aluno se inscreve em um curso, e em um curso pode estar inscrito vrios alunos. Ou seja, temos um relacionamento um para muitos. Note que a tabela ALUNOS possui uma chave estrangeira CURSO, o que demonstram a relao de dependncia entre as entidades ALUNOS e CURSOS. Neste relacionamento, CURSOS uma entidade forte e ALUNOS uma entidade fraca;

Pgina 34 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

CURSOS administrado por DEPARTAMENTOS. Um curso administrado por departamento. Um curso administrado por um departamento, e um departamento pode administrar vrios cursos. Ou seja, temos um relacionamento um para muitos. Note que a tabela CURSOS possui uma chave estrangeira DEPARTAMENTO, o que demonstram a relao de dependncia entre as entidades CURSOS e DEPARTAMENTOS. Neste relacionamento, CURSOS uma entidade fraca e DEPARTAMENTOS uma entidade forte;

DISCIPLINAS est vinculada a CURSOS. Uma disciplina pode est vinculada somente a um curso ou mais de um curso, e um curso possui vrias disciplinas. Note que neste relacionamento surge a dvida se temos um relacionamento um para muitos ou muitos para muitos. Caso tivssemos um relacionamento muitos para muitos, outra tabela representa o relacionamento entre CURSOS e DISCIPLINAS deveria existir no modelo relacional. Porm, no existe essa tabela, e portanto, o relacionamento entre CURSOS e DISCIPLINAS um para muitos. Note que a tabela DISCIPLINAS possui uma chave estrangeira CURSO, o que demonstram a relao de dependncia entre as entidades CURSOS e DISCIPLINAS. Neste relacionamento, CURSOS uma entidade forte e DISCIPLINAS uma entidade fraca;

TURMAS est vinculada a DISCIPLINAS. Uma turma est vinculada a uma disciplina, e uma disciplina pode ter vrias turmas. Ou seja, temos um relacionamento um para muitos. Note que a tabela TURMAS possui uma chave estrangeira DISCIPLINA, o que demonstram a relao de dependncia entre as entidades TURMAS e DISCIPLINAS. Neste relacionamento, DISCIPLINAS uma entidade forte e TURMAS uma entidade fraca;

ALUNOS est matriculado em TURMAS. Um aluno pode estar matriculado em diversas turmas, e uma turma pode ter vrios alunos. Ou seja, temos um relacionamento muitos para muitos. Como temos esse tipo de relacionamento, devemos represent-lo no modelo relacional como uma tabela, no caso MATRICULAS. Observe que, a tabela MATRICULAS possui as chaves primrias de ALUNOS e CURSOS.

De acordo com os relacionamentos descritos e as respectivas cardinalidade, podemos montar o 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.

Pgina 35 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes 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 vrios registros em TURMAS. Assim como, cada registro em TURMAS pode estar associado a vrios registros em ALUNOS. A tabela MATRICULAS representa o relacionamento entre as entidades ALUNOS e TURMAS. Portanto, este item est certo.

81

ERRADO Conforme descrevemos anteriormente, o relacionamento entre CURSOS e DEPARTAMENTOS um para muitos, isto , um registro em CURSOS pode estar associado a um nico registro em DEPARTAMENTO, e um registro em DEPARTAMENTOS pode estar associado a vrios registros em CURSOS. Portanto, este item est errado, pois arma que cada registro em CURSOS pode estar associado a vrios registros em DEPARTAMENTOS.

82

ERRADO Conforme mostrado no modelo E-R a partir do modelo relacional, a tabela MATRICULAS representada como um relacionamento de ALUNOS e TURMAS no modelo E-R, e no como uma entidade. No caso do relacionamento entre DISCIPLINAS e CURSOS, o relacionamento no muitos para muitos, mas um para muitos, pois no modelo relacional no existe uma tabela representando o relacionamento entre DISCIPLINAS e CURSOS. Portanto, este item est errado.

Pgina 36 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

15.

Assuntos relacionados: Banco de Dados, Modelagem de Dados, Superchave, Chave Se-

cundria, Segurana da Informao, Criptograa, Chave Assimtrica, Chave Simtrica, Banca: ESAF Instituio: Agncia Nacional de guas (ANA) Cargo: Analista Administrativo - Tecnologia da Informao e Comunicao / Desenvolvimento de Sistemas e Administrao de Banco de Dados Ano: 2009 Questo: 17
Um conjunto de um ou mais atributos, tomados coletivamente, para identicar unicamente uma tupla numa relao, denominado (a). chave assimtrica. (b). chave simtrica. (c). superchave. (d). chave secundria. (e). chave de tupla.

Soluo:
(A) INCORRETA Algoritmos que usam chaves assimtricas fazem parte da criptograa de chave pblica. As chaves assimtricas so usadas para a criao de um par de chaves criptogrcas relacionadas: uma chave pblica e uma chave privada (secreta). Com o uso da criptograa de chave pblica possvel vericar a autenticidade de mensagens, atravs da criao de assinaturas digitais e, tambm, proteger a condencialidade e integridade da mensagem, atravs da cifragem com o uso da chave pblica e decifragem atravs da chave privada. O enunciado do problema se refere a bancos de dados relacionais, no a criptograa e, portanto, essa opo incorreta. (B) INCORRETA Assim como as chaves assimtricas, chaves simtricas tambm so conceitos de criptograa. No entanto, nos algoritmos de criptograa de chave simtrica, chaves semelhantes, normalmente idnticas, so usadas para cifrar e decifrar uma mensagem, donde decorre o nome simtrica. (C) CORRETA Uma superchave qualquer subconjunto de atributos de um esquema de relao com a propriedade de que duas tuplas, em qualquer estado de relao r de R, no tenham a mesma combinao de valores para esse subconjunto de atributos. Em outras palavras, sejam e tuplas distintas e seja SK um subconjunto de atributos de um esquema de relao. Neste caso, para quaisquer e. Note, ainda, que toda relao possui ao menos uma superchave: a padro (default), o conjunto de todos os atributos da relao. Superchaves mais teis, no entanto, so as superchaves mnimas. tos redundantes. quebrar a restrio da superchave identicar tuplas distintas. Nelas, no h atribu-

Ou seja, no possvel remover qualquer atributo desse conjunto sem

Pgina 37 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

(D) INCORRETA Uma chave secundria uma chave que, normalmente, no identica unicamente um registro e que pode ser utilizada para buscas simultneas de vrios registros. Normalmente implementadas como ndices em bancos de dados, so usadas para busca e recuperao de dados. (E) INCORRETA O conceito chave de tupla no amplamente conhecido na literatura e h outra alternativa que responde de maneira correta esta questo. Por esse motivo, esse conceito no ser discutido.

Pgina 38 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

16.

Assuntos relacionados: Banco de Dados, Modelo Relacional, Modelo Entidade-Relacionamento,


Modelo Objeto-Relacionamento, Banca: ESAF Instituio: Agncia Nacional de guas (ANA) Cargo: Analista Administrativo - Tecnologia da Informao e Comunicao / Desenvolvimento de Sistemas e Administrao de Banco de Dados Ano: 2009 Questo: 22
entre eles denominado modelo (a). relacional. (b). entidade/relacionamento. (c). baseado em objetos. (d). de dados semiestruturados. (e). objeto/relacionamento.

O modelo de dados baseado numa coleo de tabelas que representam dados e as relaes

Soluo:
(A) CORRETA O modelo relacional usa o conceito de uma relao matemtica como seu bloco de construo bsica e tem sua base terica na teoria dos conjuntos e na lgica de predicados de primeira ordem. No modelo relacional, o banco de dados representado como uma coleo de relaes. Quando uma relao pensada como uma tabela de valores, cada linha na tabela representa uma coleo de valores de dados relacionados. Nessa representao, cada linha na tabela representa um fato que corresponde a uma entidade ou relacionamento do mundo real. O nome da tabela e os nomes das colunas so usados para auxiliar na interpretao dos dados da coluna e todos os valores em uma coluna so do mesmo tipo de dado. Por isso, essa a soluo correta para a questo. (B) INCORRETA O modelo de entidade-relacionamento um modelo abstrato com a nalidade de descrever, conceitualmente, as entidades e os relacionamentos de um domnio. Esse modelo, e suas variaes, normalmente empregado para o projeto conceitual de aplicaes de um banco de dados, e muitas ferramentas de projeto de um banco de dados tambm aplicam seus conceitos. Neste modelo, uma entidade um objeto que existe no mundo e que facilmente distinguvel de outros. Uma entidade pode ser tanto concreta, como um livro, uma pessoa ou um lugar, quanto abstrata, como um feriado. Uma entidade, por sua vez, composta por atributos. Um atributo uma funo que mapeia um conjunto de entidades em um domnio em particular. Cada entidade descrita por um conjunto de pares (atributo, valor) e existe um par para cada um dos atributos da entidade. Um relacionamento, por sua vez, uma associao qualquer entre diversas entidades. Um

Pgina 39 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

relacionamento trabalha para, por exemplo, pode relacionar empregador e empregados. A principal ferramenta do modelo de entidade-relacionamento o diagrama de entidaderelacionamento. Nele, retngulos representam entidades, elipses representam atributos, losangos representam relacionamentos e linhas ligam atributos a entidades e entidades a relacionamentos. A Figura 3 exibe um exemplo de diagrama entidade-relacionamento. Nela, existem duas entidades, Cliente e Conta. A entidade Cliente possui os atributos Nome, Endereo e CPF, j a entidade Conta possui os atributos Nmero e Balano. Ambas so relacionadas pela relao Possui, que indica que um ou mais clientes podem possuir uma ou mais contas (que, por sua vez, podem ser possudas por um ou mais clientes).

Figura 3: exemplo de diagrama entidade-relacionamento. (C) INCORRETA Modelos baseados em objetos tm sua origem nas linguagens orientadas a objetos. Nelas, um objeto possui, tipicamente, dois componentes: estado (valor) e comportamento (operaes). Em linguagens de programao, objetos existem somente durante a execuo do programa. J em bancos de dados orientados a objetos, a existncia dos objetos pode ser estendida de modo que sejam armazenados de forma permanente; portanto, os objetos continuam a existir mesmo aps o trmino do programa, podendo ser posteriormente recuperados e compartilhados por outros programas. No modelo orientado a objetos, um conceito comum o de classe, que representa um conjunto de objetos com caractersticas ans e dene o comportamento dos objetos atravs de seus mtodos, e quais estados ele capaz de manter atravs de seus atributos. Alguns conceitos importantes em orientao a objetos so:

Encapsulamento:

os aspectos internos e externos de um objeto so separados, impe-

dindo o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente apenas mtodos que alteram esses estados;

Herana:

permite a especicao de novos tipos ou classes que herdam parte de suas

estruturas e/ou operaes de classes ou tipos previamente denidos, o que torna mais fcil desenvolver os tipos de dados de um sistema de modo incremental e reutilizar denies de tipos na criao de novos tipos de objetos;

Sobrecarga de operador:

se refere propriedade de uma operao de ser aplicada

a diferentes tipos de objetos. Em tal situao, um nome de operao pode se referir a vrias implementaes diferentes, dependendo do tipo de objetos aos quais aplicada. Essa caracterstica tambm conhecida como polimorsmo de operador.

Pgina 40 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Em bancos de dados tradicionais, a informao sobre objetos complexos , normalmente, distribuda em vrias relaes ou registros, levando perda de correspondncia direta entre um objeto do mundo real e sua representao no banco de dados. O mesmo no ocorre em bancos de dados orientados a objetos, que so capazes de manter estruturas de objetos com complexidade arbitrria. (D) INCORRETA O modelo de dados semiestruturados um modelo de bancos de dados em que no h separao entre dados e esquema e sua estruturao depende do propsito da aplicao. Por no haver essa separao, o esquema normalmente associado em conjunto com os dados. Em outros casos, o esquema existe apenas para denir restries fracas aos dados. Um compromisso feito quando bancos de dados que usam esse modelo so adotados que as consultas podem no ser to ecientes quanto a alternativa em bancos de dados relacionais, devido forma tpica como esses bancos de dados so implementados. Neles, os registros so normalmente armazenados com identicadores nicos referenciados por ponteiros para suas posies no disco. Como necessrio percorrer o disco seguindo os ponteiros, suas consultas podem no ser to ecientes. (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 relacionamentos. A diferena entre esse e o modelo de ER que no modelo OR os atributos so tratados como objetos e, com isso, os benefcios da orientao a objetos so unidos aos benefcios do modelo relacional (ambos modelos descritos acima). Essa resposta incorreta porque o modelo objeto-relacional usado para modelagem de sistemas de bancos de dados, no para representar os dados. Fonte: Symposium on Applied Computing Proceedings of the 1992 ACM/SIGAPP Symposium on Applied computing: technological challenges of the 1990's table of contents Kansas City, Missouri, United States Pginas: 299 - 307 Ano de publicao: 1992 ISBN:0-89791502-X Disponvel em: http://portal.acm.org/citation.cfm?id=143655

Pgina 41 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

17.

Assuntos relacionados: Banco de Dados, lgebra Relacional, SGBD, Banca: CESGRANRIO Instituio: BNDES Cargo: Analista de Suporte Ano: 2008 Questo: 56
Sobre bancos de dados relacionais INCORRETO armar que (a). fornecem outra tabela, como resultado de consulta a uma tabela. (b). possuem um otimizador que responsvel por implementar de forma eciente as consultas relacionais realizadas pelo usurio. (c). armazenam dados organizados logicamente em tabelas e sicamente em arquivos. (d). disponibilizam estruturas para manuteno de integridade dos dados. (e). permitem a realizao de operaes de juno e unio de conjuntos, mas no de projeo e restrio.

Soluo:
Em bancos de dados relacionais as tabelas so estruturas lgicas que tm por objetivo simplicar a modelagem e a visualizao dos dados, que sicamente so armazenados como arquivos. O diagrama de tabelas um nvel de abstrao de dados tambm conhecido como modelo lgico de dados. Independente do formato dos arquivos e dos mtodos de acesso utilizados, o usurio nal sempre enxerga os dados organizados em tabelas. Quando uma consulta submetida ao SGBD relacional, pode ser necessrio unir dados de vrios arquivos para fornecer o resultado. No entanto, o usurio nal no precisa tomar conhecimento dessa necessidade, pois o resultado da consulta ser fornecido como uma tabela, essa montada dinamicamente de acordo com os critrios da operao. A otimizao das consultas, assim como a manuteno da integridade dos dados, papel do SGBD. Como atribuies dos SGBDs, podemos citar tambm a manuteno da segurana e o controle de concorrncia, permitindo que vrios usurios ou processos usem o banco de dados simultaneamente sem prejuzo aos dados. Em grande parte dos sistemas, os projetistas no precisam se preocupar com aspectos fsicos do armazenamento de dados. do sistema. Com base nos argumentos apresentados, podemos dizer que as alternativas A, B, C e D apresentam informaes corretas sobre os SGBDs relacionais. Portanto, por eliminao chegamos alternativa E. A resposta tambm pode ser alcanada de forma direta, sendo necessrio para isso o conhecimento das operaes bsicas da lgebra Relacional, base conceitual dos bancos e da linguagem de SQL. As operaes de juno nada mais so que as realizadas pelo operador JOIN, da linguagem SQL. Enquanto as operaes de unio so realizadas pelo operador UNION. As restries so denidas pela clusula WHERE. Geralmente, isso se faz necessrio quando o otimizador de consultas do SGBD por si s no suciente para responder aos requisitos de desempenho

Pgina 42 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

J as projees se referem a seleo de um subconjunto N de colunas, onde N menor que o nmero total de colunas da relao. selecionadas 2 das 5 colunas na consulta. Ou seja, se tabela ALUNOS possui 5 colunas, o comando SELECT NOME,IDADE FROM ALUNOS uma projeo, pois s foram

Pgina 43 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

18.

Nvel Lgico, Banca: ESAF Instituio: Agncia Nacional de guas (ANA) Cargo: Analista Administrativo - Tecnologia da Informao e Comunicao / Desenvolvimento de Sistemas e Administrao de Banco de Dados Ano: 2009 Questo: 18
O nvel de abstrao, que visa simplicar a interao entre usurios e o sistema de banco de dados, o (a). fsico. (b). de viso. (c). lgico. (d). de esquema. (e). de modelo.

Assuntos relacionados: Banco de Dados, Nvel de Abstrao, Nvel Fsco, Nvel de Viso,

Soluo:
Um sistema de banco de dados a juno de uma coleo de arquivos inter-relacionados com um conjunto de programas que permitem aos usurios acessarem e modicarem tais arquivos. Seu maior objetivo proporcionar aos usurios uma viso abstrata dos dados, o que signica ocultar determinados detalhes de como os dados so efetivamente armazenados e gerenciados. Para que o sistema tenha um bom nvel de usabilidade, preciso que os dados sejam recuperados ecientemente. A necessidade de ecincia levou os desenvolvedores a utilizar Para oculestruturas de dados complexas para representar os dados na base de dados. interao com o sistema:

tar dos usurios essa complexidade, nveis de abstrao foram denidos, simplicando a

Nvel Fsico.

Nvel mais baixo de abstrao que descreve como os dados so verdadei-

ramente armazenados. O nvel fsico descreve detalhadamente as complexas estruturas de dados de baixo nvel;

Nvel Lgico.

Nvel intermedirio de abstrao que descreve quais dados so arma-

zenados na base de dados, alm dos relacionamentos existentes entre tais dados. Neste nvel, todo o banco de dados descrito em termos de um pequeno nmero de estruturas relativamente simples. Os administradores de bancos de dados usam os nvel lgico de abstrao para decidir quais informaes sero armazenadas;

Nvel de Viso.

Nvel mais alto de abstrao, descreve apenas parte do banco de da-

dos. Apesar de utilizar estruturas simples, o nvel lgico possui bastante complexidade, haja vista a variedade de informaes armazenadas. Muitos usurios no necessitam de toda essa informao e, assim, o nvel de viso proporciona diversas vises para a mesma base de dados, simplicando a interao com o sistema. O esquema de um banco de dados diz respeito aos objetos (tabelas, vises, ndices, procedimentos armazenados, etc.) disponibilizados para um determinado grupo de usurios, no guardando relao com os nveis de abstrao. Semelhantemente, o modelo de um banco de dados a especicao das estruturas de dados e regras de negcio de um banco de dados,

Pgina 44 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

incluindo Modelo Conceitual, Modelo Lgico e Modelo Fsico. A armativa de acordo com a teoria apresentada encontra-se na opo B.

Pgina 45 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

19.

Assuntos relacionados: Banco de Dados, Indexao de Registros, Banca: ESAF Instituio: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanas e Controle - Tecnologia da Informao / Desenvolvimento de
Sistemas de Informao Ano: 2008 Questo: 17

Em termos de Bancos de Dados, a indexao mais adequada para o acesso eciente aos registros, em consultas que considerem intervalos, para um pequeno nmero de linhas, corresponde ao uso de ndices (a). de juno. (b). de hashing. (c). em rvores B. (d). booleanos. (e). funcionais.

Soluo:
(A) INCORRETA Um ndice de juno uma estrutura de dados usada para o processamento de consultas de juno (join queries) em bancos de dados. Os ndices de juno usam tcnicas de pr-computao para aumentar o desempenho do processamento online de consultas e so teis para conjuntos de dados que so atualizados com pouca frequncia. Como essa opo apresenta uma restrio aos bancos de dados (e como h uma opo melhor, como ser visto), essa alternativa incorreta. (B) INCORRETA ndices de hashing so ndices que usam tabelas hash para indexao. Neles, as chaves

de pesquisa so organizadas como uma tabela hash, em que as chaves de pesquisa so associadas s entradas onde essas chaves ocorrem. Uma tabela hash (ou tabela de disperso), por sua vez, uma estrutura de dados que associa chaves de pesquisa a valores. Seu objetivo , a partir de uma chave simples, fazer uma busca rpida e obter o valor desejado. Por mapearem uma chave de pesquisa a um determinado ndice de forma direta, as tabelas hash proporcionam um tempo mdio de busca constante, ou seja, O(1). Em virtude de seu alto desempenho, as tabelas hash so tipicamente utilizadas na indexao de grandes volumes de informaes em bancos de dados e na criao de esquemas associativos de acesso s memria cache. Aps a construo do ndice, quando uma consulta realizada, a funo hash aplicada chave de pesquisa para identicao do slot onde as chaves ocorrem. ocorrncias so, ento, recuperadas. Apesar de ecientes para buscar um nico valor e como valores prximos so normalmente mapeados para posies distantes na tabela, uma abordagem de tabelas hash para consultas As entradas das

Fonte: Ecient Join-Index-Based Join Processing: A Clustering Approach, disponvel em http://www.cs.umn.edu/tech_reports_upload/tr1999/99-030.pdf


1
Pgina 46 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

com intervalos se mostrar ineciente, visto que a conferncia dos valores nos intervalos ser custosa. (C) CORRETA ndices em rvores B, como o nome diz, so ndices que usam rvores B. Uma rvore B uma estrutura de dados baseada em rvores que mantm os dados ordenados e que permite buscas, acesso sequencial, inseres e remoes em tempo logartmico amortizado. Por ser otimizada para sistemas que leem e escrevem grandes quantidades de dados, elas so bastante utilizadas na implementao de bancos de dados e sistemas de arquivos. As rvores B so uma generalizao das rvores de busca binrias, pois cada n pode possuir mais de dois lhos. Mais formalmente, uma rvore B de ordem m (com m o nmero mximo de lhos de um n) uma rvore que satisfaz as seguintes propriedades: 1. Cada n possui, no mximo, m lhos; 2. Cada n (exceto a raiz), possui, no mnimo, m/2 lhos; 3. A raiz possui pelo menos dois lhos quando no for um n folha; 4. Todas as folhas aparecem no mesmo nvel; 5. Um n no folha com k lhos possui k-1 chaves. Como exemplo, a Figura 4 exibe o desenvolvimento de uma rvore B de ordem 3 medida que os elementos 1, 2, 3, 4, 5, 6 e 7 so adicionados a ela. Como exibido, sempre que um n no capaz de armazenar mais elementos, aquele n dividido e a rvore, rebalanceada, 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 , tambm, O(log n). No entanto, quando necessrio buscar por um intervalo, como, internamente os ns das rvores B esto ordenados e a busca pelos limites O(log n), a recuperao dos valores do intervalo buscado feita rapidamente, tornando as rvores B a melhor estrutura de dados para criao do ndice nesse caso e, portanto, a alternativa c a correta. (D) INCORRETA ndice booleano no um conceito amplamente divulgado na literatura. No entanto,

existem ndices chamados ndices bitmap que armazenam seus dados como vetores de bits e respondem a consultas atravs da execuo de operaes lgicas bit a bit nesses vetores de bits. Esse tipo de ndice foi projetado para casos em que os valores de uma varivel se repetem com grande frequncia. Devido a forma como so construdos, o ndice de bitmap possui vantagens de desempenho para esse caso, mas no na busca de intervalos. (E) INCORRETA ndices funcionais so ndices denidos pelo usurio do sistema de banco de dados. Com

eles, possvel que o usurio do banco de dados dena suas prprias funes de indexao. Esse tipo de ndice adiciona exibilidade ao banco de dados e pode ser usado com tipos denidos pelo usurio. esta questo. Por poderem ser implementados da forma que melhor convier ao usurio e no um algoritmo propriamente dito, ndices funcionais no so a soluo para

Pgina 47 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Figura 4: desenvolvimento de uma rvore B de ordem 3 medida que os elementos 1, 2, 3, 4, 5, 6 e 7 so adicionados.

Pgina 48 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

20.

Assuntos relacionados: Banco de Dados, ACID, Banca: ESAF Instituio: Controladoria-Geral da Unio (CGU) Cargo: Analista de Finanas e Controle - Tecnologia da Informao / Desenvolvimento de
Sistemas de Informao Ano: 2008 Questo: 54

O termo integridade se refere preciso ou correo de dados.

Em um banco de dados

relacional, as restries de integridade tm importncia crucial, pois fornecem uma forma de garantir que as mudanas realizadas pelos usurios no resultem na perda de consistncia dos dados. Com relao s restries de integridade, incorreto armar que uma restrio de (a). varivel de relao especica os valores vlidos para uma determinada varivel de relao, e vericada quando essa varivel de relao atualizada. (b). tipo especica os valores vlidos para um determinado tipo, e vericada durante invocaes do seletor correspondente. (c). atributo especica os valores vlidos para um determinado atributo, e nunca deve ser violada. (d). banco de dados especica os valores vlidos para um determinado banco de dados, e vericada no instante de COMMIT. (e). domnio especica que o valor de um atributo no pode pertencer a mais de um domnio.

Soluo:
Autores diferentes costumam classicar as restries de integridade de forma diferente. Em [1], por exemplo, as restries de integridade so classicadas como restries de tipo (domnio), de atributo, de variveis de relao, de banco de dados, de transio de estados, de chaves, de integridade referencial e restries quanto ao momento de vericao. Em [2] as encontramos como restries de domnio, de chave, de formas de relacionamento e de integridade referencial. J em [3] elas so classicadas como restries de domnio, de chave, de integridade referencial, de integridade de entidade e no-nulo. Para a elaborao desta questo, h indcios de que as denies encontradas em [1] foram usadas. Nela, o conceito apresentado de maneira incorreta o descrito na alternativa e, dado que a descrio apresentada dene, de maneira errnea, o que uma restrio de domnio. Uma restrio de domnio uma restrio que especica que, dentro de cada tupla do banco de dados relacional, o valor de cada atributo A deve ser um valor pertencente ao domnio de A. Em outras palavras, uma restrio de domnio testa os valores inseridos no banco de dados e as consultas realizadas para garantir que os valores inseridos sejam condizentes com os domnios das variveis armazenadas. O domnio de um atributo envolve seu tipo de dados, o intervalo de valores possvel que esse atributo pode possuir, seu tamanho mximo, e se existe a possibilidade de valores nulos em A. Os tipos de dados associados aos domnios incluem os tipos de dados numricos padro (como inteiros e nmeros reais de representados por ponto utuante), caracteres, booleanos,

Pgina 49 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

strings de comprimento xo e varivel, data, hora, timestamp e, em alguns casos, moeda. possvel, tambm, como citado, especicar subconjuntos de valores de um tipo de dado ou por uma enumerao de valores. Um domnio, por sua vez, um conjunto de valores atmicos. Por atmico entendemos que cada valor no domnio indivisvel no que diz respeito ao modelo relacional. Um mtodo comum para a especicao de um domnio denir um tipo de dados do qual os valores de dados que formam o domnio sejam retirados. Tambm til especicar um nome para esse domnio, de modo a ajudar na interpretao de seus valores. Alguns exemplos de domnio so (com o nome do domnio esquerda e sua descrio direita):

Nmero de CPF:

o conjunto de onze dgitos vlidos do nmero de CPF; possveis valores de mdias computadas para um determinado

Mdia de pontos:

aluno. As mdias devem ser no-negativas e inferiores mdia mxima atingvel. Em SQL possvel criar um domnio atravs do comando CREATE DOMAIN. No exemplo abaixo, exibido um comando para a criao do domnio NUMERO_CPF em SQL:

CREATE DOMAIN NUMERO_CPF AS CHAR(11);

Esclarecimentos sobre as outras Alternativas


Apesar de sabermos que as outras alternativas esto corretas, convm fazer comentrios adicionais sobre cada uma delas para melhor compreenso dos conceitos.

Restrio de varivel de relao


A restrio de varivel de relao, ou de tuplas, uma restrio sobre uma tupla individual e pode incorporar restries sobre atributos da mesma. Como essa restrio vericada sempre que a varivel de relao atualizada, possvel adicionar restries como um aluno somente poder ter estado de formado caso tenha cumprido o nmero mnimo de crditos de um curso.

Restrio de tipo
Uma restrio de tipo, como o nome diz, especica que um atributo deva pertencer ao tipo especicado e, portanto, a suas restries.

Restrio de atributo
Uma restrio de atributo, como descrito no enunciado da questo, descreve os possveis valores vlidos que o atributo deve assumir. Um exemplo que o atributo SEXO s faa sentido para os valores F (feminino) e M (masculino).

Restrio de banco de dados


Uma restrio de banco de dados uma restrio que relaciona duas ou mais tuplas distintas e, portanto, necessrio que todas as restries das tuplas envolvidas sejam atendidas. Um exemplo desse tipo de restrio um pedido em uma loja virtual: pedido. o somatrio das quantidades de todos os itens no pode ser maior que a quantidade total de elementos do

Pgina 50 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Referncias
[1] [2] [3]
Introduo a Sistemas de Banco de Dados, C. J. Date. 7a edio. Sistemas de Banco de Dados, A. Silberchatz et al. 3a edio. Sistemas de Banco de Dados, Ramez Elmasri e Shamkant B. Navathe. 4a edio.

Pgina 51 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

21.

Assuntos relacionados: Banco de Dados, ACID, Banca: ESAF Instituio: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanas e Controle - Tecnologia da Informao / Desenvolvimento de
Sistemas de Informao Ano: 2008 Questo: 14

Se uma restrio de integridade, classicada como restrio de banco de dados, ocorrer no momento de um COMMIT de uma transao, imediatamente executado um (a). DROP. (b). ROLLBACK. (c). BEGIN_TRANSACTION. (d). END_TRANSACTION. (e). LOCKING.

Soluo:
A integridade a qualidade de garantir que os dados em um banco de dados estejam corretos. Geralmente, as restries de integridade so denies de valores permitidos de serem atribudos a determinadas variveis. No momento de uma insero de dados, ou mesmo de uma atualizao em dados j existentes, as restries de integridade devem ser respeitadas e, para tanto, vericaes so efetuadas antes da insero/atualizao serem concretizadas. A questo natural que surge o momento da vericao e da consequente execuo da operao solicitada (insero/atualizao). A concorrncia de operaes em um banco de dados, isto , a execuo simultnea de operaes sobre uma mesma parte da base de dados disponvel, situao corriqueira a ser tratada por SGBDs (Sistemas de Gerenciamento de Banco de Dados). Essa concorrncia sobre a base de dados, se mal gerenciada, pode provocar inconsistncias nos dados alterados. Neste contexto, o conceito de transao surge como uma opo de soluo ao problema da manuteno da integridade face a concorrncia de operaes. A transao, isto , um conjunto de operaes sobre uma base de dados, deve possuir 4 caractersticas essenciais com o intuito de auxiliar a garantia da integridade dos dados. Uma transao deve ser atmica, ou seja, todas as operaes (ou comandos) que a compem so executadas de uma maneira nica (todas as operaes so executadas com sucesso ou nenhuma delas executada). Uma transao deve ser isolada de outras transaes e, consequentemente, ser executada de forma independente das demais. Alm disso, toda transao precisa ser durvel, caracterstica que garante a manuteno das alteraes decorrentes de uma transao concluda, mesmo que ocorra alguma falha aps essa concluso (inclusive de fornecimento de energia eltrica). E, por m, mas no com menos importncia, uma transao deve ser consistente, ou seja, deve fornecer a garantia de consistncia dos dados em relao a um conjunto de regras de negcio previamente estabelecidas. Para uma adequada execuo, operaes de controle sobre as transaes so utilizadas. So elas:

BEGIN_TRANSACTION:

sinaliza o incio da execuo de uma transao;

Pgina 52 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

END_TRANSACTION:

determina o trmino das operaes de uma transao.

Contudo, a partir deste ponto necessrio vericar se as modicaes introduzidas pela transao podem ser permanentemente aplicadas base de dados (comando COMMIT) ou se a transao deve ser abortada (comando ROLLBACK) devido a algum problema ocorrido;

COMMIT (ou COMMIT_TRANSACTION): indica o trmino da transao com


sucesso, isto , todas as alteraes na base de dados foram executadas e no sero desfeitas;

ROLLBACK (ou ABORT):

sinaliza que a transao terminou sem sucesso e ne-

nhuma modicao na base de dados foi efetuada. Nas opes de resposta fornecidas na questo, os itens b), c) e d) citam operaes de transaes dentre as quais encontra-se a operao ROLLBACK, resposta para a pergunta, conforme a teoria explanada at aqui. Mesmo de posse da resposta, cabe um comentrio sobre os outros dois termos citados dentre as opes de resposta: DROP e LOCKING. O comando DROP faz parte da DDL (Data Denition Language) de um banco de dados, sendo responsvel por apagar itens do catlogo do banco em conjunto com outras diretivas, como pode ser observado, por exemplo, no comando DROP TABLE que serve para apagar uma tabela do banco de dados, ou ainda no comando DROP DATABASE que serve para apagar o prprio banco de dados. LOCKING (ou congelamento) um mecanismo presente em SGBDs para tentar garantir o controle de concorrncia. Nada mais do que a ao, tomada mediante uma transao, de indisponibilizar temporariamente parte da base de dados para as demais transaes. uma atitude que deve ser evitada por propiciar a ocorrncia de deadlocks, isto , impasses gerados por vrias transaes que disputam recursos e acabam provocando uma dependncia circular, sem conseguirem atingirem o nal de suas execues.

Pgina 53 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

22.

Data Denition Language (DDL), Data Manipulation Language (DML), Data Control Language (DCL), Data Query Language (DQL), Transaction Control Language (TCL), SQL, Banca: ESAF Instituio: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanas e Controle - Tecnologia da Informao / Desenvolvimento de Sistemas de Informao Ano: 2008 Questo: 11
Um SBGD (Sistema Gerenciador de Bancos de Dados) possui um compilador para uma determinada linguagem, cuja funo o processamento de declaraes, a m de identicar as descries dos componentes do esquema conceitual do Banco de Dados. Tal linguagem de (a). consulta estrutura (SQL). (b). denio de armazenamento (SDL). (c). manipulao de dados (DML). (d). denio de viso (VDL). (e). denio de dados (DDL).

Assuntos relacionados: Banco de Dados, Categorias de Linguages de Banco de Dados,

Soluo:
Os sistemas gerenciadores de bancos de dados utilizam diferentes linguagens para denir e manipular o banco de dados, alm de realizar outras atividades. Tais linguagens podem ser classicadas diversas categorias, entre as quais as mais populares so:

DDL (Data Denition Language) ou (Linguagem de Denio de Dados); DML (Data Manipulation Language) ou (Linguagem de Manipulao 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 Transaes).

Para denir e exemplicar cada uma das categorias, vamos nos ater aos bancos de dados relacionais, pois so 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 demais tecnologias de bancos de dados, como a hierrquica, a de rede, a orientada a objetos etc.

DDL (Data Defnition Language)


Em termos conceituais, a DDL contm o conjunto de comandos utilizados para descrever e criar a estrutura do banco de dados. de comandos DDL so mostrados a seguir. Os comandos que compe a DDL so os que permitem criar novas tabelas, views, ndices, e outros elementos de dados. Exemplos tpicos

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)

Pgina 54 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

DML (Data Manipulation Language)


A DML contm o conjunto de comandos utilizados para manipular os dados, o que deve ser entendido como a criao de novos registros nas tabelas, alm da atualizao e da excluso de registros j existentes. Os comandos que compe a DML so, 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 compe a DCL tm por nalidade, basicamente, permitir o controle de aspectos no funcionais do banco de dados, como a segurana dos dados. So os comandos DCL que permitem a criao e excluso de usurios, a criao de pers de acesso, a alterao de senhas, e as operaes de concesso e revogao de acesso aos diversos elementos de dados. Exemplos tpicos de comandos DCL so mostrados a seguir.

GRANT (Autoriza ao usurio executar uma operao sobre algum elemento de dado) REVOKE (Revoga do usurio o direito de executar uma operao) ALTER PASSWORD (Altera a senha de um usurio) CREATE ROLE (Cria um perfil de acesso)

DQL (Data Query Language)


A DQL formada pelo conjunto de comandos e operadores que permitem a realizao de consultas no banco de dados. No mbito dos bancos de dados relacionais, o nico comando DQL o SELECT. No entanto, a DQL engloba uma vasta quantidade de clusulas e operadores, que permite consultar o banco de dados de inmeras formas. As principais clusulas da DQL so as seguintes:

FROM (Utilizada para especificar a tabela que se vai selecionar os registros) WHERE (Utilizada para especificar as condies que devem reunir os registros que sero selecionados) GROUP BY (Utilizada para separar os registros selecionados em grupos especficos) HAVING (Expressar a condio que deve ser satisfeita por cada grupo selecionado) ORDER BY (Ordena os registros selecionados) DISTINCT (Selecionar dados sem repetio)
Com relao aos operadores lgicos e de comparao, merecem destaque os seguintes:

AND (E lgico) OR (OU lgico) NOT (Negao lgica) < (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 comparao de padres de cadeias de caracteres)

Pgina 55 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Por m, merecem destaque as funes de agregao, que adicionam DQL a capacidade de agregar os resultados de uma consulta em um nico valor. agregao so as seguintes: As principais funes de

AVG (Calcula a COUNT (Calcula SUM (Calcula a MAX (Calcula o MIN (Calcula o

mdia dos valores de um campo determinado) o nmero de registros da seleo) soma de todos os valores de um campo determinado) valor mais alto de um campo determinado) menor valor de um campo determinado)

TCL (Transaction Control Language)


Finalizando as categorias de linguagens, temos a TCL, cujos comandos permitem controlar a execuo das transaes em um SGBD. Os comandos TCL mais comuns so os seguintes:

BEGIN TRANSACTION (Define o incio de uma transao de banco de dados) COMMIT (Confirma todas as mudanas permanentemente) ROLLBACK (Descarta todas as mudanas nos dados desde que o ltimo COMMIT) SET TRANSACTION (Modifica opes da transao, como o nvel de isolamento)
Diante de toda a teoria exposta, podemos armar que a resposta da questo a alternativa E  DDL (Data Denition Language).

Pgina 56 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

23.

Assuntos relacionados: SGBD, Otimizador de Consultas, Data Manipulation Language

(DML), Data Denition Language (DDL), Banca: ESAF Instituio: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanas e Controle - Tecnologia da Informao / Desenvolvimento de Sistemas de Informao Ano: 2008 Questo: 13
Em um SGBD (Sistema Gerenciador de Bancos de Dados), as requisies de manipulao de dados so processadas por um componente capaz de determinar uma maneira eciente de implement-las. Tal componente o (a). processador da linguagem de manipulao de dados (DML). (b). gerenciador tem tempo de execuo. (c). otimizador. (d). processador da linguagem de denio de dados (DDL). (e). esquema fsico.

Soluo:
Um Sistema Gerenciador de Bancos de Dados (SGBD) composto por vrios mdulos, com atribuies especcas. A Linguagem de Denio de Dados (DDL  Data Denition Language), responsvel por construes declarativas dos objetos da base de dados, precisa de um

processador de DDL

(ou compilador) que lhe interprete os comandos.

Tal compi-

lador processa as denies de esquema, especicados na DDL, e armazena descries dos esquemas (meta-dados) no

catlogo

do SGBD. Da mesma forma, a Linguagem de Mani-

pulao de Dados (DML  Data Manipulation Language), que permite o processamento ou manipulao dos dados armazenados, faz uso de um requisies de acesso so gerenciadas pelo

processador de DML dedicado

tarefa de compilar os comandos DML em cdigos-objeto para acesso base de dados. Essas

execuo

processador da base de dados em tempo de

(runtime database processor), que recebe as operaes de atualizao ou obten-

o de dados e, quando necessrio, transporta tais dados para fora do banco de dados, em atendimento s consultas efetuadas. Um consulta expressa em uma linguagem de alto-nvel, como a linguagem SQL, deve primeiramente ser escaneada, parseada e validada. O processo de escaneamento identica os tokens da linguagem no texto da consulta, ao passo que o parser verica a sintaxe da pesquisa para determinar se houve uma formulao segundo as regras gramaticais impostas. A etapa de validao verica se os atributos e relaes presentes na consulta so vlidos e se fazem sentido semanticamente face ao esquema do banco de dados. Em seguida, uma estratgia de execuo para recuperao do resultado da consulta precisa ser denida. Geralmente, uma consulta possui diversas estratgias de execuo. O mdulo

consultas

otimizador de

responsvel por elaborar um plano de execuo mais adequado para obter o

resultado desejado da forma mais eciente possvel. As quatro primeiras alternativas apresentadas como possveis respostas questo apresentam elementos que constituem um SGBD, sendo que o item c) exibe a resposta correta, conforme teoria explanada. A alternativa e) exibe no um elemento de SGBD, mas sim um componente da arquitetura de um banco de dados baseada em trs esquemas: esquema

Pgina 57 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

fsico (ou esquema interno, ou nvel interno), esquema conceitual (ou nvel conceitual) e esquema(s) externo(s) (ou nvel de viso). O objetivo dessa arquitetura em trs esquemas separar as aplicaes de usurio da estrutura fsica do banco de dados.

Pgina 58 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

24.

Assuntos relacionados: Bancos de Dados Distribudos, Banca: CESGRANRIO Instituio: BNDES Cargo: Analista de Suporte Ano: 2008 Questo: 68
A fragmentao de dados utilizada em um banco de dados distribudo tem como objetivo dividir as informaes de uma determinada relao R. Sobre essa fragmentao de dados, tem-se que (a). os dados esto sempre replicados pelos diversos ns existentes, no caso das fragmentaes horizontal e vertical. (b). no possvel reconstruir a relao original R por meio dos diversos fragmentos existentes. (c). na fragmentao vertical, ocorre a decomposio de atributos de R em um ou mais fragmentos. (d). na fragmentao vertical, ocorre a decomposio de R em subconjuntos de dados selecionados a partir de um critrio comum de ltragem relativo a um atributo de R. (e). a reconstruo dos dados de uma fragmentao horizontal possvel atravs da interseo dos subconjuntos de dados fragmentados.

Soluo:
Como mencionado no enunciado da questo, a fragmentao de dados uma tcnica utilizada em bancos de dados distribudos, e tem como objetivo dividir as informaes de uma determinada relao R por vrios servidores (chamados ns) de banco de dados. A fragmentao permite o processamento paralelo, que proporciona ganho de desempenho, especialmente, nas operaes de consulta. Os dois mtodos de fragmentao mais comuns so a fragmentao horizontal e a fragmentao vertical, ilustrados na Figura 5.

Figura 5: fragmentao de dados. As caractersticas da fragmentao horizontal so as seguintes:

cada fragmento contm um subconjunto das tuplas da relao completa; cada tupla de uma relao precisa ser armazenada em pelo menos um servidor; a relao completa pode ser obtida fazendo a unio dos fragmentos; no h necessidade de replicao de dados entre os ns.

Pgina 59 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

J na fragmentao vertical:

relaes so decompostas em conjuntos de atributos mantidos em servidores diferentes; cada fragmento uma projeo da relao completa; a relao completa pode ser obtida fazendo a juno de todos os fragmentos; h necessidade de replicao da chave primria entre os ns para que seja possvel a operao de juno.

Como podemos notar, para se obter a relao completa necessrio realizar operaes de unio (no caso da fragmentao horizontal) ou de juno (no caso da fragmentao vertical). Tais operaes so de responsabilidade do SGBD, de modo a permitir aos usurios utilizarem o banco de dados de forma transparente, como se estivessem utilizando um SGBD nodistribudo.

Pgina 60 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

25.

Assuntos relacionados: Sistemas Distribudos, Independncia de Localizao, Independncia de Fragmentao, Independncia do Sistema Operacional, Banca: Cesgranrio Instituio: Petrobras Cargo: Analista de Sistemas - Processos de Negcio Ano: 2008 Questo: 64

Sistemas de informaes distribudos so aqueles em que dados so armazenados e processados em diferentes localizaes. Um banco de dados distribudo um exemplo deste tipo de sistema. Para o usurio, um sistema de banco de dados distribudo deve parecer exatamente como um sistema no distribudo. Para que tal meta seja alcanada, alguns objetivos secundrios so normalmente estabelecidos, entre os quais (a). independncia de localizao. (b). independncia de fragmentao. (c). independncia do sistema operacional. (d). operao contnua. (e). coordenao em um n central.

NO se inclui a

Soluo: Operao contnua


Uma vantagem dos sistemas distribudos (SD) que eles devem fornecer maior conabilidade e maior disponibilidade. A conabilidade em SD implica no funcionamento sem queda em qualquer momento, isto acontece, porque sistemas distribudos podem continuar a funcionar mesmo diante da falha de algum componente individual, como um servidor isolado. A disponibilidade refere se ao funcionamento continuamente sem queda do sistema durante um perodo, isso porque existe a possibilidade de replicao dos dados. No ser preciso desligar o sistema para a execuo de alguma tarefa, como adicionar um servidor ou atualizar o sistema de banco de dados. Esta caracterstica fundamental, uma vez que os sistemas garantem o funcionamento/acesso dos dados/metadados, independente do tempo necessrio para manipul-los. Como os metadados estaro distribudos (replicados) em todos os servidores, mesmo na presena de uma falha, algum servidor disponibilizar os metadados para serem manipulados.

Independncia de localizao
Tambm conhecida por transparncia de localizao, quando os usurios no precisam saber onde esto sicamente armazenados os dados. uma caracterstica desejvel, pois simplica programas e atividades em aplicaes e permite que dados migrem de um servidor para outro, sem invalidar qualquer desses programas e atividades. Essa capacidade de migrao desejvel porque permite que dados sejam deslocados pela rede em resposta a alteraes de exigncias de desempenho. Utilizando-se de metadados, a transparncia de armazenamento faz com que os usurios das aplicaes desconheam a forma (em que local) como os metadados so mantidos, simplicando a adio de novos servidores no sistema distribudo.

Pgina 61 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Independncia de fragmentao
Um sistema admite fragmentao de dados se uma dada varivel de relao armazenada pode ser dividida em pedaos (fragmentos) para ns de armazenamento fsico. A fragmentao desejvel por razes de desempenho: apenas local e o trfego na rede seja reduzido. os dados podem ser armazenados no local em que so mais freqentemente utilizados, de modo que a maior parte das operaes seja

Independncia de sistema Operacional


O suporte a um sistema de banco de dados distribudos implica que uma nica aplicao seja capaz de operar de modo transparente sobre dados dispersos em uma variedade de banco de dados diferentes, gerenciados por vrios SGBDs diferentes, em execuo em uma variedade de mquinas diferentes que podem estar rodando em diversas plataformas diferentes e uma variedade de sistemas operacionais. Onde o modo transparente diz respeito aplicao operar sob um ponto de vista lgico como se os dados fossem gerenciados por um nico SGBD, funcionando em uma nica mquina com apenas um sistema operacional. Assim, um sistema distribudo consiste em adicionar o poder computacional de diversos computadores interligados por uma rede de computadores ou mais de um processador trabalhando em conjunto no mesmo computador, para processar colaborativamente determinada tarefa de forma coerente e transparente, ou seja, como se apenas um nico e centralizado computador estivesse executando a tarefa, portanto a alternativa

E est incorreta.

Pgina 62 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

26.

Assuntos relacionados: Banco de Dados, Normalizao de Banco de Dados, Primeira


Forma Normal (1FN), Segunda Forma Normal (2FN), Terceira Forma Normal (3FN), Banca: CESGRANRIO Instituio: BNDES Cargo: Analista de Suporte Ano: 2008 Questo: 46

A relao Vendas, apresentada a seguir, foi montada para armazenar os dados de um sistema de vendas. Considere que atributo sublinhado representa o identicador da relao, e item marcado com * representa atributo multi-valorado. Vendas(NumeroNota, CodProduto, DescProduto, NomeCliente, CPFCliente, Data, QtdeVendida, ValorUnitVendido, Peso, Telefone*) Foram especicadas as seguintes dependncias funcionais: CodProduto

DescProduto, Peso

NumeroNotaFiscal CPFCliente

Data, CPFCliente

NumeroNotaFiscal, CodProduto

QtdeVendida, ValorUnitVendido

NomeCliente

Considerando-se que para um dado valor em CPFCliente podem existir vrios telefones associados e vice-e-versa, qual o conjunto de tabelas que armazena as informaes apresentadas, atende s dependncias 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)

Soluo:

Pgina 63 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Uma dependncia funcional da forma A

B revela que cada valor do atributo A determina

exatamente um valor do atributo B. Por exemplo, na dependncia funcional CodProduto

DescProduto, Peso, supomos CodProduto = 1001, a esse CodProduto estar associada

exatamente uma dupla da forma DescProduto, Peso, por exemplo: Sabo 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 relaes satisfazem as condies da terceira forma normal. Uma relao que est na terceira forma normal necessariamente satisfaz as condies previstas na primeira e na segunda forma normal. A primeira forma normal probe a existncia de campos multivalorados. Logo, a alternativa A j pode ser eliminada, visto que o atributo Telefone da tabela Clientes multivalorado. Uma relao satisfaz as condies da segunda forma normal se atender as condies da primeira forma normal e, alm disso, respeitar a seguinte restrio: todos os atributos noprimo (atributos que no fazem parte de nenhuma chave candidata) s podem depender funcionalmente de conjuntos formados por todos os campos de qualquer chave candidata, e no somente de uma parte deles. Exemplo: na tabela NotasDeVenda, os campos CPFCliente e Data dependem funcionalmente somente do campo NumeroNota, e no de toda a chave primria (NumeroNota, CodProduto), que por denio uma chave candidata. Logo, a alternativa B tambm pode ser eliminada, uma vez que no atende nem segunda forma normal. Analisando a denio acima, podemos concluir que as relaes da alternativa C satisfazem s condies da segunda forma normal. O que mais necessrio para que essas relaes estejam na terceira forma normal? Para responder essa pergunta necessrio conhecer mais algumas denies. A primeira delas o de atributo no-primo, que, basicamente, um atributo que no pertence a nenhuma chave candidata da relao. Outro conceito o de dependncia funcional transitiva: quando uma dependncia funcional X indiretamente da forma X

Z determinada Y e Y Z. Voltando denio da terceira forma normal. Ela


No existe nenhuma relao

exige que todo atributo no-primo da relao seja diretamente dependente (ou seja, no seja transitivamente dependente) de qualquer chave candidata. resposta correta para a questo. Finalizando, a relao Vendas da alternativa D e as relaes Cliente e Nota da alternativa E no satisfazem as condies da segunda forma normal. Portanto, tambm no esto na terceira forma normal. transitiva dos atributos no-primo nas relaes descritas na alternativa C. Logo, essa a

Pgina 64 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

27.

Assuntos relacionados: Banco de Dados, Modelo Relacional, Normalizao de Banco de


Dados, Primeira Forma Normal (1FN), Banca: CESGRANRIO Instituio: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questo: 23

correto armar que qualquer relao vlida de um modelo relacional: (a). pode apresentar tuplas duplicadas, desde que no haja chaves candidatas denidas. (b). em seus atributos ordenados da esquerda para a direita, de acordo com a denio. (c). tem suas tuplas naturalmente ordenadas, para ns de localizao. (d). tem um ndice fsico para cada chave candidata, incluindo a chave primria. (e). est, pelo menos, na primeira forma normal.

Soluo:
Conceitualmente, em um banco de dados relacional, as relaes podem ser denidas como um conjunto de tuplas. Uma tupla uma sequncia ordenada de atributos e representa, usualmente, um objeto do mundo real e suas informaes. Todas as tuplas em uma mesma relao possuem o mesmo conjunto de atributos. Entretanto, em uma relao, elas devem preservar o que chamado de integridade existencial, que, basicamente, implica que tuplas iguais (com todos os valores dos seus atributos iguais) no so permitidas. Caso contrrio, no temos uma relao. A forma de garantir a integridade existencial denir uma chave primria, que, obrigatoriamente, deve ser no-nula e nica em toda relao. Logicamente, sendo a chave primria nica, as tuplas duplicadas no sero permitidas e a relao estar garantida. Deve car clara a diferena entre tabela e relao. Uma tabela nada mais do que um

conjunto de linhas e colunas. J as relaes, que j foram denidas acima, so implementadas sicamente em tabelas, que, obviamente, devem atender s condies exigidas em uma relao. Ou seja, nem toda tabela representa uma relao. Na denio da primeira forma normal dada por Date, uma tabela est na primeira formal normal se, e somente se, for isomrca alguma relao. Isso quer dizer que, especicamente, a tabela deve atender s cinco condies abaixo:

no existe uma ordenao das linhas de cima para baixo; no existe uma ordenao das colunas da direita para esquerda; no existem linhas duplicadas; qualquer interseo linha-coluna deve conter exatamente um valor no domnio aplicvel e nada mais; todas as colunas so regulares, no sentido de no possurem componentes ocultos como identicadores de linhas, identicadores de colunas, identicadores de objetos ou timestamps ocultos. Veja nas Tabelas 3, 4 e 5 um exemplo de cenrio em que a informao contida em uma tabela que no est na 1FN transportada para outras tabelas que esto na 1FN.

Pgina 65 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

idPessoa 1 2 3

nmPessoa Joo Roberto Juliana Gomes Talita Brando

dtAniversario 01/05/1980 28/02/1985 03/12/1988

nrTelefones 9311-9654 - 3698-5741 3232-4521 - 6352-9821 - 3987-8855 5561-9874

Tabela 3: exemplo de tabela que no est na 1FN.

idPessoa 1 2 3

nmPessoa Joo Roberto Juliana Gomes Talita Brando

dtAniversario 01/05/1980 28/02/1985 03/12/1988

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

idTelefone 1 2 3 4 5 6

idPessoa 1 1 2 2 2 3

nrTelefone 9311-9654 3698-5741 3232-4521 6352-9821 3987-8855 5561-9874

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

Dada a exposio terica, podemos analisar as alternativas da questo: a. falsa, uma relao vlida no permite tuplas duplicadas. b. falsa, a ordenao dos atributos no dene a relao. c. falsa, a ordenao das linhas no dene a relao. d. falsa, a relao uma denio no nvel conceitual. Os ndices fsicos so denidos no nvel fsico e no inuenciam no conceito de relao. Geralmente, esses ndices podem ser livremente criados para qualquer conjunto de atributos, j a obrigao citada de serem criados para cada chave candidata no existe e no faz nenhum sentido. e. verdadeira, pois, por denio, uma tabela representa uma relao se, e somente se, a tabela est na primeira forma normal.

Pgina 66 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

28.

Assuntos relacionados: Banco de Dados, Normalizao de Banco de Dados, Primeira


Forma Normal (1FN), Segunda Forma Normal (2FN), Terceira Forma Normal (3FN), Banca: CESGRANRIO Instituio: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questo: 25

As informaes a seguir so comuns s questes de nmero 5 ao 8


Considere as tabelas de um banco de dados relacional descritas abaixo, onde os campos que compem chaves primrias esto assinalados com *. TABELA CLIENTE PRODUTO VENDA CAMPOS *CODIGO_C, CPF, NOME, CIDADE *CODIGO_P, DESCRICAO, PRECO *CODIGO_C, *CODIGO_P, CPF, DATA, QUANTIDADE

H uma chave estrangeira de VENDA para CLIENTE com base nos campos CODIGO_C e de VENDA para PRODUTO com base nos campos CODIGO_P. O campo CPF chave candidata para CLIENTE e tambm armazenado na tabela VENDA. Os campos NOME e DESCRICAO tambm so chaves candidatas de suas respectivas tabelas. Os campos CIDADE, PRECO, DATA e QUANTIDADE admitem valores repetidos. Sobre as formas normais a que as tabelas satisfazem, assinale a armativa correta. (a). CLIENTE satisfaz segunda forma normal (2FN), mas no terceira (3FN). (b). PRODUTO satisfaz segunda forma normal (2FN), mas no terceira (3FN). (c). VENDA satisfaz segunda forma normal (2FN), mas no terceira (3FN). (d). VENDA no satisfaz segunda forma normal (2FN). (e). As trs tabelas satisfazem terceira forma normal (3FN).

Soluo:
Primeiramente, vamos denir o que dependncia funcional. Dizemos que B funcionalmente dependente de A (A Um exemplo prtico cidade

B) se, para cada valor de A, existe exatamente um atributo B. estado, uma cidade A implicar em exatamente um estado

B correspondente. No caso, A o determinante e B o dependente. A dependncia funcional trivial indica que um determinante com mais de um atributo pode determinar seus prprios membros quando isolado. atributo qualquer {banco, agencia} Exemplo: {banco, agencia}

{agencia}. A dependncia funcional no-trivial indica que um determinante identica outro

{cidade}.

Se um atributo A determina B e se B determina C, podemos dizer que A determina C de forma transitiva. Isto , existe uma dependncia funcional transitiva de A para C. Exemplo: cidade

estado, estado

pais, ento cidade

pais.

Uma chave candidata um atributo ou conjunto de atributos que nico dentre todos os registros. J a chave primria uma chave escolhida entre as chaves candidatas para ser o identicador principal da tabela.

Pgina 67 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Outra denio importante a do atributo no-primo, que um atributo que no ocorre em nenhuma das chaves candidatas da tabela. Sabemos que uma tabela est na segunda forma normal se ela est na primeira forma normal e no existe atributo no-primo na tabela que seja funcionalmente dependente de algum subconjunto prprio de qualquer chave candidata. Melhor dizendo: todas as colunas que no fazem parte de nenhuma chave candidata dependem de todas as colunas que compem qualquer 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 forma normal se j tiver atendido s condies da primeira forma normal. Sendo assim, j podemos notar que a tabela CLIENTE e a tabela PRODUTO esto na segunda forma normal garantidamente. J ao analisarmos a tabela VENDA poderamos nos enganar ao acharmos que pelo fato de CPF ser dependente funcionalmente de CODIGO_C, estaramos violando a condio exigida da segunda forma normal, j que CODIGO_C um subconjunto prprio da chave primria. Essa concluso seria verdadeira se no fosse pelo fato de {CPF,CODIGO_P} ser uma chave candidata, tornando o atributo CPF primo, ou seja no no-primo. Conclumos, assim, que a tabela VENDA est na segunda forma normal. Uma tabela est na terceira forma normal se qualquer atributo no-primo no transitivamente dependente de qualquer chave candidata da tabela. Ao analisarmos a tabela CLIENTE, notamos que o atributo CIDADE o nico no-primo, sendo impossvel, dessa maneira, haver dependncia funcional em que uma chave candidata no seja o atributo determinante. Ou seja, todas as dependncias funcionais so diretas a partir de qualquer chave candidata e a tabela CLIENTE est na terceira forma normal. O nico atributo no-primo da tabela PRODUTO PRECO. Portanto, seguindo o mesmo raciocnio anterior, conclumos que PRODUTO est na terceira forma normal. A tabela VENDA tem 2 atributos no-primo: DATA e QUANTIDADE. Como no h

dependncia funcional entre eles, essa tabela tambm est na terceira forma normal. Logo, conclumos que todas as tabelas satisfazem terceira forma normal e a alternativa a ser marcada a alternativa E. Se continussemos a analisar quais formas normais so atendidas pelas tabelas da questo, chegaramos concluso de que as tabelas CLIENTE e PRODUTO satisfazem forma normal de Boyce Codd (FNBC), ao contrrio da tabela VENDA, que no satisfaz. as seguintes caractersticas: Uma tabela que no satisfaz a forma normal de Boyce Codd (FNBC) pode ser identicada com

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 (so compostas); todas as chaves candidatas tm um atributo em comum (CODIGO_P, no caso das chaves candidatas da tabela VENDA).

Pgina 68 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

29.

Assuntos relacionados: Modelo Relacional, Banco de Dados, Normalizao de Banco de


Dados,

Banca: FCC Instituio: TRT 2a Regio Cargo: Analista Judicirio - Tecnologia da Informao Ano: 2008 Questo: 40
Para eliminar a condio de existncia de valores no atmicos em uma coluna de tabela relacional, (a). deve ser aplicada, no mnimo, a primeira Forma Normal. (b). devem ser aplicadas, no mnimo, as quatorze regras de Codd. (c). deve ser aplicada, no mnimo, a Forma Normal Boyce-Codd. (d). deve ser aplicada, no mnimo, a terceira Forma Normal. (e). devem ser aplicadas, no mnimo, as regras de integridade referencial.

Soluo:
Para resolvermos a presente questo bom relembrarmos alguns tipos de atributos existentes no Modelo Entidade-Relacionamento (MER), o signicado de Normalizao de Dados, Super-chave, Chave-candidata, Chave-primria, dependncia Funcional e dependncia noTransitiva entre atributos:

cada entidade em um MER tem propriedades particulares, chamadas a descrevem. Por exemplo, uma entidade

EMPREGADO

atributos,

que

pode ser descrita pelo seu

nome, o trabalho que realiza, idade, endereo e salrio. Uma entidade em particular ter um valor para cada um de seus atributos. Alguns atributos podem ser divididos em subpartes com signicados independentes. Por exemplo, pode ser dividido em composto de outros atributos mais bsicos chamado no so divisveis so chamados

Endereo de uma entidade Endereo da Rua, Cidade, Estado e CEP. Um atributo que

simples

ou

um nico valor. Tais atributos so chamados atributos

de Nascimento
(exemplo, valores;

atmicos. Muitos atributos tm apenas univalorados (exemplo, Data

composto.

J, atributos que

de uma entidade qualquer).

Em outros casos, um atributo pode ter

um conjunto de valores.

Tais atributos so chamados de atributos

Telefone de Contato

multivalorados

de uma entidade qualquer). Atributos multivalorados

podem possuir uma multiplicidade, indicando as quantidades mnima e mxima de

a Normalizao de Dados um processo formal, passo a passo, de anlise dos atributos de uma relao com o objetivo de evitar redundncia de informao, eliminando as chamadas anomalias de atualizao (Incluso, Excluso Modicao). Baseia-se no conceito de FORMAS NORMAIS. Uma relao (tabela) dita estar em uma determinada forma normal, se ela satiszer a um conjunto especco de restries;

Super-chave:

qualquer subconjunto dos atributos de uma relao R cujos valores

no se repetem em R;

Chave-candidata:

uma super-chave que possua a menor quantidade possvel de

atributos (uma das Chaves-Candidatas deve ser eleita como Chave-primria);

Dependncia Funcional entre Atributos:


B (A

se o valor de uma Atributo A permite

descobrir o valor de um outro Atributo B, dizemos que A determina funcionalmente

B). Por exemplo: NroMatricula

NomeAluno, idade, curso. Assim, sempre

que o NroMatricula se repetir tem-se a repetio de NomeAluno, idade e curso;

Pgina 69 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Dependncia No-Transitiva:

ocorre quando cada atributo for funcionalmente de-

pendente apenas dos atributos componentes da chave primria ou se todos os seus atributos no chave forem independentes entre si. (A) CORRETA Uma relao se encontra na Primeira Forma Normal (1FN) se todos os domnios de atributos possuem apenas valores atmicos (indivisvel), e que o valor de cada atributo na tupla seja simples. A 1FN no permite a construo de relaes que apresentem atributos compostos e nem possibilita a existncia de atributos multivalorados em suas tuplas. Os nicos valores de atributos permitidos devem ser simples e atmicos. Para normalizar para a Primeira Forma Normal deve-se:

Atributos compostos:

cada um dos atributos compostos (ou no atmicos) deve ser

dividido em seus atributos componentes;

Atributos multivalorados:

 

quando a quantidade de valores for pequena e conhecida a priori, substitui-se o atributo multivalorado por um conjunto de atributos de mesmo domnio, cada um monovalorado representando uma ocorrncia do valor; quando a quantidade de valores for muito varivel, desconhecida ou grande, retirase da relao o atributo multivalorado, e cria-se uma nova relao que tem o mesmo conjunto de atributos chave, mais o atributo multivalorado tambm como chave, porm 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. So elas: 1. Regra das informaes em tabelas; 2. Regra de acesso garantido; 3. Regra de tratamento sistemtico de valores nulos; 4. Regra do catlogo relacional ativo; 5. Regras de atualizao de alto-nvel; 6. Regra de sublinguagem de dados abrangente; 7. Regra de independncia fsica; 8. Regra de independncia lgica; 9. Regra de atualizao de vises; 10. Regra de independncia de integridade; 11. Regra de independncia de distribuio; 12. Regra no-subversiva. Algumas vezes as regras se tornam uma barreira e nem todos os SGBDs relacionais fornecem suporte a elas. Alm de o nmero de regras estar errado, tal alternativa tambm no representa a aplicao mnima necessria para atender o requisito da questo. Logo, a alternativa est ERRADA.

Pgina 70 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

(C) ERRADA Um relao 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 no participam da chave candidata so dependentes no transitivos de toda a chave candidata.

Para Normalizar para a Forma Normal de Boyce-Codd seguem-se os mesmos passos da Terceira Forma Normal (3FN). No entanto, tal alternativa, assim como a alternativa alternativa tambm est ERRADA. (D) ERRADA Que tal antes relembrarmos um pouco sobre relao na Segunda Forma Normal (2FN) e na Terceira Forma Normal (3FN)? Uma relao est na 2FN quando:

D, tambm

no representa a aplicao mnima necessria para atender o requisito da questo. Logo, a

estiver na Primeira Forma Normal e; todos os atributos que no participam da chave primria so dependentes funcionalmente (diretos ou transitivos) de toda a chave primria.

Um relao considerada estar na 3FN, quando:

estiver na Segunda Forma Normal e; todos os atributos que no participam da chave primria so dependentes no transitivos de toda a chave primria.

Como vimos, uma relao que est na 3FN tambm estar na 2FN. Do mesmo modo, uma relao na 2FN tambm estar na 1FN. Como mencionamos na alternativa A, basta estar na 1FN para atender ao requisito da questo. Assim, conclumos que a alternava est ERRADA por aplicar duas operaes de normalizao a mais do que o mnimo necessrio. (E) ERRADA A Integridade Referencial utilizada para garantir a Integridade dos dados entre as tabelas relacionadas. Por exemplo, considere um relacionamento do tipo Um-para-Vrios entre a tabela Clientes e a tabela Pedidos (um cliente pode fazer vrios pedidos). Com a Integridade Referencial, o banco de dados no permite que seja cadastrado um pedido para um cliente que ainda no foi cadastrado. Em outras palavras, ao cadastrar um pedido, o banco de dados verica se o cdigo do cliente que foi digitado j existe na tabela Clientes. Se no existir, o cadastro do pedido no ser aceito. Assim, a integridade referencial garante a no corrupo dos dados, de modo a no haver como existir um registro lho sem um registro pai.

Pgina 71 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

30.

Assuntos relacionados: Banco de Dados, Primeira Forma Normal (1FN), Segunda Forma Banca: FCC Instituio: TRT 18a Regio Cargo: Analista Judicirio - Tecnologia da Informao Ano: 2008 Questo: 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, endereo-cli) II ITEM (num-ped, cod-produto, qtde-prod, preo-total) III PRODUTO (cod-produto, nome-prod, preo-unitrio) 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.

Normal (2FN), Terceira Forma Normal (3FN),

Soluo:
Como este assunto muito cobrado nos concursos em geral, vamos explorar diversos conceitos importantes para se resolver esta questo com conana.

superchave:

um conjunto de um ou mais atributos que permite a identicao unPor exemplo,

voca de cada entidade em um conjunto de entidades. Na nomenclatura desta questo, uma superchave identica de forma nica cada linha de uma tabela. na relao (conceito que o enunciado deveria utilizar no lugar de tabela) ITEM, o conjunto {num-ped; preo-total} uma superchave, pois ele pode identicar de forma nica cada item dessa relao. importante perceber que toda relao tem pelo menos uma 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 uma superchave e ela continuar sendo uma superchave, a superchave inicial no uma chave candidata. Por exemplo, quando tiramos o atributo preo-total da superchave {numped; preo-total}, continuamos com uma superchave num-ped, pois num-ped identica univocamente cada elemento da relao ITEM. Portanto, {num-ped; preo-total} no uma chave candidata. Outra forma de entender o signicado de chave candidata pensar que ela um subconjunto mnimo de atributos capaz de identicar de forma nica cada item de uma relao. No se esquea que um relao pode ter mais de uma chave candidata;

chave primaria:

simplesmente uma das chaves candidatas de uma relao.

projetista que faz essa escolha, quando h mais de uma chave candidata;

dependncia funcional:

se para cada valor de um atributo A, existe exatamente um

valor para o atributo B, dizemos que B dependente funcional de A (A

B) e que

A o determinante de B. Um bom exemplo formado pelos atributos CIDADE A e ESTADO B. Como toda cidade implica em somente um estado, temos que A

B;

Pgina 72 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

dependncia funcional parcial:

em uma dependncia do tipo A

B, se existir um

subconjunto de A tal que ele determine B, dizemos que B dependente funcional parcial de A. Exemplo: em {CIDADE; BAIRRO}

ESTADO, como CIDADE

ESTADO,

dizemos que ESTADO dependente funcional parcial de {CIDADE; BAIRRO}. Caso no exista esse tipo de subconjunto de A, dizemos que B dependente funcional total de A;

dependncia funcional trivial:


{agencia}

indica que um determinante com mais de um atri-

buto determina seus prprios membros quando isolado. Exemplo: {banco; agencia}

dependncia funcional no-trivial: indica que atributo qualquer {banco; agencia} {cidade}; dependncia funcional transitiva:
pas, ento cidade

um determinante identica outro

se um atributo A determina B e B determina

C, ento, A determina C de forma transitiva. Exemplo: cidade

estado, estado

pas;

atributo primo:

atributo membro de qualquer chave candidata (pelo menos uma).

Dois exemplos dentro desta questo so: cod-produto e num-ped. Perceba que todos os atributos de uma chave primria so primos;

atributo no-primo:
no-primo;

atributo que no ocorre em nenhuma chave candidata de uma

relao. O atributo preo-unitrio da relao PRODUTO um exemplo de atributo

1FN:

ela diz respeito a atributos. Para que uma relao esteja na 1FN, ela no pode

ter nem atributos multivalorados nem relaes aninhadas (objetos representados em mais de um registro);

2FN:

ela diz respeito a dependncia funcional parcial. Uma relao somente est na

2FN se no houver atributo no-primo dependente funcional parcial de qualquer chave candidata. Ou seja, se houver pelo menos um atributo no-primo dependente funcional parcial de pelo menos uma chave candidata, a relao no estar na 2FN. Lembrando tambm que para uma relao estar na 2FN, ela tambm deve estar na 1FN;

3FN:

ela diz respeito a dependncia funcional transitiva. Para que uma relao esteja

na 3FN, ela no pode ter atributo no-primo dependente transitivamente de qualquer chave candidata. Ou seja, se houver pelo menos um atributo no-primo com dependncia funcional transitiva de pelo menos uma chave candidata, a relao no estar na 3FN. Uma consequncia que para uma relao estar na 3FN, todos os atributos no-primo devem depender somente de atributos primos. Lembrando tambm que para uma relao estar na 3FN, ela tambm deve estar na 2FN e na 1FN; As dependncia funcional de uma relao so determinadas pelo negcio, e no pelo o banco de dados em si. Por isso, o ideal seria o enunciado trazer quais so as dependncias funcionais existentes em cada relao. Na falta dessa especicao, o que nos resta apelar para o bom-senso. Vamos analisar agora cada relao. Como o enunciado no menciona que algum atributo pode ser multivalorado, conclumos que as 3 relaes esto na 1FN. PEDIDO (num-ped, data-ped, total-ped, cod-cliente, nome-cli, endereo-cli) Como no h nenhuma chave candidata composta por mais de um atributo nesta relao, no h como existir dependncia funcional parcial. Portando, esta relao est na 2FN. Perceba que cod-cliente

nome-cli e que esses dois atributos so no-primos. Isso j basta

Pgina 73 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

para concluirmos que esta relao NO est na 3FN. ITEM (num-ped, cod-produto, qtde-prod, preo-total) Nesta relao, h dois atributos no-primos (qtde-prod e preo-total) e uma chave candidata {num-ped; cod-produto}. Veja que (1) num-ped no determina nem qtde-prod nem preo-total; (2) cod-produto no determina nem qtde-prod nem preo-total. Portanto, no h dependncia funcional parcial e, por consequncia, esta relao est na 2FN. Como no h dependncia funcional transitiva, esta relao est na 3FN. PRODUTO (cod-produto, nome-prod, preo-unitrio) Pelo mesmo motivo da relao PEDIDO, conclumos tambm que esta relao est na 2FN. Como s h um atributo no-primo, no h como existir dependncia funcional transitiva. Conclumos, portanto, que esta relao tambm est na 3FN. Pelo o exposto, possvel identicar facilmente que a alternativa correta a letra e.

Pgina 74 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

31.

Assuntos relacionados: Banco de Dados, Consulta SQL, Banca: CESGRANRIO Instituio: BNDES Cargo: Analista de Suporte Ano: 2008 Questo: 60
As relaes abaixo compem uma base de dados em que atributos sublinhados so identicadores e atributos em itlico so chaves estrangeiras. Autor (CPFAutor, Nome, DataNascimento) Obra (TituloObra, DataConclusao, Publicacao (TituloObra,

CPFAutor, CodigoAssunto )
DataLancamento )

Editora (CNPJEditora, Nome, Local)

CNPJEditora ,

Assunto (CodigoAssunto, Descricao) Que comando SQL apresenta como resultado a quantidade de publicaes do assunto `Policial' por editora? (a). Select P.CNPJEditora, count(P.TituloObra) from Publicacao P inner join Obra O on P.TituloObra = Obra.TituloObra inner join Assunto A on O.CodigoAssunto = A.CodigoAssunto where A.Descricao = `Policial' (b). Select P.CNPJEditora, count(P.TituloObra) from Publicacao P, Obra O, Assunto A where P.TituloObra = O.TituloObra and O.CodigoAssunto = A.CodigoAssunto and A.Descricao = `Policial' group by P.CNPJEditora (c). Select P.CNPJEditora, count(P.TituloObra) from Publicacao P, Obra O, Assunto A, Editora E group by P.CNPJEditora having A.Descricao = `Policial' (d). Select P.CNPJEditora, sum(P.TituloObra) from Publicacao P inner join Obra O on P.TituloObra = Obra.TituloObra inner join Assunto A on O.CodigoAssunto = A.CodigoAssunto where A.Descricao = `Policial' group by P.CNPJEditora (e). Select P.CNPJEditora, count(P.TituloObra) from Publicacao P left outer join Obra O on P.TituloObra = Obra.TituloObra left outer join Assunto A on O.CodigoAssunto = A.CodigoAssunto group by P.CNPJEditora

Soluo:
Para encontrarmos o resultado da quantidade de publicaes do assunto Policial por editora, devemos ter em mente que precisamos utilizar a funo de agrupamento groupby para

Pgina 75 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

agrupar as editoras com mesmo CNPJ, e a funo agregada count para contabilizar o nmero de registros de um determinado CNPJ. (A) ERRADA Inner join uma operao de composio de relaes condicionais e usada na clusula from. Sua sintaxe relacao1 inner join relacao2 on condio. O select em questo explora as relaes de chave estrangeira entre os relacionamentos, e a execuo dos dois inner join produzem um relacionamento de onde possvel extrair os CNPJs cujos valores do atributo Descricao de Assunto so Policial. CNPJ. Portanto, esta alternativa errada. (B) CORRETA Os predicados da clusula where do select em questo produzem a mesma relao obtida na alternativa A. Com uma diferena, ao obter os registros que contm a Descricao de Assunto igual a Policial, agrupa-se as editoras de mesmo CNPJ para contabilizar a quantidade de editoras para cada CNPJ por meio da funo count no select. Portanto, esta a alternativa correta. Vale destacar que na clusula where as operaes de = exploram os relacionamentos entre as relaes existentes. Ento, quando selecionamos os registros com Descricao igual a Policial, as operaes de = garantem que estamos selecionando registros com mesmo TituloObra e CodigoAssunto. (C) ERRADA O candidato desatento tende a marcar esta alternativa, pois se esquece dos relacionamentos existentes entre as relaes. O select desta alternativa agruparia atributos CNPJEditora O mesmo da relao Publicacao diferentes do atributo CNPJEditora da relao Editora. no a correta. (D) ERRADA O select desta alternativa utiliza a funo sum para contabilizar a quantidade de um determinado CNPJ. Primeiramente, a funo correta para essa nalidade a count, e segundo, a funo sum aceita como entrada um conjunto de nmeros. Nesse select, a funo sum recebe o parmetro P.TituloObra, que no um nmero. Portanto, esta alternativa errada. (E) ERRADA O select desta alternativa no possui uma clusula where que restringe o atributo Descrio da relao Assunto palavra Policial. Portanto, esta alternativa tambm no a correta. O problema desse select que ele no agrupa os registros para contabilizar a quantidade de um determinado

vlido para os atributos de TituloObra de Obra e Publicacao. Portanto, esta alternativa

Pgina 76 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

32.

Assuntos relacionados: Banco de Dados, SQL, Banca: CESGRANRIO Instituio: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questo: 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 mdia de preo de produtos vendidos a clientes da cidade com valores acima de 100, se a mdia for menor que 200. (b). Para cada cidade, a mdia de preo dos produtos vendidos a clientes da cidade com 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 mdia de preo dos produtos vendidos a clientes da cidade que compraram produtos de valores maiores do que 100 e cuja mdia de compra menor do que 200. (e). Apenas a cidade cuja mdia de preo dos produtos vendidos a mais alta dentre as que tiveram mdia menor do que 200 e produtos vendidos com valores acima de 100.

Soluo:
A primeira clusula WHERE

(C.CODIGO_C = V.CODIGO_C)

ir implementar uma

juno entre as tabelas CLIENTE e VENDA. Essa juno, caso fosse considerada sozinha, iria listar registros em que cada um iria representar uma venda de produto, mas com informaes adicionais do cliente: NOME e CIDADE. Adicionando mais uma clusula de juno

(P.CODIGO_P = V.CODIGO_P ),

ser re-

alizada uma juno com a relao j obtida anteriormente. Nesse caso, todos os produtos vendidos sero listados com suas respectivas informaes de descrio, preo, data de quando foi realizada a venda e as informaes completas do cliente. Entretanto, ao se usar a clusula

P.P RECO > 100,

nem todos os produtos vendidos sero

listados. Sero listados somente aqueles cujo valor preo unitrio for superior a 100. A clusula GROUP BY reunir informaes, de

C.CIDADE ir agrupar as vendas dos produtos por cidade e acordo com AV G(P.P RECO), do preo mdio unitrio de cada

produto, dentro, claro, dos produtos que j possuem valor unitrio maior do que 100. Exemplicando: caso os clientes de uma determinada cidade X tenham comprado exatamente 6 produtos com os preos 1000, 500, 120, 120, 100 e 50, somente sero considerados os produtos com valor maior do que 100, que so os de 1000, 500, 120 e 120. A mdia

Pgina 77 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

unitria desses produtos

(1000 + 500 + 120 + 120)/4 = 435. AV G(P.P RECO) < 200 ir permitir que somente as cidades

J a ltima clusula HAVING

cujo preo mdio dos produtos adquiridos seja menor que 200. A cidade X anteriormente citada no ir entrar na relao nal, j que a mdia dos preos unitrios de seus produtos adquiridos 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 mdia do preo do produto HAVING

AV G(P.P RECO) < 200

e no a mdia de compra.

Pgina 78 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

33.

Assuntos relacionados: Banco de Dados, SQL, Banca: FCC Instituio: MPU Cargo: Analista de Desenvolvimento de Sistemas Ano: 2007 Questo: 64
Funes de um banco de dados relacional que operam contra uma coleo de valores, mas retornam um nico valor, so (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.

Soluo:
Um banco de dados relacional usa um conjunto de tabelas para representar tanto os dados como as relaes entre eles. As consultas em um sistema de banco de dados, tipicamente, so realizadas segundo a linguagem SQL (Structured Query Language  Linguagem de Consulta estruturada), que possui diversas partes, sendo que as principais so a:

Linguagem de denio de dados (DDL). A DDL proporciona comandos para a denio de esquemas de relaes, excluso de relaes, criaes de ndices e modicao nos esquemas das relaes;

Linguagem interativa de manipulao de dados (DML). A DML engloba comandos para insero, excluso e modicao de registros no banco de dados.

A estrutura bsica de uma expresso em SQL formada por trs clusulas: e

where.

A clusula

das consultas. A clusula forma:

select utilizada from associa

select, from where

para relacionar atributos desejados nos resultados as relaes que sero pesquisadas, e clusula

consiste em um predicado (expresso booleana). Tipicamente, uma consulta tem a seguinte

select a1, a2 from r1, r2 where p


Onde a1 e a2 representam os atributos a serem mostrados no resultado da consulta, r1 e r2 as relaes (tabelas) do banco e p o predicado. As funes escalares so funes que retornam um nico valor como resultado, baseado sobre um valor de entrada. Esto relacionadas manipulao de strings, de nmeros, de data, funes do sistema e funes de converso de tipos de dados. string para minsculo) e LEN (retorna o tamanho da string). As funes agregadas so funes que tem como entrada um conjunto de valores (valores Alguns exemplos de funes escalares: UCASE (converte uma string para maisculo), LCASE (converte uma

Pgina 79 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

de uma coluna de uma tabela), e retornam um valor simples. Algumas funes agregadas: AVG (average  mdia), MIN (minimum  minmo), MAX (maximum  mximo), SUM (total - total) e COUNT (contagem). (A) A funo MAX uma funo agregada da linguagem SQL. Portanto, alternativa correta. (B) A funo COUNT tambm uma funo agregada. lizada para contar o nmero de registros de uma tabela. funo COUNT com a clusula A funo COUNT muito utiA SQL no permite utilizar a

distinct.
A entrada para SUM e para AVG

(C) A funo SUM tambm uma funo agregada. pos de dados no-numricos (como strings).

precisa ser um conjunto de nmeros, mas as outras funes agregadas aceitam tambm ti-

(D) A funo MID uma funo escalar que extrai caracteres de uma string. (E) A funo LEFT uma funo escalar que retorna os caracteres mais a esquerda de uma string de acordo com a quantidade especicada.

Pgina 80 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

34.

Assuntos relacionados: Banco de Dados, SQL, Banca: FCC Instituio: TCE/CE Cargo: Analista de Controle Externo - Auditoria de Tecnologia da Informao Ano: 2008 Questo: 75
Considere o seguinte requisito: Para cada departamento com menos de 1000 funcionrios devem ser listados os salrios mdios de cada departamento. As clusulas SQL-ANSI vinculadas a uma nica expresso SELECT, uma que calcula o salrio mdio e a outra que restringe a quantidade de empregados so, respectivamente, (a). MID e COUNT. (b). AVG e COUNT. (c). AVG e HAVING. (d). MID e WHERE. (e). MID e HAVING.

Soluo:
No SQL-ANSI, a funo que calcula a mdia de um conjunto de valores a AVG (que vem de average, que em ingls signica mdia). Portanto, essa j uma pista de que a resposta s pode ser a alternativa B ou C. A funo COUNT, que aparece na alternativa B, utilizada para fazer uma contagem simples da quantidade de elementos retornados em uma consulta SQL. Portanto, por eliminao, j seria possvel chegar a resposta da questo, que a alternativa C. No entanto, ela ser necessria a consulta para contar o nmero de empregados por departamento. A clusula HAVING, assim como a clusula WHERE, utilizada para restringir os resultados das consultas SQL. No entanto, o HAVING s utilizado em consultas que retornam resultados agrupados pela clusula GROUP BY. Pensemos no que poderia ser um modelo de dados para o caso ilustrado na questo:

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 salrio mdio dos departamentos com menos de 1000 funcionrios seria:

SELECT D.DPTO_NOME, AVG(F.FUNC_SALARIO) AS SALARIO_MEDIO // Calcula mdia salarial FROM FUNCIONARIOS F, DEPARTAMENTOS_FUNCIONARIOS DF, DEPARTAMENTOS D, ( SELECT DPTO_ID, COUNT(FUNC_ID) AS FUNCS_POR_DPTO // Contagem de funcionrios

Pgina 81 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes 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 mdia salarial por departamento

Pgina 82 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

35.

Assuntos relacionados: Banco de Dados, Consulta SQL, Operaes de Composio de


Relaes, Banca: Cesgranrio Instituio: BNDES Cargo: Analista de Sistemas - Desenvolvimento Ano: 2008 Questo: 42
Observe as seguintes tabelas de um sistema: Pessoa (nomePessoa, endereo) Filme (nomeFilme, estdio, verba) Trabalha (nomePessoa(FK), nomeFilme(FK), atividade, salrio) Um administrador de dados deseja fazer o seguinte relatrio: Todas as pessoas, os lmes nos quais j trabalharam e o total recebido por cada lme. Se uma pessoa nunca trabalhou num lme, ela deve aparecer no relatrio. A atividade que a pessoa exerceu no lme (ex: ator, diretor, cmera etc.) no importante para o relatrio. Qual consulta retorna o conjunto resposta correto? (a).

SELECT P.nomePessoa, T.nomeFilme, sum(T.salrio) total FROM Pessoa P LEFT OUTER JOIN Trabalha T ON P.nomePessoa = T.nomePessoa GROUP BY P.nomePessoa, T.nomeFilme SELECT T.nomePessoa, T.nomeFilme, sum(T.salrio) total FROM Pessoa P INNER JOIN Trabalha T ON P.nomePessoa = T.nomePessoa GROUP BY T.nomePessoa, T.nomeFilme SELECT P.nomePessoa, T.nomeFilme, sum(T.salrio) total FROM Pessoa P LEFT OUTER JOIN Trabalha T ON P.nomePessoa = T.nomePessoa GROUP BY P.nomePessoa, T.nomeFilme HAVING sum(T.salrio) > 0 SELECT P.nomePessoa, F.nomeFilme, sum(T.salrio) 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.salrio > 0 GROUP BY P.nomePessoa, F.nomeFilme SELECT T.nomePessoa, T.nomeFilme, sum(T.salrio) total FROM Pessoa P LEFT OUTER JOIN Trabalha T ON P.nomePessoa = T.nomePessoa LEFT OUTER JOIN Filme F

(b).

(c).

(d).

(e).

Pgina 83 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

ON F.nomeFilme = T.nomeFilme

Soluo:
Esta questo tenta explorar o conhecimento do candidato em relao s operaes INNER JOIN e LEFT OUTER JOIN devido restrio se uma pessoa nunca trabalhou num lme, ela deve aparecer no relatrio. A operao INNER JOIN usada tipicamente na clusula FROM para composio de relaes. Sua sintaxe <tabela (tabela

A>

INNER JOIN <tabela

B>

ON <condio desejada>.

A operao INNER JOIN cria uma nova tabela, combinando os valores das duas tabelas INNER JOIN compara cada linha da tabela

A e tabela B ) com base na condio desejada de juno das tabelas. A consulta com A com cada linha da tabela B para encontrar A
e

todos os pares de linhas que satisfazem a condio desejada. Quando a condio desejada satisfeita, valores da coluna para cada par de linha encontrado das tabelas

so

combinados em uma linha da nova tabela. Note que, a operao INNER JOIN retorna as linhas das tabelas somente quando a condio desejada satisfeita, isto , se na tabela da operao INNER JOIN. Como na operao INNER JOIN, a operao LEFT OUTER JOIN tambm usada tipicamente na clusula FROM para composio de relaes. LEFT OUTER JOIN <tabela Sua sintaxe <tabela

existe uma linha que no satisfaz a condio desejada, esta linha no aparece no resultado

A>

B>

ON <condio desejada>.

O LEFT OUTER JOIN

processado conforme mostrado anteriormente para o INNER JOIN. Entretanto, o LEFT OUTER JOIN retorna todas as linhas da tabela da esquerda (tabela

A),

mesmo se a condi-

o desejada no 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 linhas da tabela da direita que satisfazem a condio desejada ou, nulo caso no satisfaa. Se a tabela da esquerda retorna uma linha e a tabela da direita retornar mais que uma linha para a condio desejada, a linha da tabela esquerda ser repetida para cada linha encontrada da tabela da direita. Existem outras operaes relacionadas clusula JOIN, como:

EQUI-JOIN - mesma funcionalidade do operador INNER JOIN, mas aceita somente comparao de igualdade na condio desejada NATURAL JOIN - uma especializao da operao EQUI-JOIN, porm a condio desejada est implcita na operao. Por exemplo,

TURAL JOIN department

ciadas.

SELECT * FROM employee NA-

CROSS JOIN - retorna o produto cartesiano do conjunto de linhas das tabelas asso equivalente operao INNER JOIN, onde a condio desejada sempre verdadeira

RIGHT OUTER JOIN - retorna todas as linhas da tabela da direita, mesmo se a condio desejada no encontra nenhuma linha correspondente na tabela da esquerda FULL OUTER JOIN uma combinao dos tipos das operaes LEFT OUTER JOIN e RIGHT INNER JOIN, isto , ao resultado nal so adicionadas as linhas da tabela esquerda que no correspondem a nenhuma linha da tabela direita, e similarmente para as linhas da tabela da direita

Conforme explicado anteriormente, para a nossa consulta retorna o conjunto de resposta correto, devemos utilizar a operao LEFT OUTER JOIN para satisfazer a restrio se uma

Pgina 84 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

pessoa nunca trabalhou num lme, ela deve aparecer no relatrio, pois existe a possibilidade uma pessoa nunca ter trabalho em um lme. Ento, a operao LEFT OUTER JOIN deve ser entre as tabelas

P essoa

T rabalha,

onde a tabela

a consulta SQL deve conter a seguinte trecho:

ON P.nomePessoa = T.nomePessoa.
(A) CORRETA

P essoa a tabela esquerda, isto , Pessoa P LEFT OUTER JOIN Trabalha T

A seguir, analisamos as alternativas desta questo:

Esta consulta retorna o conjunto de resposta correto, pois faz uso da operao LEFT OUTER JOIN entre as tabelas

P essoa

T rabalha

na clusula FROM, sendo que a tabela Alm

P essoa
e

est do lado esquerdo da operao, satisfazendo a restrio do enunciado.

disso, esta consulta utiliza a clusula GROUP BY para formar grupos de

P.nomeP essoa

T.nomeP essoa.

Isso utilizado para somar os salrios das pessoas que trabalharam nos

lmes na clusula SELECT (sum(T.salrio) ). E, por m, esta consulta exibe o resultado na clusula SELECT

P.nomePessoa, T.nomeFilme, sum(T.salrio) total

como o enunciado

solicitou. Portanto, alternativa correta. (B) ERRADA Esta consulta no retorna o conjunto de resposta correto, pois faz uso da operao INNER JOIN na clusula FROM, conforme explicado anteriormente. Ento, alternativa errada. (C) ERRADA Esta consulta semelhante consulta da alternativa (A), com a diferena do uso da clusula HAVING com a condio

sum(T.salrio) > 0.

A utilizao desta condio na consulta, no

satisfaz a restrio imposta pelo enunciado (se uma pessoa nunca trabalhou num lme, ela deve aparecer no relatrio), pois o resultado nal no conter as pessoas que nunca trabalharam em um lme. Portanto, alternativa errada. (D) ERRADA Esta consulta no retorna o conjunto de resposta correto, pois faz uso da operao INNER JOIN na clusula FROM, conforme explicado anteriormente. Ento, alternativa errada. (E) ERRADA Esta consulta faz uso duas vezes da operao LEFT OUTER JOIN. Uma nova tabela (tabela

A) produzida pela operao 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 operao tabela A LEFT OUTER JOIN Filme F ON F.nomeFilme = T.nomeFilme. Observe que esta ltima operao desnecessria, pois com a primeira operao possvel gerar o conjunto resposta correto. A alternativa est errada, pois no utiliza a clusula GROUP BY para formar grupos

P.nomeP essoa

T.nomeP essoa

para somar os

salrios das pessoas que trabalharam nos lmes na clusula SELECT (sum(T.salrio) ).

Pgina 85 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

36.

Assuntos relacionados: Banco de Dados, SQL, JOIN, HAVING, Banca: Cesgranrio Instituio: BNDES Cargo: Analista de Sistemas - Desenvolvimento Ano: 2008 Questo: 49
Seja o seguinte grupo de tabelas de um sistema: fabricante (idfabricante, nome, endereo) pea (idmodelo, nome, descrio) constri (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 peas construdas na cor vermelha, desde que, em cada data, a quantidade construda seja maior que 10; o relatrio estar ordenado de forma descendente pela quantidade de peas construdas. (b). Os nomes dos fabricantes que j construram mais de 10 modelos diferentes de peas na cor vermelha e a quantidade de modelos diferentes, mostrando a lista ordenada de forma descendente pela quantidade. (c). Os nomes dos fabricantes que j construram pelo menos uma pea na cor vermelha; o relatrio estar ordenado de forma descendente na quantidade de modelos diferentes construdos. (d). Todos os nomes dos fabricantes e a respectiva quantidade de modelos diferentes de peas vermelhas que j construram; se um fabricante nunca construiu uma pea na cor vermelha, a contagem mostrar zero. (e). Todos os nomes dos fabricantes e a respectiva quantidade de modelos diferentes construdos, no importando a quantidade de peas, cor ou a data da construo; o relatrio estar ordenado de forma descendente na quantidade de peas.

Soluo:
Para resolver esta questo, necessrio conhecer os conceitos de chave primria, chave estrangeira e, por m, entender o que os principais comandos SQL fazem e o resultado deles sobre os dados manipulados de uma ou mais tabelas. Por ser mais essencial, vamos comear entendendo o que so chave primria e estrangeira. Tabelas so colees de dados que possuem identidade entre si pela semntica. Isso signica

Pgina 86 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

que as linhas (ou tuplas) de uma tabela referem-se a coisas que guardam semelhana entre si. Entretanto, apesar das semelhanas, cada tupla nica e deve ser assim, para que os dados armazenados faam sentido aplicao e ao usurio. Para garantir essa unicidade, foi desenvolvido o conceito de chave primria nos bancos de dados. A chave primria pode ser composta por um ou mais campos da tabela. O SGBD (Sistema Gerenciador de Banco de Dados) ir garantir que haver

apenas uma tupla

com uma determinada combinao

dos campos que compe a chave primria. Ilustrando como exemplo, podemos supor uma tabela que armazene os produtos de uma mercearia. A tabela, poderia ser: produto (nome, quantidade, precoUnitario) O campo nome foi utilizado como chave primria. mria. Sabemos disso, pois, por conveno,

os campos de uma tabela que aparecem sublinhados so os considerados como chave priNesse exemplo, o SGBD, ao tratar as operaes de insero permitiria que cada produto aparecesse uma vez na tabela. Isso quer dizer que, se por descuido, o usurio j tivesse cadastrado o produto 'banana' e tentasse cadastrar novamente 'banana' o sistema receberia um erro por chave duplicada. Repare que isso extremamente til. Na hora de fazer a contabilidade e de gerar relatrios de reposio de estoque, 'banana' um nico produto da mercearia e no queremos que ela aparea repetidamente. Para entender o conceito de chave estrangeira, podemos utilizar o exemplo da mercearia tambm. Sabemos que, alm do cadastro do estoque, o comerciante precisa manter o histrico de suas vendas, de modo que possa atualizar sua contabilidade e prestar contas ao governo. Para tal, podemos supor que o desenvolvedor do aplicativo de controle comercial tenha criado uma tabela que ir registrar todas as vendas feitas. tabelas: venda (idVenda, data) itemVenda (idVenda (FK), nomeProduto (FK), quantidade) Veja que a tabela venda possui tambm um campo de chave primria. Como vendas no possuem nomes, podemos imaginar que esse campo pode ser numrico e sequencial, de modo a impedir que vendas sejam sobrescritas. A tabela itemVenda criada por um motivo muito simples: repare que cada venda poder ter mais de um item nela; o fregus pode levar, na mesma compra, 6 bananas e 3 mas. Se no tivssemos a tabela itemVenda, para cada produto vendido teramos que, alm de armazenar o identicador da venda, armazenar tambm a data dela. Isso causaria uma repetio de valores indesejada, aumentando desnecessariamente o tamanho do banco, alm de prejudicar a velocidade de processamento de algumas consultas sobre ele. Repare que a tabela itemVenda possui uma chave primria composta de 2 campos: Venda e nomeProduto. Ambas aparecem com um (FK) aps seu nome. esses campos so chaves estrangeiras importadas de outras tabelas. idPara isso, ele criar as

Isso indica que

no caso de idVenda,

ela importada da tabela venda, do campo de mesmo nome; nomeProduto vem da tabela produto, do campo 'nome'. O controle realizado pelo SGBD sobre chaves estrangeiras visa a garantir a

integridade referencial

entre os diversos dados armazenados no banco de da-

dos. No caso de nosso exemplo, a existncia das chaves estrangeiras na tabela itemVenda pretende garantir que s existam itens de venda para vendas que realmente existam e que

Pgina 87 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

os produtos das vendas estejam cadastrados antes de serem vendidos. (Alm desse controle, h tambm outros sobre a excluso de itens em cascata, onde, por exemplo, a remoo de um produto

poderia desencadear a deleo dos itens de venda cadastrados para ele).

A chave primria composta, conforme o exemplo da tabela itemVenda tem a seguinte semntica: para cada item de venda cadastrado na tabela itemVenda s poder existir uma nica referncia a um produto para cada venda distinta. Em outras palavras, na venda de nmero '10' poder aparecer apenas uma vez o item 'banana'. Veja que isso no limita a compra do cliente a apenas uma banana, pois o campo 'quantidade' permite que vrias bananas sejam vendidas para o cliente. A diferena estar apenas no armazenamento dessa informao no sistema, pois o item banana aparecer apenas uma vez, com a quantidade comprada registrada no campo especco para isso. Fica claro que essa medida evita que vrias linhas para o mesmo produto sejam repetidas para expressar a mesma compra. Utilizando esse artifcio, economiza-se muito espao, alm de se aumentar tambm a velocidade das consultas, visto que, em qualquer hiptese, uma quantidade maior de linhas em uma tabela resultar, impreterivelmente, em maior tempo de consulta. (Este tipo de preocupao com otimizao de tempos de consulta e quantidade de armazenamento deu origem ao estudo das formas normais. Complemente seu aprendizado buscando por essa informao). Com essas informaes, passamos a entender a estrutura das tabelas apresentadas: fabricante (idfabricante, nome, endereo)

Cada fabricante cadastrado ser identicado pelo seu id (idFabricante) respectivo.

pea (idmodelo, nome, descrio)

Cada pea cadastrada ser identicada pelo seu id (idModelo) respectivo.

constri (idmodelo (FK), idfabricante (FK), data, quantidade, cor)

Cada linha da tabela constri ter a quantidade e a cor de uma nica pea fabricada por um fabricante especco em uma determinada data. Alm disso, em uma determinada data, um fabricante s produzir uma determinada pea em uma nica cor.

Com essas denies, podemos passar segunda parte da questo que envolve entender os comandos SQL. Nessa questo so utilizados os seguintes comandos:

exibir; FROM: indica as tabelas que fazem parte da consulta em questo; INNER JOIN: esse comando, sempre que aparecer, estar entre duas
deseja aps o comando no campo

SELECT:

indica quais os campos das tabelas que so listadas no comando

FROM

se

tabelas e logo

FROM. Ele um indicador que informa que os dados da tabela anterior ON

a ele sero cruzados com os dados da tabela posterior, utilizando a comparao descrita

ON. Este comando um caso especco do comando JOIN. O prexo INNER


devero ser

indica que apenas os registros que casarem na comparao do campo retornados;

WHERE: dene os ltros que devero ser aplicados na consulta.

De todos os registros

resultantes da juno das tabelas envolvidas na consulta, apenas aqueles que atenderem s restries descritas aqui devero ser considerados para o resultado;

GROUP BY: o resultado da consulta ser agrupado pelo(s) campo(s) indicados neste
comando. Este comando utilizado em conjunto com funes de agregao, que, de

Pgina 88 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

modo geral, geram estatsticas sobre outros campos que no os listados aqui. No caso de nosso exemplo, deseja-se contar os modelos diferentes resultantes da consulta agrupados pelo nome do fabricante;

HAVING:

esta outra clusula de restrio ao resultado da consulta. Aqui, pode-se

denir parmetros para os campos

HAVING

WHERE

agregados.

A diferena primordial entre a clusula

que os ltros descritos na segunda so aplicados no clculo da

consulta enquanto que os da primeira so aplicados apenas ao resultado pronto. De um modo geral, ltros colocados em aqueles denidos em

HAVING ;

WHERE

geram consultas mais rpidas do que

ORDER BY:

os campos aqui descritos sero utilizados como parmetro de ordePor padro, os campos so ordenados seguindo em

nao do resultado da consulta.

que aparecem. Assim, o SGBD ordena o resultados sobre o primeiro campo, depois, considerando essa primeira ordem, sobre o segundo e assim por diante. A ordenao pode ser ascendente - do menor para o maior - utilizando o suxo ASC aps o campo em questo, ou descendente - utilizando o suxo DESC. Por padro, a ordenao ascendente em todos os campos listados. Vistos os comandos utilizados, basta agora que analisemos a consulta em questo combinandoa com as informaes que so armazenadas nas tabelas de acordo com o estudo das chaves. Vejamos a Figura 6.

Figura 6: clusulas SQL e suas interpretaes. Portanto, a resposta da questo a letra (B).

Pgina 89 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

37.

Assuntos relacionados: Banco de Dados, SQL, Consulta SQL, Banca: Cesgranrio Instituio: IBGE Cargo: Analista de Sistemas - Suporte Ano: 2010 Questo: 45
Considere uma tabela em um banco de dados relacional. A tabela apresenta trs atributos do tipo texto, sendo CPF o campo chave.

Cliente(CPF, Nome, Endereco)


Considerando-se que homnimos so pessoas que possuem o mesmo nome, mas CPF diferentes, a expresso SQL que resulta na lista dos Clientes que tm homnimos, juntamente com o nmero de homnimos, : (a).

SELECT DISTINCT C1.Nome, C1.CPF, COUNT(C2) FROM Cliente C1, Cliente C2 WHERE C1.Nome = C2.Nome AND C1.CPF <> C2.CPF SELECT Nome, CPF, (SELECT COUNT(*) FROM Cliente C1 WHERE C.Nome = C1.Nome AND C.CPF <> C1.CPF) FROM Cliente C SELECT Nome, CPF, COUNT(Cliente) FROM Cliente GROUP BY Nome, CPF HAVING COUNT(*) > 1 SELECT TOP 1 C1.Nome, C1.CPF, COUNT(*) FROM Cliente C1, Cliente C2 WHERE C1.Nome = C2.Nome AND C1.CPF <> C2.CPF 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

(b).

(c).

(d).

(e).

Soluo:
A resposta da questo alternativa E. Para compreend-la, vamos analisar cada uma das partes da consulta mostrada na alternativa. Para facilitar a explicao, abaixo a consulta mostrada novamente, porm com as linhas numeradas.

1 2 3 4 5

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

Pgina 90 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Na linha 1, utilizado o comando SELECT, que indica quais sero as colunas retornadas pela consulta. Foram selecionadas as colunas CPF, NOME. A terceira coluna que ser retornada na consulta a coluna COUNT(*). Na linguagem SQL, o operador COUNT serve para contar a quantidade de ocorrncias de uma determinada combinao de valores das colunas. Na consulta em questo, a expresso COUNT(*) ir retornar a quantidade de vezes que uma determinada combinao dos valores da colunas NOME e CPF se repete no resultado da consulta. Para que o operador COUNT funcione, necessrio ainda que se utilize a clusula GROUP BY, enumerando a combinao de colunas que se deseja agrupar. Na consulta em questo, essa exigncia cumprida na linha 4. J na linha 2, temos a clusula FROM, que utilizada para enumerar as tabelas que sero necessrias para a execuo da consulta. Como deseja-se descobrir os clientes homnimos, necessrio que se compare o nome de um cliente com o nome dos demais. Portanto, na clusula FROM o programador teve que trabalhar com duas tabelas CLIENTE. Em outras palavras, 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 adicionar algumas restries. Na primeira delas (C1.CPF <> C2.CPF), o programador garante que o nome de um dado cliente (que identicado unicamente pelo CPF) s ser comparado com o nome dos demais, e no com seu prprio nome. J na segunda restrio (C1.Nome = C2.Nome), o programador verica se os clientes possuem o mesmo nome. Na linha 5 o programador faz uso da clusula HAVING, que tem como funo restringir os resultados em consultas que faam uso de operadores de agregao, como SUM, COUNT, MEDIA, DEVPAD, entre outros. Na consulta em questo, a expresso utilizada foi HAVING count(*) > 0, que garante que a consulta s retornar combinaes de NOME e CPF que possuam no mnimo 1 ocorrncia. Ou seja, s retornar clientes que possuam no mnimo 1 homnimo. Por m, vale ressaltar que a consulta retornar um registro para cada cliente que possuir um homnimo, contendo o CPF do cliente, o seu nome, e a quantidade de homnimos associada. Um exemplo do resultado que poderia ser retornado pela consulta segue abaixo:

JOSE DA JOSE DA JOSE DA MICHAEL MICHAEL ALEX DA ALEX DA ALEX DA ALEX DA

SILVA SILVA SILVA PAULO PAULO COSTA COSTA COSTA COSTA

03556236920 23698563222 78946123362 45632152875 78542635985 45896325644 45823666999 45236698888 78542666666

2 2 2 1 1 3 3 3 3

Pgina 91 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

38.

Assuntos relacionados: Banco de Dados, SQL, Banca: ESAF Instituio: Agncia Nacional de guas (ANA) Cargo: Analista Administrativo - Tecnologia da Informao e Comunicao / Desenvolvimento de Sistemas e Administrao de Banco de Dados Ano: 2009 Questo: 23

Em SQL, a clusula check aplicada a uma declarao de domnio (a). permite especicar um predicado que deve ser satisfeito por qualquer valor atribudo a uma varivel de determinado domnio. (b). especica um predicado que deve ser satisfeito por uma tupla em uma relao. (c). probe a insero de um valor nulo para as variveis do domnio. (d). verica se os atributos considerados formam uma chave candidata. (e). no tem efeito, pois no se aplica esta clusula a declaraes de domnio.

Soluo:
Uma tabela em um banco de dados denida por um nome e pelos seus campos (atributos) e restries. 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 domnio (intervalo) de valores para um determinado atributo. Assim, um domnio a coleo de valores permitidos para um atributo. A clusula check na SQL pode ser aplicada a declaraes de domnio. para qualquer valor atribudo a uma varivel cujo tipo o domnio. que um valor especicado (pessoa maior de idade). Quando aplicado Por exemplo, uma

a um domnio, a clusula check permite especicar um predicado que precisa ser satisfeito clusula check pode garantir que um domnio de idade permita apenas valores maiores do

create domain Idade numeric (5,2) constraint teste-valor-idade check (value >= 18)
O domnio Idade possui uma restrio que garante que o atributo idade seja maior ou igual a 18 anos. A clusula constraint teste-valor-idade opcional usada para atribuir o nome Outro exemplo sobre a clusula check: um domnio pode ser restrito teste-valor-idade a restrio. O nome usado pelo sistema para indicar a restrio que uma atualizao violou. para conter apenas um conjunto especicado de valores usando a clusula in:

Pgina 92 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

create domain TipoConta char(10) constrait teste-valor-idade check(value in ('Corrente','Poupana') )


Desse modo, a clusula check permite que atributos e domnios sejam restritos, descrevendo um predicado que deve ser satisfeito por qualquer valor atribudo a uma varivel de domnio. Portanto, a questo correta a letra A.

Pgina 93 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

39.

Data Denition Language (DDL), Data Control Language (DCL), Banca: ESAF Instituio: Controladoria-Geral da Unio (CGU) Cargo: Analista de Finanas e Controle - Tecnologia da Informao / Desenvolvimento de Sistemas de Informao Ano: 2008 Questo: 51
Em um banco de dados que utiliza a linguagem SQL para denio, manipulao e controle de dados, correto armar que os comandos (a). CREATE, DROP e INSERT fazem parte da DML (Linguagem de Manipulao de 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 Denio de Dados). (d). ALTER, DELETE e REVOKE fazem parte da DML (Linguagem de Manipulao de Dados). (e). CREATE, GRANT e DROP fazem parte da DCL (Linguagem de Controle de Dados).

Assuntos relacionados: Banco de Dados, SQL, Data Manipulation Language (DML),

Soluo:
Os Bancos de Dados, em geral, possuem diversos tipos de usurios, desde administradores de bancos de dados (DBAs) at usurios casuais, passando por projetistas de bancos de dados e programadores/analistas de sistemas. Para cada uma desta variedade de usurios, o Sistema de Gerenciamento de Banco de Dados (SGBD) deve proporcionar linguagens e interfaces apropriadas. Em muitos SGBDs onde no h uma clara separao entre os nveis interno e conceitual, uma linguagem chamada Linguagem de Denio de Dados (DDL  Data Denition Language) utilizada pelo DBA e pelos projetistas para denir ambos os esquemas. Em SGBDs onde mantida uma separao clara entre os dois nveis, a DDL utilizada para especicar apenas o esquema conceitual e uma outra linguagem, a Linguagem de Denio de Armazenamento (SDL  Storage Denition Language), utilizada para especicar o esquema interno. Para especicar vises de usurios e seus mapeamentos para o esquema conceitual, a Linguagem de Denio de Viso (VDL  View Denition Language). Entretanto, na maioria dos SGBDs a DDL utilizada para denir tanto o esquema conceitual quanto o esquema externo. Os SGBDs oferecem um conjunto de operaes para manipulao de dados, como pesquisa, insero, excluso e modicao, atravs de uma linguagem conhecido por Linguagem de Manipulao de Dados (DML  Data Manipulation Language). A SQL (Structured Query Language  Linguagem de Consulta Estruturada) representa uma combinao de DDL, VDL e DML, alm de diretivas para especicar restries e outras caractersticas. A SDL foi um componente da SQL em verses antigas, mas foi removida da linguagem para mant-la apenas nos nveis conceitual e externo. Em SQL, a DML composta pelos comandos INSERT, UPDATE e DELETE, que so

Pgina 94 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

utilizados para inserir, atualizar e excluir registros de uma tabela, respectivamente. objetos (tabelas, ndices e vises) do banco de dados.

J a

DDL possui os comandos bsicos CREATE, ALTER e DROP que criam, alteram ou apagam Para alguns autores, os comandos CREATE VIEW e DROP VIEW comporiam a VDL de SQL. Um outro grupo de comandos de SQL serve para controlar aspectos de autorizao de acesso de dados por usurios. Este grupo chamado de DCL (Data Control Language  Linguagem de Controle de Dados) e composto pelas diretivas GRANT e REVOKE. A primeira, autoriza um usurio a executar operaes e a segunda remove ou restringe o acesso. Tem-se ainda a DTL (Data Transaction Language  Linguagem de Transao de Dados) que controla as transaes em SQL e composta por BEGIN WORK, COMMIT e ROLLBACK. A primeira diretiva inicia uma transao e as outras duas nalizam, sendo que COMMIT conclui a execuo dos comandos e ROLLBACK desfaz as operaes executadas. Embora com apenas um nico comando (o comando SELECT), a DQL (Data Query Language  Linguagem de Consulta de Dados) a parte da SQL mais utilizada, permitindo que consultas sejam efetuadas ao banco de dados. Pela teoria exposta, percebe-se que a alternativa b) a nica que apresenta o correto agrupamento de comandos componentes de uma das partes da SQL, sendo a resposta para a questo.

Pgina 95 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

40.

Assuntos relacionados: Banco de Dados, SQL, Triggers, Banca: ESAF Instituio: Receita Federal (RF) Cargo: Tcnico da Receita Federal - Tecnologia da Informao Ano: 2006 Questo: 32
Analise as seguintes armaes relacionadas a Bancos de Dados e linguagem SQL: I. A clusula GROUP BY do comando SELECT utilizada para dividir colunas em conjuntos maiores de dados relacionados entre si. II. Uma view uma forma predeterminada de visualizar dados de uma ou mais tabelas como se fosse apenas uma tabela. III. Quando o comando DROP TABLE executado, as estruturas da tabela e os dados so excludos. Porm, quando o DROP VIEW executado, nenhum dado referenciado pela view afetado. IV. O trigger um tipo de view criado quando um evento em particular ocorre. Indique a opo que contenha todas as armaes verdadeiras. (a). I e II (b). III e IV (c). II e III (d). I e III (e). II e IV

Soluo:
Para esta questo o melhor caminho tratar item por item para chegar na to esperada resposta correta. I.

ERRADA.

A clusula GROUP BY do comando SELECT utilizada para agrupar

LINHAS em conjuntos de dados relacionados entre si. Cada grupo ser formado por linhas que tenham o mesmo valor do atributo denido pela clusula; II.

CORRETA. A view facilita a vida para o usurio sendo que ele pode fazer consultas ou
atualizaes e estas vo reetir nas respectivas tabelas que esto sendo utilizadas. Uma view proporciona mais segurana, ajuda na preveno de erros, melhora a performance e faz com que os dados sejam mais compreensveis para o usurio;

III.

CORRETA. O comando DROP utilizado para eliminar tabelas, esquemas, domnios


ou restries. No caso do DROP TABLE duas opes de comportamento podem ser selecionadas:

 CASCADE:  RESTRICT:

todas as restries e views que referenciam a tabela so eliminadas

juntamente com os dados da tabela e suas estruturas; a tabela ser eliminada somente se ela no for referncia em ne-

nhuma restrio ou view. O comando DROP VIEW elimina a view e, como este tipo de tabela virtual e seus dados so referencia dados existentes em outras tabelas, nenhum contedo ser perdido. Uma view tambm pode ser atualizada e esta atualizao reetida nas tabelas utilizadas na denio da mesma, porm alguns fatores devem ser observados:

Pgina 96 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

   

caso seja for formada a partir de uma nica tabela, ela deve conter a chave primria e todos os outros atributos com restrio NOT NULL que no tenham um valor DEFAULT especicado; normalmente no atualizvel se for formada por diversas tabelas utilizando-se JOIN; no atualizvel se for denida utilizando a funo GROUP BY, HAVING ou funes agregadas (ex.: COUNT, SUM, MAX, MIN e AVG); deve-se adicionar a clusula WITH CHECK OPTION no momento da especicao da view para que o sistema verique a capacidade de atualizao e dena uma estratgia de atualizao da view.

IV.

ERRADA.

O trigger uma funo e utilizada para executar uma ao (execuo

de SQL's ou de algum programa externo ao Banco de Dados) aps a ocorrncia de um evento (operaes de atualizao por exemplo) que atenda uma condio (expresso que retorna um valor VERDADEIRO ou FALSO) especicada durante a denio do trigger. Sendo assim, a resposta correta a letra C.

Pgina 97 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

41.

Assuntos relacionados: Banco de Dados, Nveis de Isolamento, Banca: CESGRANRIO Instituio: BNDES Cargo: Analista de Suporte Ano: 2008 Questo: 49
Considere o ambiente de uma aplicao multiusurio que acessa um sistema de gerncia de banco de dados relacional. Os usurios acessam a aplicao em simultneo, submetendo transaes concorrentes ao banco de dados. Todas as transaes realizadas na base de dados, pela referida aplicao, esto denidas com o nvel de isoladamente READ COMMITTED (leitura com efetivao). O usurio Joo est executando, atravs da aplicao, uma transao T1, composta por vrios comandos SQL. Neste caso, correto armar que (a). o nvel de isolamento adotado no ir impedir o aparecimento de linhas fantasmas (phantom) durante a execuo de T1. (b). as atualizaes de dados realizadas por Joo dentro de T1 podem ser lidas por outros usurios imediatamente, mesmo antes de Joo efetivar sua transao. (c). se Joo abortar a execuo de T1 aps ter executado, como parte da transao, comandos de atualizao de dados, as referidas atualizaes no podero ser desfeitas. (d). no ambiente descrito, a execuo intercalada de qualquer conjunto de transaes ser serializvel. (e). devido utilizao do nvel de isolamento especicado, enquanto Joo executar T1, nenhum outro usurio poder executar comandos no banco de dados.

Soluo:
(A) CORRETA O nvel de isolamento de uma determinada transao dene o tipo de bloqueio em relao s operaes de leitura. No caso de um nvel de isolamento READ UNCOMMITTED (leitura sem efetivao), a transao poder ler dados que foram modicados por outras transaes e que ainda no foram conrmadas. Esses so fenmenos conhecidos como dirty reads (leituras sujas). J o nvel de isolamento READ COMMITTED impede que ocorra dirty reads. H dois tipos de anomalias que no so resolvidas por esse nvel de isolamento: no-repetvel e leitura fantasma (phantom). Suponha que duas consultas sejam executadas uma aps a outra dentro da mesma transao. No nvel de isolamento READ COMMITTED, nada impede que outra transao O comando SELECT, efetive suas alteraes durante a execuo da primeira consulta. leitura

nesse nvel de isolamento, enxerga apenas os dados conrmados antes da consulta ser executada. Nesse caso, os resultados das duas consultas realizadas uma aps a outra, mesmo pertencentes mesma transao, podem ser diferentes. J o fenmeno de leitura fantasma semelhante leitura no-repetvel no sentido em que

Pgina 98 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

so necessrias duas consultas com os mesmos critrios para que o fenmeno possa ser observado. Quando os retornos contm as mesmas linhas, mas com dados diferentes, o fenmeno de leitura no-repetvel. Quando a diferena no resultado indica que as linhas no so as mesmas, diz-se que ocorreu uma leitura fantasma. O padro ISO dene mais dois nveis de isolamento: leitura repetvel e leitura serializvel. O fenmeno de leitura fantasma s eliminado no nvel serializvel, que o nvel mais restrito. (B) ERRADA Para que o citado ocorra, o nvel de isolamento deveria ser READ UNCOMMITTED. (C) ERRADA Todo sistema gerenciador de banco de dados deve garantir que uma transao possa ser desfeita para manter a propriedade de atomicidade, que essencial para a recuperao dos dados em casos de desastre e para a resoluo de conitos entre transaes. Logo, tal fato impensvel. (D) ERRADA O nvel de isolamento citado no permite a serializao em relao as outras transaes. Mas vale lembrar que tal nvel propicia melhoria do desempenho do sistema. (E) ERRADA Vrias transaes podem ser executadas simultaneamente, mas respeitando-se os bloqueios que garantem o modo de serializao adotado.

Pgina 99 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

42.

Assuntos relacionados: Banco de Dados, Concorrncia entre Transaes, SGBD, Banca: CESGRANRIO Instituio: BNDES Cargo: Analista de Suporte Ano: 2008 Questo: 67
Em ambiente de Sistema Gerenciador de Banco de Dados (SGBD) multi-usurios, bloqueios e controles por timestamp (registro de tempo) so mecanismos utilizados para a manuteno da integridade das transaes. Sobre tais mecanismos e sua utilizao em SGBD relacionais, tem-se que (a). a utilizao de intenes de bloqueio visa aumentar a capacidade de concorrncia do sistema, no qual so permitidos somente bloqueios e intenes de bloqueio em linhas individuais. (b). a utilizao de bloqueios pode ocorrer tanto em linhas de dados quanto em estruturas de maior granularidade, como tabelas, podendo, tambm, ocorrer em estrutura de ndices. (c). o protocolo de bloqueio em duas fases foi desenvolvido para utilizao em banco de dados distribudos, e nele um n coordenador realiza uma eleio para que cada n participante indique se pode ou no concluir uma transao. (d). o protocolo de ordenao por timestamp (registro de tempo) baseado no momento em que um bloqueio foi obtido por uma transao, indicando que esse bloqueio somente pode ser mantido por determinado perodo de tempo. (e). o protocolo de ordenao por timestamp (registro de tempo) garante que no ocorrero deadlocks, pois esse protocolo impede que transaes mantenham o bloqueio de um objeto por tempo indenido.

Soluo:
Bloqueios permitem que apenas uma nica transao manipule (altere) um item de dados em um momento particular. Tambm possvel o bloqueio multigranular, que permite a uma transao bloquear diferentes tipos de recursos como tabelas e estruturas de ndices e, geralmente, esse bloqueio se d de forma hierrquica, onde o bloqueio explcito de um determinado objeto implica no bloqueio implcito dos seus sub-objetos. Conclumos, assim, que a alternativa B a alternativa correta e exclumos a alternativa A. O protocolo de bloqueio de duas fases pode ser utilizado em qualquer SGBD, ou seja, ele no foi especicamente desenvolvido para uso em bancos de dados distribudos, e sim para garantir a serializao de transaes. Logo, a alternativa C est errada. O protocolo de ordenao por timestamp atribui um timestamp para cada transao antes que ela inicie e serve para garantir que quaisquer execues de leitura e escrita sejam executadas por ordem de timestamp. Nesse protocolo no possvel que ocorram deadlocks, pois no um mtodo baseado em bloqueios de recursos. Entretanto, uma transao pode ser cancelada vrias vezes. A alternativas D e E esto erradas, pois no h bloqueios no processo de ordenao por timestamp. O que existem so mtodos que se baseiam em timeout para a manuteno do bloqueio por um tempo denido e so especicamente para manuseio de deadlocks, e no um protocolo que garanta a serializao como o protocolo de timestamp.

Pgina 100 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

43.

Assuntos relacionados: Banco de Dados, ACID, Banca: FCC Instituio: MPU Cargo: Analista de Desenvolvimento de Sistemas Ano: 2007 Questo: 63
A classicao das propriedades ACID, em transaes de BD, signicam (a).

Activity, Commit, Integrity

Direccion.

(b). Apresentao, Concluso, Inferncia e Dilogo. (c). Atomicidade, Consistncia, Isolamento e Durabilidade. (d). Alterao, Consulta, Insero e Deleo. (e). Apresentao, Consistncia, Independncia e Durao.

Soluo:
Uma transao uma unidade de execuo de programa que acessa e, possivelmente, atualiza vrios itens de dados em um banco de dados. Para assegurar a integridade dos dados e da prpria transao, o sistema de banco de dados deve manter as seguintes propriedades: Atomicidade, Consistncia, Isolamento e Durabilidade. de ACID. Para um sistema garantir a propriedade de Atomicidade, ou todas as operaes da transao so reetidas corretamente no banco de dados ou nenhuma ser, ou seja, uma transao indivisvel. Qualquer ao que constitui falha no sistema, a transao deve ser desfeita (rollback). Quando todas as aes so efetuadas com sucesso, a transao pode ser efetivada (commit). A Atomicidade garantida pelo prprio sistema de banco de dados, mais especicamente do componente chamado de Gerenciamento de Transaes. Na propriedade de Consistncia, a execuo de uma transao isolada (isto , sem a execuo concorrente de outra transao) preserva a consistncia do banco de dados. A Consistncia garante que uma transao deve ser um programa correto, e suas aes no devem resultar em violaes de restries de integridade denidas para o banco de dados. Assegurar a propriedade de Consistncia aps uma transao tarefa do programador que codica a transao. Embora diversas transaes possam ser executadas de forma concorrente (simultnea), o sistema garante que cada transao no toma conhecimento de outras transaes concorrentes no sistema. Isto , a propriedade de isolamento garante que nenhuma outra transao, operando no mesmo sistema, pode interferir no funcionamento da transao corrente. Assegurar a propriedade de Isolamento de responsabilidade de um componente do sistema de banco de dados chamado Controle de Concorrncia. Na propriedade de Durabilidade, depois de uma transao completar com sucesso (commit), as mudanas que ela fez no banco de dados persistem, at mesmo se houver falhas no sistema. A Durabilidade assegurada tambm pelo prprio sistema de banco de dados, mais especicamente pelo componente de Gerenciamento de Recuperao. Conforme explicado anteriormente, a alternativa correta da questo a letra C. Essas propriedades so chamadas

Pgina 101 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

44.

Controle de Concorrncia, Grafo de Precedncias, Banca: Cesgranrio Instituio: BNDES Cargo: Analista de Sistemas - Desenvolvimento Ano: 2008 Questo: 41

Assuntos relacionados: Banco de Dados, Transaes de Banco de Dados, Serializao,

Duas transaes (T1 e T2) de banco de dados executam as seguintes seqncias de operaes:

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 + DESPESA; 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 DESPESA + VERBA; Na tabela DEPARTAMENTO, desbloqueia a linha N; correto armar que essas transaes (a). no so serializveis e, portanto, no podem ser executadas concorrentemente. (b). no podem entrar em bloqueio innito porque obedecem ao protocolo de bloqueio em duas fases (two-phase locking). (c). podem entrar em bloqueio innito (deadlock) se executadas concorrentemente. (d). obedecem ao protocolo de bloqueio em duas fases (two-phase locking). (e). so serializveis e obedecem ao protocolo de bloqueio em duas fases (two-phase locking).

Soluo:
Para resolvermos essa questo, necessrio conhecer, primeiramente o conceito de serializao e concorrncia de transaes. Todo sistema gerenciador de banco de dados (SGBD) deve garantir que qualquer transao executada por ele atenda aos 4 atributos ACID das transaes:

Pgina 102 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

- Atomicidade: uma transao considerada como um elemento nico. Isso quer

dizer que ela s pode ser efetivada quando todos os comandos nela contidos forem executados sem falhas e na ordem em que foram programados. Em caso de erro, todas as operaes devem ser desfeitas. A atomicidade garante que a ideia do usurio de estar executando uma nica ao se concretize, muito embora, no banco de dados, essa ao se traduza em uma sequncia de comandos e operaes;

C - Consistncia:

ao nal de uma transao o banco de dados deve estar em um estado

consistente; um estado que esteja de acordo com o esperado pelo sistema a que ele atende, considerando o estado inicial logo anterior transao;

- Isolamento: as transaes no devem afetar o funcionamento umas das outras nem

devem enxergar os resultados parciais entre si;

- Durabilidade:

o resultado nal de cada transao deve ser permanente.

Uma

vez completa, o SGBD deve garantir que o novo estado do banco seja o mesmo para qualquer outra transao seguinte. Para garantir essas caractersticas das transaes, os SGBD's implementam mecanismos de controle de concorrncia. H vrias propostas de mecanismos de controle de concorrncia. A concorrncia de transaes algo desejado, uma vez que possibilita um melhor aproveitamento dos recursos computacionais. Na maioria dos casos, transaes iro atuar em dados distintos e, portanto, a paralelizao delas permite que os recursos computacionais disponveis sejam administrados entre elas, aumentando a ecincia da mquina. Por exemplo, enquanto uma transao busca dados no disco, outra pode trabalhar com os que j buscou realizando clculos no processador. A capacidade de um SGBD de paralelizar transaes garantindo que o resultado nal do banco seja consistente, ou seja, equivalente a execuo serial das transaes (isto , uma aps a outra) conhecida como

seriabilidade.

A ordem que as operaes de transaes concorrentes executada dene um escalonamento dessas transaes. Quem dene o escalonamento o SGBD. A seriabilidade de um escalonamento de transaes ditada pelo grafo de precedncia gerado a partir dos tipos de acesso aos dados comuns envolvidos nas transaes. Grafos de precedncia que gerem ciclos no so serializveis. Para montar o grafo de precedncias de um escalonamento deve-se seguir os seguintes passos: 1. para cada transao Ti participante do esquema S criar um n Ti no grafo de precedncia; 2. para cada operao em S onde Tj executa um read (X) aps um write (X) executado por Ti, criar um arco Ti -> Tj no grafo; 3. para cada operao em S onde Tj executa um write (X) aps um read (X) executado por Ti, criar um arco Ti -> Tj no grafo; 4. para cada operao em S onde Tj executa um write (X) aps um write (X) executado por Ti , criar um arco Ti -> Tj no grafo; 5. um esquema S serializvel se e somente se o grafo de precedncia no contiver ciclos.

Para chegarmos ao gabarito da questo, o conceito de seriabilidade e a ideia contida na anlise de grafos de precedncia ser essencial.
A questo em tela menciona em 3 de suas opes (

B, D e E)

um tipo de mecanismo

de controle de concorrncia conhecido como two-phase locking. Este mecanismo prev duas fases durante a execuo da transao: fase de expanso e fase de encolhimento.

Pgina 103 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Na fase de expanso, a transao vai realizando bloqueios (locks) nos objetos em que precisa de acesso e no os desbloqueia at a fase seguinte. Esses bloqueios podem ser de 2 tipos:

Compartilhado (shared) - onde a prpria transao e todas as outras concorrentes podem apenas ler os objetos bloqueados e nenhuma pode alter-los; Exclusivo (exclusive) - o objeto ca acessvel apenas para a transao tendo ela direitos de alter-lo inclusive.

Na fase de encolhimento, a transao no executa mais nenhum bloqueio sobre nenhum objeto e vai gradativamente liberando os bloqueios que conseguiu na fase de expanso conforme no necessita mais deles. Considerando essa caracterstica, possvel ver com um simples exemplo que esse tipo de controle de concorrncia pode levar a casos de bloqueio innito (deadlock). Suponha duas transaes T3 e T4 escalonadas conforme Figura 7:

Figura 7: escalonamento. Nesse escalonamento, ambas as transaes cam esperando a liberao de recursos comuns a elas que j foram previamente alocados transversalmente. Nenhuma das duas conseguir o recurso esperado e nunca terminaro. Esse tipo de problema pode ser corrigido atravs de outros mecanismos de controle de transaes, mas no esto no escopo da questo. Retornando anlise das opes da questo, vemos claramente que as assertivas (B), (D) e (E) esto erradas, visto que as transaes no utilizam o mecanismo de two-phase locking. A letra (B) inclusive diz que tal mecanismo impede a ocorrncia de bloqueio innito, o que j foi visto que est errado. A letra (E) menciona ainda que as transaes so serializveis, o que tambm falso e ser mostrado em breve. A opo (C) diz que h possibilidade de bloqueio innito na execuo concorrente das transaes. Entretanto isso completamente impossvel. As transaes da questo mantm bloqueado apenas um objeto por vez. Logo, mesmo que o escalonamento levasse uma a precisar do objeto bloqueado pela outra, eventualmente a transao que detinha o bloqueio o liberaria, permitindo o retorno da execuo da que aguardava.

Pgina 104 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Durante a prova, importante utilizar a eliminao de opes erradas como feito acima pois nesse caso os erros esto bastante visveis. Isso economiza um tempo precioso que voc poder gastar em outras questes ou revisando a prova. A concluso da exatido da assertiva (A) depende da anlise das operaes contidas nas transaes e da gerao dos grafos de precedncia de vrios escalonamentos possveis. Isso demanda muito tempo e, dependendo da situao, pode ser at mesmo impossvel. Nesse caso, deve-se reparar que, em qualquer escalonamento proposto, alguma das transaes terminar escrevendo em um dos dados que foi lido anteriormente pela outra. Esta, por sua vez, utilizar um dado inconsistente para seus clculos. Esse fenmeno conhecido como leitura suja (dirty read), e tambm deve ser impedido pelos SGBDs. Dessa observao, v-se que as transaes no so serializveis.

Pgina 105 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

45.

Assuntos relacionados: Banco de Dados, SQL, Gerncia de Transaes, Vises de Banco


de Dados, Banca: Cesgranrio Instituio: BNDES Cargo: Analista de Sistemas - Desenvolvimento Ano: 2008 Questo: 46
relacional, faz o seguinte teste: select nome from emp where matr = 123; O resultado vazio. Ento ele executa: insert into emp(matr, nome, salario, ativo) values (123, `Jos da Silva', 2000, `N'); commit; O banco de dados no retorna erro e informa que inseriu uma linha. ricar, ele consulta novamente: select nome from emp where matr = 123; O resultado continua vazio. Supondo que o sistema gerenciador de banco de dados esteja funcionando corretamente, que opo explica o ocorrido? (a). Como o funcionrio executou o primeiro SELECT momentos antes de executar o INSERT, o resultado cou na memria cache do computador e no foi executado pelo banco de dados na segunda vez. Somente aps protocolo LRU ter retirado do cache o resultado do SELECT que ele ser novamente executado. (b). Como emp uma viso e uma viso nada menos que uma consulta gravada no banco de dados, nunca possvel us-la em operaes de manipulao de dados. O COMMIT ignora a insero anterior. (c). emp uma viso que retorna todos os empregados ativos (ativo='S'), mas foi criada sem a expresso WITH CHECK OPTION, que evitaria o problema acima. (d). emp no uma tabela, mas uma viso que retorna todos os empregados ativos (ativo='S') e foi criada com a expresso WITH CHECK OPTION. Dessa forma, como o empregado Jos da Silva no est ativo, o banco de dados no gravou o registro no momento do COMMIT. (e). O funcionrio executou o SELECT pouco tempo aps a insero do registro. Mesmo nalizando a transao com o COMMIT, o registro est em memria e ainda no foi gravado no disco. Somente aps o CHECKPOINT que o registro estar disponvel para consulta. Por m, para ve-

Um funcionrio, encarregado de vericar o correto funcionamento de uma base de dados

Soluo:
O comando COMMIT efetiva a transao sendo executada. Todas as modicaes efetuadas pela transao se tornam visveis para os outros, e existe a garantia de permanecerem se uma falha ocorrer, pois o sistema gerenciador de banco de dados mantm um registro, chamado log, de todos os dados que foram escritos no bando de dados. O log utilizado

Pgina 106 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

para garantir a propriedade de durabilidade  se o sistema sofrer uma queda antes que as alteraes geradas por uma transao que foi executada satisfatoriamente forem persistidas em disco, o log utilizado para restaurar essas informaes quando o sistema for normalizado. Eventualmente, a transao pode no ter sido efetivada com sucesso, neste caso o sistema gerenciador de banco de dados se encarrega em desfazer as alteraes. Entretanto, no o caso da questo, pois a informao de que uma linha foi inserida e a existncia do COMMIT indica que a transao foi efetivada com sucesso. No COMMIT, os dados que foram alterados ou inseridos na transao so imediatamente visveis para consultas que so executadas depois. Esse fato elimina as alternativas (A) e (E) . Views so consultas SQL que, em situaes diversas, podem ser utilizadas no papel de tabelas relacionais. Entretanto, diferentemente das tabelas, os registros de uma view no so armazenados na base de dados. Podemos imaginar uma view como uma tabela que tivesse uma instncia virtual, que construda cada vez que a mesma invocada. Quando uma view referenciada em expresses SQL, o gerenciador de bancos de dados manipula o resultado da consulta que dene a view como se fosse uma tabela normal. A similaridade com tabelas estende-se ao ponto de permitir atualizaes sobre os virtuais registros de uma view. Quando um novo registro inserido, ou quando um registro existente alterado ou removido, na verdade o SQL inclui, altera ou remove registros nas tabelas que compem a view. Esse fato elimina a alternativa (B). Cada implementao tem critrios ligeiramente diferentes para decidir se uma view pode ou no ser atualizada. Como norma geral, entretanto, as seguintes restries devem ser Uma coluna observadas na construo de uma view para que a mesma seja atualizvel. atualizvel no pode ser resultante de:

funes de agregao, tais como sum, avg, etc.; funes escalares, tais como sin, trim, etc.; expresses aritmticas; expresses condicionais, tais como case, iif, etc.; literais; subconsultas.

Uma view atualizvel deve conter

pelo menos uma fonte de registros atualizvel referenciada na clusula from.

Uma view atualizvel no pode conter:

operadores algbricos, tais como union; a clusula group by; a clusula distinct.

As restries acima formam um conjunto genrico de caractersticas das views atualizveis. Essas regras, entretanto, devem ser analisadas luz das operaes pretendidas. Por exemplo, uma view que tenha algumas colunas baseadas em expresses aritmticas talvez no possa ser objeto de um comando update nesses atributos, mas pode permitir a remoo de registros. Por este e outros motivos, a lida de cada implementao com essa questo varia bastante, e cada caso merece uma anlise cuidadosa.

Pgina 107 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Em views atualizveis, temos a opo CHECK OPTION no momento de sua criao. Todos os comandos INSERT e UPDATE em uma view sero vericadas para garantir que os dados satisfazem as condies que denem a viso. Se no satiszer, a atualizao ser rejeitada. Analisando as alternativas que ainda no foram eliminadas (C e D), supomos que a view em questo representa todos empregados ativos (ativo='S'). Como a insero trata da insero de um empregado inativo, a existncia da opo CHECK OPTION impediria a sua insero, mas no foi o que ocorreu, j que fomos informados de que uma linha foi inserida. Logo, conclumos que a opo CHECK OPTION no foi utilizada na denio da view emp e, portanto, a alternativa

C representa a alternativa correta.

Pgina 108 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

46.

lidade, Durabilidade, Leitura Limpa, Clean Read, Leitura Suja, Dirty Read, Missing Deadlock, Deadlock Ausente, Commit Alcanado, Reached Commit, Banca: Cesgranrio Instituio: Petrobras Cargo: Analista de Sistemas - Processos de Negcio Ano: 2008 Questo: 28
mento. O critrio para um escalonamento ser considerado correto a(o) (a). serializabilidade. (b). durabilidade. (c). leitura limpa (clean read). (d). deadlock ausente (missing deadlock). (e). commit alcanado (reached commit).

Assuntos relacionados: Banco de Dados, Escalonamento de Banco de Dados, Serializabi-

A execuo de um conjunto de transaes em um banco de dados chamado de escalona-

Soluo:
A serializabilidade consiste em, dado um conjunto de transaes, independentemente da forma como seus comandos so intercalados na execuo, o resultado obtido equivale execuo serial das transaes. O escalonamento de transaes em um SGBD (Sistema Gerenciador de Bancos de Dados) deve ter como alvo a serializabilidade, de forma a garantir a integridade das informaes. Sendo assim, a opo correta a letra (A). As demais opes tratam de caractersticas das transaes em si ou mesmo de caractersticas que, juntas, traduzem a inteno da serializabilidade. A durabilidade, citada na Ela diz letra (B), uma das 5 caractersticas ACID desejadas para as transaes em si.

que as alteraes geradas por uma transao devem permanecer no banco aps a efetivao da mesma, garantindo sua efetivao real. No caso de uma falha do sistema, a transao que tiver sido efetivada deve permanecer efetivada no banco para que a durabilidade seja atendida. Repare que essa caracterstica imprescindvel para as transaes e no para o escalonamento. A leitura limpa uma das caractersticas que compe a serializabilidade. Ela prev que,

diferentemente da leitura suja, os dados lidos pelas transaes estejam sempre coerentes com o estado do incio da transao e sejam sempre coerentes. O deadlock ausente outra caracterstica que compe a serializabilidade. Nesse caso, o escalonamento, tal qual a execuo serial das transaes, deve impedir que os recursos cedidos transaes concorrentes no gerem conitos de interesse entre ambas e impea mutuamente a execuo destas. Estas caractersticas so tratadas no controle de concorrncia. Entretanto, esto intimamente ligadas ao escalonamento, visto que inuenciaro diretamente nele.

Pgina 109 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

47.

Assuntos relacionados: Banco de Dados, Concorrncia entre Transaes, Banca: Cesgranrio Instituio: Petrobras Cargo: Analista de Sistemas - Infraestrutura Ano: 2008 Questo: 57
Considere as duas transaes (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 de banco de dados read_item - executa a leitura do item write_item - executa a escrita do item correto armar que estas transaes (a). seguem o protocolo de bloqueio em duas fases e no entram em impasse (deadlock), se executadas concorrentemente. (b). podem entrar em impasse (deadlock), se executadas concorrentemente. (c). so serializveis e no seguem o protocolo de bloqueio em duas fases. (d). no so serializveis e, portanto, podem ser executadas concorrentemente. (e). no seguem o protocolo de bloqueio em duas fases, no sendo portanto serializveis.

Soluo:
Uma transao uma unidade lgica de processamento que pode incluir uma ou mais operaes sobre o Banco de Dados. das transaes. Podemos observar que estas duas transaes implementam o protocolo de bloqueio de duas fases (Two-Phase e uma fase de encolhimento (shrinking ), em que todos os read_locks e write_locks ocorrem na primeira fase, enquanto que os unlocks ocorrem na segunda fase (na verdade, to logo a transao libera um bloqueio, ela entra na fase de encolhimento e no poder solicitar novos bloqueios). Portanto, podemos descartar as alternativas C e E. Lembre-se que a instruo read_lock permite que outras transaes apenas leiam o mesmo item de dado e a write_lock impede que qualquer operao de escrita ou leitura possa ser realizada por outra transao sobre um item que esteja bloqueado para escrita. Alm disso, a qualquer hora podem ser feitos diversos bloqueios compartilhados (read_lock) simultaneamente (por diferentes transaes) sobre um item de dado particular. J uma solicitao de Entende-se por transaes concorrentes aquelas que so executadas ao mesmo tempo e pelo menos uma operao WRITE executada por alguma

Locking

- 2PL), pois ambas possuem uma fase de crescimento (growning )

Pgina 110 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

bloqueio exclusivo (write_lock) precisa esperar at que um bloqueio compartilhado termine para ser efetivada. Considere o caso em que estas duas transaes so executadas simultaneamente, isto , as instrues de cada transao podem ser intercaladas. instrues conhecida como escala de execuo. concorrncia tenha gerado a seguinte escala de execuo: A atribuio da ordem dessas Suponha que o sistema de controle de

T1
read_lock(Y) read_item(Y) write_lock(X)

T2
read_lock(X)

read_item(X) write_lock(Y) unlock(Y) read_item(X) X := X + Y write_item(X) unlock(X) unlock(X) read_item(Y) Y := Y + X write_item(Y) unlock(Y)

1. a transao T1 requer o bloqueio compartilhado sobre o item de dados Y. Como no h nenhum bloqueio exclusivo sobre este item, o sistema de controle de concorrncia concede o bloqueio a T1; 2. a transao T2 requer o bloqueio compartilhado sobre o item de dados X. Como no h nenhum bloqueio exclusivo sobre este item, o sistema de controle de concorrncia concede o bloqueio a T2; 3. a transao T1 requer o bloqueio exclusivo sobre o item de dados X. Esta transao precisa esperar at que bloqueio compartilhado sobre X termine para que, somente assim, o bloqueio seja efetivado; 4. a transao T2 requer o bloqueio exclusivo sobre o item de dados Y. Esta transao precisa esperar at que bloqueio compartilhado sobre X termine para que, somente assim, o bloqueio seja efetivado. Podemos observar, neste ponto, que T1 est parada esperando que T2 libere X, e esta tambm est parada espera que T1 libere Y. A esta situao de impasse damos o nome de

deadlock.

Descartamos, assim, a alternativa A.

Por m, lembre-se que o protocolo de bloqueio em duas fases garante a serializao de conitos (onde uma sequncia de instrues pertencentes a uma nica transao aparecem juntas), porm no garante a ausncia de

deadlocks.

Alm disso, uma forma de garantir a

consistncia em execuo simultnea (concorrente) cuidar para que qualquer escala executada seja, de certa forma, equivalente a uma escala serial. Eliminamos, assim, a alternativa D. Portanto, a alternativa

B est correta.

Pgina 111 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

48.

Assuntos relacionados: Banco de Dados, Isolamento entre Transaes, Escala de Execuo,

Banca: Cesgranrio Instituio: Petrobras Cargo: Analista de Sistemas - Infraestrutura Ano: 2008 Questo: 60
Uma transao em um sistema de banco de dados pode ser descrita como uma unidade de execuo de programa que acessa e, possivelmente, atualiza vrios itens de dados. Para o gerenciamento de transaes em sistemas de bancos de dados, assinale a armao correta. (a). Atomicidade para uma transao signica que cada operao de uma transao reetida na base de dados ou nenhuma operao o . (b). Um escalonamento a ordem de execuo de vrias transaes de forma concorrente, mas nunca entrelaada. (c). Integridade para uma transao signica que a execuo de uma transao de forma isolada (sem sofrer concorrncia de outra transao) preserva a consistncia da base de dados. (d). Mesmo aps a execuo de um comando commit, possvel a uma transao retornar a seu estado inicial com a utilizao de rollback. (e). Em transaes que ocorrem simultaneamente, no existe qualquer garantia de que os dados lidos em um determinado momento so consistentes, independente do nvel de isolamento utilizado.

Soluo:
Como o enunciado bem mencionou, uma transao em um sistema de banco de dados pode ser descrita como uma unidade de execuo de programa que acessa e, possivelmente, atualiza vrios itens de dados. As quatro propriedades fundamentais das transaes, usualmente conhecidas como ACID, so as seguintes:

atomicidade:

o conjunto de operaes de uma transao indivisvel, de modo que s

faz sentido se for executado por completo. Ou seja, para que a transao faa sentido, todas as operaes que a compe devem ser executadas;

consistncia: isolamento:

cada transao deve levar o banco de dados de um estado consistente

para outro estado tambm consistente; a execuo de uma transao no deve ser prejudicada pela execuo de

outras transaes que sejam executadas de forma concorrente;

durabilidade:

as alteraes realizadas por uma transao conrmada devem persistir

no banco de dados. Com base no princpio de Atomicidade (que vem de atmico, ou seja, indivisvel) apresentado, podemos armar que a alternativa A est correta. Portanto, ela a resposta da questo. Na alternativa B, abordado o conceito de escala (ou escalonamento) de execuo de transaes. Quando vrias transaes so executadas de forma concorrente, as operaes de Portanto, a alternativa B est errada. A ordem cada transao podem ser intercaladas.

de execuo das operaes das mltiplas transaes que executam de forma concorrente

Pgina 112 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

chamada escala de execuo. responsabilidade do SGDB escolher uma escala de execuo que deixe o banco de dados em estado consistente. A armativa trazida na alternativa C, diz respeito a propriedade Consistncia. das transaes. Repare

que no incio da armativa citado o termo Integridade, que no uma das propriedades Ao m, o elaborador da questo tenta confundir o candidato usando o termo Consistncia, que por sua vez uma das propriedades da questo. De todo modo, a armativa est errada. A alternativa D est errada pois o comando COMMIT utilizado justamente para conrmar as operaes realizadas pela transao. Aps a sua utilizao, a transao est concluda, no sendo mais possvel levar a transao ao seu estado inicial. J a alternativa E trata do conceito de nveis de isolamento na execuo de transaes. Como vimos, o isolamento diz respeito a interferncia das transaes entre si quando so executadas de forma concorrente. Para lidar com essa propriedade, o padro SQL dene Os fenmenos so os quatro nveis de isolamento que podem ser implementados pelos SGBDs em termos de trs fenmenos que devem ser evitados entre transaes concorrentes. seguintes:

leitura suja (dirty read):

uma transao l valores que foram escritos por outra

transao ainda no conrmada;

leitura no-repetitiva (nonrepeatable read): leitura fantasma (phantom read):

uma transao l o valor de um

mesmo objeto mais que uma vez e encontra valores diferentes nas leituras realizadas; caso uma consulta seja realizada mais que uma

vez, e em cada execuo, sejam retornados resultados com conjuntos diferentes de registros, modicados por outras transaes. Para lidar com estes fenmenos, os quatro nveis de isolamento estabelecem polticas que, quanto mais abertas, mais estimulam a concorrncia, tornando a ocorrncia destes fenmenos mais provvel. Os nveis com polticas mais restritivas evitam a ocorrncia desses fenmenos, porm tornam a execuo mais lenta.

Nvel de Isolamento Dirty Read Nonrepeatable Read Phantom Read


Read uncommitted Read committed Repeatable read Serializable Possvel Impossvel Impossvel Impossvel Possvel Possvel Impossvel Impossvel Possvel Possvel Possvel Impossvel

Tabela 6: nveis de isolamento de transaes. A Tabela 6 mostra os quatro nveis e suas respectivas susceptibilidades aos fenmenos. Com isso, a alternativa E est errada, j que a consistncia dos dados lidos em um cenrio de execuo concorrente de transaes depende do nvel de isolamento empregado.

Pgina 113 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

49.

Assuntos relacionados: Banco de Dados, ACID, Atomicidade em Transao, Consistncia em Transao, Isolamento entre Transaes, Durabilidade em Transao, Banca: Cesgranrio Instituio: Petrobras Cargo: Analista de Sistemas Pleno - Processos Ano: 2006 Questo: 22
T1 1 2 3 4 5 6 Ler(A); A = A  30; Escrever(A); Ler(B); B = B + 30; Escrever(B);

A transao T1, pertencente a um sistema bancrio e denida pelas operaes listadas acima, responsvel pela transferncia de R$ 30,00 da conta A para a conta B. Considere tambm uma transao T2 que esteja sendo executada simultaneamente a T1. Caso a transao T2 realize uma operao Escrever(B) aps a execuo da operao 4 e antes da execuo da operao 6 por T1, qual das propriedades das transaes estar sendo violada no banco de dados do sistema bancrio? (a). Atomicidade. (b). Distributividade. (c). Consistncia. (d). Durabilidade. (e). Isolamento.

Soluo:
O cerne desta questo est relacionado s propriedades de um transao em banco de dados. Uma transao um conjunto de operaes em banco de dados, possivelmente de leitura e/ou alterao, que devem ser executadas como uma nica unidade de trabalho. Elas devem ser processadas de forma convel, de tal forma que nenhum dado se perca, ou seja indevidamente alterado, em decorrncia de mltiplos usurios e possveis falhas de sistema. Um exemplo tpico de transao a uma transferncia bancria entre contas. Ela exige vrias operaes (dbito na conta de origem, crdito na conta de destino, cobrana de taxas, etc.), mas todas so processas como uma nica unidade. dessa forma que se elimina a possibilidade de situaes indesejadas no que se refere a banco de dados, como: dbito na conta de origem sem o devido crdito na conta de destino; crdito na conta de destino sem o devido dbito na conta de origem; cobrana de taxas sem a devida efetivao da transferncia. So os Sistemas de Gerenciamento de Banco de Dados (SGBD) que devem assegurar que transaes obedeam certas propriedades. Anal de contas, so eles que so responsveis pelo gerenciamento do banco de dados (como o seu prprio nome j diz). garante-se que sempre os dados do banco estaro ntegros. Dessa forma,

Pgina 114 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

As propriedades mais importantes e mais difundidas entre os SGBDs so as que formam o acrnimo ACID:

atomicidade:

ela assegura que a transao indivisvel. Ou todas as operaes que a

compem so concludas ou nada realizado. Isso implica que quando uma transao tem que ser abortada, por qualquer motivo, as suas operaes que eventualmente forma concludas devem ser desfeitas. Essa forma de desfazer uma transao recebe o nome de rollback. No nosso exemplo acima, esta a propriedade que garante que nenhuma situao no desejada citada acima ocorra;

consistncia:

ela garante que as regras de integridade do banco de dados, denidas Vejamos um exemplo

pelo seu projetista, sero sempre preservadas. Caso uma transao tente levar o banco a uma estado no-ntegro, o SGBD abortar essa transao. no caso de uma transferncia bancria. Caso haja hipoteticamente uma restrio de integridade que diga que qualquer conta bancria no possa car com saldo negativo e uma transao tente transferir R$500,00 a partir de uma conta com apenas R$200,00, o SGBD no permitir a concluso dessa transao;

isolamento:

ela garante que transaes no interferem umas com as outras, exceto de Alm disso, outras restries podem ser estabelecidas,

forma permitida. De maneira geral, uma transao nunca deve sobrescrever alteraes feitas por outra transao. por outras transaes. como por exemplo habilitar/desabilitar leitura de mudanas temporrias realizadas Esta propriedade assegurada pelo componente chamado de Controle de Concorrncia. Este justamente o caso descrito no enunciado. Como a transao T2 escreve na conta B aps a leitura dessa conta pela transao T1, quanto T1 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:
permanente.

ela assegura que qualquer alterao resultante de uma transao ser Imagine que uma transferncia bancria seja feita em um

E isso deve ser verdade mesmo em caso de falha de sistema aps a

concluso da transao.

caixa eletrnico e que 30 segundos depois da sua concluso o equipamento falhe. a propriedade de durabilidade que garante que a tal transferncia permanece vlida na sua conta. J a alternativa B nos traz a propriedade de distributividade, que no tem um relacionamento direto com transaes de banco de dados. Essa propriedade est relacionada a operaes algbricas (da Matemtica ou Relacional). Um exemplo bem simples de distributividade visto entre operaes de soma: (3+6)+5 = 3+(6+5) = 14. Ou seja, como a ordem entre as execues dessas operaes no interfere no resultado, se diz que esse tipo de operao respeita a propriedade de distribuitividade.

Pgina 115 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

50.

Assuntos relacionados: SGBD, Consulta SQL, Modelo Relacional, Concorrncia entre


Transaes, Controle de Concorrncia, Two-Phase Locking (2PL), Banca: Cespe Instituio: ANAC Cargo: Analista Administrativo - Tecnologia da Informao Ano: 2009 Questo: 6870

Segundo Abraham Silberschatz, um Sistema Gerenciador de Banco de Dados (SGBD) constituido por um conjunto de dados associados a um conjunto de programas para acesso

(Silberschatz, Abraham; Korth, Henry F e Sudarshan, S. Sistema de Banco de Dados. Makron Books, 1999. p. 1.)
a esses dados. Acerca dos conceitos e caractersticas do Sistema Gerenciador de Banco de Dados, julgue os itens a seguir.

68 69

No processamento de uma consulta expressa em uma linguagem de alto nvel, como a SQL, o SGBD deve planejar uma estratgia de execuo para recuperar o resultado da consulta, a partir dos arquivos do banco de dados. Um banco de dados relacional um banco de dados em que a estrutura tem a forma de tabelas. Formalmente uma relao R denida 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 execuo de transaes concomitantemente existem diversas tcnicas de controle de concorrncia que so utilizadas para garantir propriedade de no-interferncia ou isolamento de transaes. Uma dessas tcnicas o controle de concorrncia baseado em ordenamento de registro de timestamp que utiliza o bloqueio combinado com o Protocol Two-Phase locking (2PL).

Soluo:
Um Sistema Gerenciador de Banco de Dados (SGBD) uma coleo de arquivos e programas que esto inter-relacionados, permitindo ao usurio acesso a consultas e alteraes desses dados. Essa coleo de arquivos ou conjunto de dados chamado de banco de dados. O principal objetivo de SGDB oferecer um ambiente to eciente quanto conveniente para armazenamento e recuperao das informaes que esto no banco de dados. O maior benefcio de um SGBD proporcionar uma viso abstrata dos dados, isto , o sistema oculta alguns detalhes de como esses dados esto armazenados e como so mantidos. A seguir analisamos os itens referentes ao SGBD:

68

CERTO Dentre as funes bsicas desempenhadas pelo SGBD, est a de processamento de consultas. Uma consulta nada mais que uma solicitao para recuperao de informao no banco de dados. Nos processamentos de consultas so realizadas diversas tarefas para extrair informao do banco de dados. As tarefas bsicas envolvidas so: anlise sinttica e traduo; otimizao; e avaliao.

Pgina 116 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Antes do processamento de uma consulta, o SGBD deve traduzir uma linguagem de alto nvel, como a SQL, para uma representao interna de uma consulta ao sistema. Ou seja, nesta gerao da forma interna realizada uma anlise sinttica da sintaxe da consulta, e, ento uma traduo para uma expresso algbrica relacional (representao interna). A tarefa de otimizao compreende em selecionar um plano de avaliao de consulta que seja mais eciente para a consulta. Ou seja, so realizadas tentativas de encontrar uma expresso equivalente e mais eciente a consulta dada. Uma vez o plano de consulta selecionado, a consulta avaliada com esse plano e resultado da consulta produzido. Ento, conforme explicado anteriormente, o SGBD dene uma estratgia de execuo (anlise sinttica e traduo, otimizao e avaliao) para execuo de consultas. Portanto, este item est certo.

69

ERRADO Sob a estrutura de um banco de dados est o modelo de dados. Existem vrios modelos, mas o principal o modelo relacional. O modelo relacional, que um modelo com base em registros, utiliza um conjunto de tabelas para representar tanto os dados quanto as relaes entre eles. Cada tabela possui mltiplas colunas, cada uma com nome nico. Cada coluna da tabela chamada de atributo. Formalmente, dado uma coleo de conjuntos D1, D2, . . . ,Dn, no necessariamente distintos, uma relao R denida sobre esses n conjuntos se for constituda por um subconjunto de n-tuplas <d1, d2, . . . , dn> tal que d1 E D1, d2 E D2, . . . , dn E Dn. Note que, o enunciado deste item arma que domnio um conjunto de valores obrigatoriamente distintos. Portanto, este item est errado.

70

ERRADO Entende-se por transaes concorrentes aquelas que desejam executar ao mesmo tempo e pelo menos uma operao de escrita no banco de dados. Embora diversas transaes possam ser executadas de forma concorrente, o SGDB deve garantir que uma transao no tome conhecimento de outras transaes concorrentes no sistema com forma de garantir a consistncia dos dados. Ou seja, O SGBD deve garantir o isolamento entre as transaes concorrentes. O isolamento de uma transao garante que a execuo de transaes concorrentes resulte em uma situao no SGBD equivalente caso as transaes tivessem sido executadas uma de cada vez. Note que a execuo concorrente de transaes aumenta o desempenho do SGBD em termos do nmero de transaes que o sistema pode executar em um determinado perodo e do tempo mdio de resposta.

Pgina 117 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

A forma mais simples de implementar um controle de concorrncia por meio da utilizao de mecanismos de bloqueios baseados em locks binrios, como operaes de

lock

unlock.

Porm, os locks binrios tm o inconveniente de no permitir que duas

ou mais transaes que desejam realizar uma operao de leitura no banco de dados acessem o item simultaneamente, o que reduz o desempenho do SGBD. Para contornar esse problema, foi criado outro mecanismo de lock baseado em 3 ope-

read_lock utilizada quando uma transao deseja ler um item no banco de dados. A write_lock utilizada quando uma transao deseja escrever no banco de dados. E, a unlock utilizada aps o trmino das operaes read_lock e write_lock.
raes: e A Embora, os

read_lock, write_lock

unlock.

locks

binrios e os

locks read/write

garantam a exclusividade de execu-

o de uma transao, eles no garantem a serializao das transaes concorrentes. A serializao uma propriedade do SGBD que garante que independente da ordem dos acessos aos dados feitos pelas transaes, o resultado nal ser o mesmo (vide Figura 8).

Figura 8: exemplo de transaes serializveis. Outra tcnica que visa solucionar o problema de exclusividade e de serializao a utilizao do algoritmo de bloqueio de duas fases (Two-Phase

Locking

- 2PL). Este al-

goritmo tem duas fases: a primeira consiste na obteno de locks, chamada de growing; e a segunda consiste na liberao de locks. O principal problema desse tipo de controle de concorrncia a possibilidade de deadlocks. Uma tcnica para preveno de deadlocks a baseada em timestamp. Nesta tcnica, a cada transao do sistema associado um nico timestamp xo. Esse timestamp criado pelo SGBD antes que uma transao inicie sua execuo. Os timestamps das transaes determinam a ordem de serializao das transaes e so atualizados a cada nova execuo de leitura ou de escrita. Conforme explicamos anteriormente, este item est errado, pois o timestamp no utiliza o algoritmo 2PL. Caso deseje aprofundar no assunto sobre SGBD, recomendamos a seguinte referncia

Pgina 118 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Sistema de banco de dados - Silberschatz, Abraham; Korth, Henry F e Sudarshan.

Pgina 119 de 120

www.handbookdeti.com.br

Handbook de Questes de TI Comentadas para Concursos

Volume questes de TI

Questo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Resposta D A B D E B E E C C C E B 80 CERTO 81 ERRADO 82 ERRADO C A E B C E B E C C E C E E A E B A A C A B E A B C A B C A C A B A E 68 CERTO 69 ERRADO 70 ERRADO

Pgina 120 de 120

Handbook de TI

Alm do Gabarito

ndice Remissivo
Indexao de Registros, 46 Isolamento entre Transaes, 112, 114 lgebra Relacional, 42 ACID, 49, 52, 101, 114 Atomicidade em Transao, 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, 100102, 106, 109, 110, 112, 114 Bancos de Dados Distribudos, 59 Categorias de Linguages de Banco de Dados, 54 Chave Assimtrica, 37 Chave Secundria, 37 Chave Simtrica, 37 Clean Read, 109 Commit, 14 Commit Alcanado, 109 Concorrncia entre Transaes, 100, 110, 116 Consistncia em Transao, 114 Consulta SQL, 75, 83, 90, 116 Controle de Concorrncia, 102, 116 Criptograa, 37 Data Control Language (DCL), 54, 94 Data Denition Language (DDL), 54, 57, 94 Data Manipulation Language (DML), 54, 57, 94 Data Query Language (DQL), 54 Deadlock Ausente, 109 DER, 28 Dicionrio de Dados (DD), 4 Dirty Read, 109 Durabilidade, 109 Durabilidade em Transao, 114 Escala de Execuo, 112 Escalonamento de Banco de Dados, 109 Gatilhos, 18 Gerncia de Transaes, 106 Grafo de Precedncias, 102 HAVING, 86 Independncia de Fragmentao, 61 Independncia de Localizao, 61 Independncia do Sistema Operacional, 61 Reached Commit, 109 Rolling Back, 14 Rolling Forward, 14 Savepoint, 14 Segunda Forma Normal (2FN), 63, 67, 72 Segurana da Informao, 37 Serializao, 102 Serializabilidade, 109 SGBD, 4, 42, 57, 100, 116 Sistemas Distribudos, 61 SQL, 12, 21, 54, 77, 79, 81, 86, 90, 92, 94, 96, 106 Superchave, 37 Terceira Forma Normal (3FN), 63, 67, 72 Transaes de Banco de Dados, 102 Transact SQL, 21 Transaction Control Language (TCL), 54 Triggers, 18, 96 Two-Phase Locking (2PL), 116 121 Vises de Banco de Dados, 106 PL/SQL, 16 Primeira Forma Normal (1FN), 63, 65, 67, 72 Projeto Lgico de Banco de Dados, 30 JOIN, 86 Leitura Limpa, 109 Leitura Suja, 109 Missing Deadlock, 109 Modelagem de Dados, 37 Modelo Entidade-Relacionamento, 23, 26, 30, 33, 39 Modelo Objeto-Relacionamento, 39 Modelo Relacional, 30, 33, 39, 65, 69, 116 Nveis de Isolamento, 98 Nvel de Abstrao, 44 Nvel de Viso, 44 Nvel Fsco, 44 Nvel Lgico, 44 Normalizao de Banco de Dados, 63, 65, 67, 69 Operaes de Composio de Relaes, 83 Oracle, 5, 7, 10, 12 Otimizador de Consultas, 57