You are on page 1of 41

MEMOREX BANCO DE DADOS

por Paulo Marcelo

paulo1410@hotmail.com
10/10/2009

Esse é o terceiro memorex destinado aos concurseiros de TI. Neste material, foram compilados os
principais conceitos sobre banco de dados e as cláusulas SQL avançadas (grupos, funções agregadas,
subconsultas, etc) que costumam confundir até os candidatos mais experientes sobre o assunto. Questões
comentadas encontram-se ao final do material. Agradecimento ao concurseiro Diogo Fagundes [diofagor]
que pacientemente comentou a maioria das questões. Bons estudos a todos!

Memorex anteriores:
http://www.scribd.com/doc/16787717/Memorex-Redes
http://www.scribd.com/doc/17101886/Memorex-PMBOK-2004

Errata:
No Memorex de Redes a seguinte questão elaborada pelo cespe: “O criptossistema Diffie Hellman
define uma forma segura de troca de chaves” está errada devido a vulnerabilidade ao ataque man-in-the-
middle e nada tem a ver com termo “criptossistema” como consta no material.

O texto a seguir foi compartilhado por um membro da lista timaster. Fica a reflexão.

Um Meio ou uma Desculpa


Não conheço ninguém que conseguiu realizar seu sonho, sem sacrificar feriados e domingos pelo
menos uma centena de vezes, da mesma forma, se você quiser construir uma relação amiga com seus filhos,
terá que se dedicar a isso, superar o cansaço, arrumar tempo para ficar com eles, deixar de lado o orgulho e
o comodismo. Se quiser um casamento gratificante, terá que investir tempo, energia e sentimentos nesse
objetivo.
O sucesso é construído à noite! Durante o dia você faz o que todos fazem.
Mas, para obter um resultado diferente da maioria, você tem que ser especial. Se fizer igual a todo
mundo, obterá os mesmos resultados, não se compare à maioria, pois infelizmente ela não é modelo de
sucesso, se você quiser atingir uma meta especial, terá que estudar no horário em que os outros estão
tomando chopp com batatas fritas. Terá de planejar, enquanto os outros permanecem à frente da televisão.
Terá de trabalhar enquanto os outros tomam sol à beira da piscina.
A realização de um sonho depende de dedicação, há muita gente que espera que o sonho se realize
por mágica, mas toda mágica é ilusão, e a ilusão não tira ninguém de onde está, em verdade a ilusão é o
combustível dos perdedores, pois....

'Quem quer fazer alguma coisa, encontra um meio'. 'Quem não quer fazer nada, encontra uma
desculpa'.

Roberto Shinyashiki

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


CHAVES
Especifica como entidades e relacionamentos são identificados.
Conceitualmente, entidades e relacionamentos individuais são distintos, mas
numa perspectiva de banco de dados a diferença entre eles precisa ser expressa
em termos de seus atributos.
O conceito de super-chave permite-nos fazer tais distinções. Uma super-
chave é um conjunto de um ou mais atributos que, tomando coletivamente,
permite-nos identificar unicamente uma entidade no conjunto de entidades. Por
exemplo, o atributo SeguridadeSocial do conjunto de entidades cliente é
suficiente para distinguir uma entidade cliente das outras. Desta forma,
seguridade-social é uma super-chave. De forma semelhante, a combinação
NomeCliente e SeguridadeSocial é uma super-chave para o conjunto de
entidades cliente. O atributo NomeCliente de cliente não é uma super-chave, pois diversas pessoas podem ter o mesmo
nome.
O conceito de super-chave não é suficiente para nossos propósitos, pois ela pode ter atributos redundantes (ou seja
atributos não necessários para serem únicos). Ex: se K é uma super-chave, então um subconjunto de K também poderá ser.
Toda a relação tem, no mínimo, uma super-chave que é a junção de todos os seus atributos.
Frequentemente, procuramos super-chaves que não contenham nenhum subconjunto próprio que seja uma super-
chave. Tais super-chaves mínimas são chamadas chaves candidatas.
Utilizaremos o termo chave primária para denotar uma chave candidata que é escolhida por um projetista de
banco de dados como meio principal de identificação de entidades dentro de um conjunto de entidades.
É possível que diversos conjuntos distintos de atributos possam servir como uma chave candidata. Suponha que uma
combinação de NomeCliente e rua seja suficiente para distinguir entre membros do conjunto de entidades cliente. Então
ambos, {SeguridadeSocial} e {NomeCliente, rua}, são chaves candidatas. Embora os atributos SeguridadeSocial e
NomeCliente juntos possam distinguir entidades de cliente, sua combinação não forma uma chave candidata, uma vez que
o atributo SeguridadeSocial sozinho é uma chave candidata.
Chaves estrangeiras podem ser definidas como sendo um conjunto de atributos pertencentes a um esquema de
relação que constituem chaves primárias ou candidatas em outros esquemas independentes. Diferentemente da chave
primária, uma chave estrangeira pode conter valores nulos.

Chave primária e chave estrangeira não podem ser multivaloradas

Normatização - Um aspecto importante na modelagem de dados consiste na normalização de dados, realizada com o
objetivo de eliminar redundâncias e possíveis inconsistências no modelo de dados. Várias tabelas estreitas com menos
colunas são características de um banco de dados normalizado. Poucas tabelas largas com mais colunas são características
de um banco de dados não normalizado.
1FN: Diz-se que uma tabela está na primeira forma normal quando ela não contém tabelas aninhadas (grupo repetido
ou coluna multivalorada ou coluna não atômica)
2FN: Uma tabela está na 2FN se, além de estar na 1FN, não possuir dependências funcionais parciais, ou seja, todos
os atributos não‐chave devem depender funcionalmente da chave primária inteira. Só ocorre com chaves
primárias compostas
3NF: Uma tabela está na 3FN se, além de estar na 2FN, não possuir dependências transitivas entre os atributos.
Dependências transitivas ocorrem quando um atributo não‐chave depende de outro que não é chave da relação
BCNF : Uma tabela está na BCNF, se e somente se, estiver na 3FN e houve dependências funcionais não triviais.

Alguns benefícios da normalização incluem o seguinte:


 Classificação e criação mais rápidas dos índices.
 Um número maior de índices clusterizados
 Índices mais estreitos e mais compactados.
 Menos índices por tabela. Isto melhora o desempenho das instruções INSERT, UPDATE e DELETE.
 Menos valores nulos e menos oportunidades de inconsistências. Isto aumenta a densidade do banco de
dados.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Uma associação NxM viola a 1FN devido a ocorrência de repetições de tuplas do lado da chave primária.

CESPE: No modelo ER, um atributo cujos valores são distintos para cada entidade individual de um conjunto de
entidades de determinado tipo é denominado atributo-chave. [CORRETO]

CESPE: O grau de um tipo de relacionamento é o número de tipos de entidades participantes desse tipo de
relacionamento. [CORRETO] Trata do conceito de grau para o modelo entidade-relacionamento que é o número de
entidades que participam de relação, por exemplo, no relacionamento ternário o grau é 3, uma vez que três entidades se
relacionam.

CESPE: No modelo de banco de dados relacional, o grau de uma relação é o número de atributos do esquema dessa
relação [CORRETO] O conceito de grau no Modelo Relacional é diferente do de Modelo E/R. No Modelo Relacional o grau é
dado pelo número de atributos, enquanto no E/R é dado pelo número de entidades

Figura: MER x Modelo Relacional

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Figura: No modelo relacional, ao número de atributos que constituem o esquema de uma relação dá-se o nome de
grau da relação. Por sua vez, o número de tuplas de uma relação designa-se por cardinalidade da relação.

Regras de transformação de um modelo entidade-


relacionamento (conceitual) para o modelo relacional lógico:
1) Uma entidade forte será representada por uma relação (tabela);

2) Para cada relacionamento binário M:N, será criado três relações: duas
relações a partir das entidades envolvidas e uma nova relação (tabela auxiliar).
A tabela auxiliar terá duas chaves estrangeiras referenciando as demais
relações, cada chave estrangeira corresponderá a chave primária das relações
referenciadas.

CESPE - Os relacionamentos muitos-para-muitos entre dois tipos de entidades, tais como relacionamentos entre
funcionários e projetos, não podem ser representados diretamente na modelagem E-R.
[ERRADO] O modelo entidade-relacionamento pode representar todas as restrições de cardinalidade: um para um,
um para muitos, muitos para um e muitos para muitos.

CESPE - O modelo relacional clássico não permite a realização de relacionamentos com multiplicidade de muitos para
muitos.
[CORRETO] Deve-se adicionar uma tabela para deixar o modelo relacional na forma 1:N

Entidade fraca é uma entidade dependente de


outra entidade. Geralmente tem uma associação de
1:N e a entidade fraca caracteriza-se por não possuir
um atributo chave. Por exemplo, observe o seguinte
diagrama que pretende modelar os funcionários de
uma empresa e o seu agregado familiar.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Em um conjunto de entidades sem os atributos necessários para formar uma chave primária, ou seja, em um conjunto de
entidades fracas, a chave primária é formada pela chave primária do conjunto de entidades fortes ao qual a existência do
conjunto de entidades fracas está vinculada e por um identificador do conjunto de entidades fracas.

[CORRETA] Imagine que você queira identificar filhos de uma entidade Pessoa! Como identificá-los (escolher o mais velho,
por exemplo) sem um identificador como a ordem de nascimento deles? Você realmente precisa de um identificador da
entidade fraca! Além, é claro, da chave primária da entidade forte! [WelkeyCosta]

Em um modelo entidade-relacionamento, um relacionamento entre duas entidades é sempre bidirecional.

[CORRETO] No MER não há unidirecinamento como na UML, entretanto esse não é o único conceito que diferencia o MER
da UML, na UML podemos representar a visibilidade de um atributo e representar os métodos, no MER não; etc.

Dependência Funcional: A  B, lê-se:


A funcionalmente determina B B funcionalmente depende de A B é função de A
Se o valor de uma atributo A permite descobrir o valor de outro atributo B, dizemos que A determina funcionalmente B
(A  B). Por exemplo: NumeroMatricula  NomeAluno, idade, curso. Assim, sempre que o NumeroMatricula se repetir
tem-se a repetição de NomeAluno, idade e curso;

Dependência Não Transitiva: Ocorre quando cada atributo for funcionalmente dependente apenas dos atributos
componentes da chave primária ou se todos os seus atributos não chave forem independentes entre si.

RESTRIÇÕES/ INTEGRIDADES
Uma restrição de unicidade (também chamada “integridade de entidade” ou unique constraint) é uma regra que previne
valores duplicados em uma ou mais colunas em uma tabela. Restrições de unicidade são chaves únicas e chaves primárias.
Por exemplo, uma restrição de unicidade pode ser definida em um identificador de fornecedor (supplier identifier) em
uma tabela de fornecedor (supplier table) para assegurar que o mesmo identificador de fornecedor não seja atribuído a
dois fornecedores (suppliers).

Uma restrição referencial é uma regra sobre valores em uma ou mais colunas em uma ou mais tabelas. Por exemplo, um
conjunto de tabelas compartilha informação sobre fornecedores de uma corporação. Ocasionalmente, um identificador
(ID) de fornecedor muda. Pode-se definir uma restrição referencial ditando que o ID do fornecedor na tabela deve (must)
igualar-se ao ID do fornecedor nas informações sobre o fornecedor. A restrição previne operações de inserção, atualização
ou deleção que poderiam de outro modo resultar no desaparecimento de informações do fornecedor.

Uma restrição de checagem (também chamada integridade de domínio) determina restrições em dados adicionados a
uma tabela específica. Por exemplo, a restrição pode ser adicionada para definir que o nível salarial de um empregado
nunca seja menor que um determinado valor quando os dados salariais forem adicinados ou atualizados em uma tabela
de informações de pessoal.

(CESPE/STF2008) Integridade referencial pode ser definida como uma condição imposta a um conjunto de atributos de uma
relação para que valores que apareçam nesse conjunto também apareçam em um certo conjunto de atributos de uma
outra relação. GAB: C

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Uma restrição de integridade UNIQUE KEY requer que cada valor em uma coluna ou
conjunto de colunas (chave) seja exclusivo — ou seja, duas linhas de uma tabela não
podem ter valores duplicados em uma coluna específica ou conjunto de colunas. A
coluna (ou conjunto de colunas) incluída na definição da restrição UNIQUE KEY é
chamada de chave exclusiva. Se a chave UNIQUE contiver mais de uma coluna, tal grupo
de colunas é considerado uma chave exclusiva composta. As restrições UNIQUE KEY
permitem a entrada de valores nulos a menos que você defina as restrições NOT NULL
para as mesmas colunas. Na realidade, qualquer número de linhas pode incluir valores
nulos para colunas sem restrições NOT NULL porque os valores nulos não são
considerados. Um valor nulo em uma coluna (ou em todas as colunas de uma chave
UNIQUE composta) sempre satisfaz uma restrição de UNIQUE KEY.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


OBS: Sem a opção ON DELETE CASCADE, a linha da tabela mãe não poderá ser deletada quando houver
referência a ela na tabela filha.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


A restrição CHECK (restrição de checagem ou domínio) define uma condição que cada linha deve satisfazer

Projeção: você pode usar o recurso de projeção da


linguagem SQL para escolher as colunas de uma tabela que
devem ser retornadas por uma consulta. É possível escolher
o número de colunas que for necessário da tabela. É
representada pela letra grega Pi. A projeção é alcançada
com a cláusula SELECT

Seleção ou Restrição: você pode usar o recurso de seleção da


linguagem SQL para escolher as linhas de uma tabela que
devem ser retornadas por uma consulta e pode usar vários
critérios para restringir as linhas exibidas. É representada
pela letra grega Sigma. A Seleção é obtida através da cláusula
WHERE

Junção: você pode usar o recurso de junção da linguagem SQL para reunir dados armazenados em diferentes tabelas,
criando um vínculo entre eles.

A álgebra relacional consiste de operações cujos nomes vêm da teoria de conjuntos e as principais são:

UNIÃO (UNION)
Que produz uma tabela resultado da união das tabelas operadas

INTERSEÇÃO (INTERSECT)
Que cria uma tabela resultado da interseção das tabelas operadas

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


DIFERENÇA (EXCEPT)
Que cria uma tabela contendo tuplas que pertencem à primeira tabela operada, mas não pertencem à segunda.

PRODUTO CARTESIANO
Que gera todas as combinações possíveis entre as t-uplas de duas tabelas.

Esquema
Descrição (textual ou gráfica) da estrutura de um banco de dados de acordo com um determinado modelo de
dados

Instância
Conjunto de dados armazenados em um banco de dados em um determinado instante de tempo.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


TRASAÇÃO (MUDANÇA DE ESTADO/COMPORTAMENTO)
Mudanças de estado em um banco de dados são efetuadas por transações. Uma transação é um conjunto de operações
que levam o banco de dados de um estado consistente a outro estado consistente. Mudanças de estado de um banco de
dados representam o comportamento desse banco de dados.

CONSISTÊNCIA
Na propriedade de Consistência, a execução de uma transação isolada (isto é, sem a execução concorrente de outra
transação) preserva a consistência do banco de dados. A Consistência garante que uma transação deve ser um programa
correto, e suas ações não devem resultar em violações de restrições de integridade definidas para o banco de dados.
Assegurar a propriedade de Consistência após uma transação é tarefa do programador que codifica a transação.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


PERSITÊNCIA (DURABILIDADE)
Depois de uma transação completar com sucesso (commit), as mudanças que ela fez no banco de dados persistem,
até mesmo se houver falhas no sistema. A Durabilidade é assegurada também pelo próprio sistema de banco de dados,
mais especificamente pelo componente de Gerenciamento de Recuperação.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


MODELO ENTIDADE RELACIONAMENTO (MER)

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


A notação pé-de-galinha (crow’s foot) é usada em metodologias alternativas e é representada:

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


MODELO DE DADOS VS ESQUEMA
Um modelo de dados é um conjunto de conceitos usados para se descrever dados.

Um esquema é uma descrição de uma determinada coleção de dados, descrição essa baseada num certo modelo de dados.

O modelo relacional é o modelo de dados mais utilizado atualmente.

Principal conceito do modelo relacional: relação, basicamente uma tabela com linhas e colunas. Cada relação (tabela) tem
um esquema relacional que descreve suas colunas.

CLASSIFICAÇÃO DOS MODELOS DE DADOS


 Há modelos de dados: físicos (baixo nível)

 Lógicos ou de implementação (nível intermediário):


Suportados por SGBSs comerciais e comumente usados
na implementação de sistemas de bancos de dados. O
modelo relacional é o modelo lógico mais usado hoje
(IBM DB2, Oracle, Sybase, Informix, Microsoft SQL
Server, etc.)

 Conceituais ou semânticos (alto nível) : Incorporam


construções que permitem capturar o significado da
realidade do negócio. O Modelo Entidades-
Relacionamentos (E-R) é o modelo semântico mais
difundido.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


CLASSIFICAÇÃO DAS VISÕES E ESQUEMAS

A arquitetura ANSI/SPARC prevê: múltiplas visões de


dados, um esquema conceitual (lógico) e um esquema
interno (físico).

 Os esquemas externos descrevem visões, ou views


(como os usuários vêem os dados).

 O esquema conceitual descreve a estrutura lógica


dos dados.

 O esquema interno descreve os arquivos e os


índices empregados

OBS: NÃO confundir esquema conceitual (lógico) que interliga a camada externa (visão) e a camada física com modelo
conceitual que usa o Entidade – Relacionamentos (MER) como modelo semântico dos dados.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


FUNÇÕES DE GRUPO

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


A função COUNT tem três formatos:
COUNT(*) COUNT(expr) COUNT (DISTINCT expr)

COUNT(*) retorna o número de linhas em uma tabela que satisfaz os critérios da instrução SELECT, inclusive linhas
duplicadas e linhas contendo valores nulos em qualquer uma das colunas. Se uma cláusula WHERE estiver incluída na
instrução SELECT, COUNT(*) retornará o número de linhas que satisfizer a condição na cláusula WHERE.

COUNT (expr) retorna o número de valores não-nulos na coluna identificada por expr.

COUNT (DISTINCT expr) retorna o número de valores exclusivos não-nulos da coluna identificada por expr.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Unindo uma Tabela a ela Mesma

Algumas vezes será necessário unir uma tabela a ela mesma. Na tabela acima, para localizar o nome do
gerente de cada funcionário, é necessário unir a tabela EMP a ela mesma ou executar uma autojunção. Por exemplo,
para localizar o nome do gerente de Blake, é necessário:

• Localizar Blake na tabela EMP consultando a coluna ENAME.


• Localizar o número do gerente de Blake consultando a coluna MGR. O número do gerente de Blake é 7839.
• Localizar o nome do gerente como o EMPNO 7839 consultando a coluna ENAME. O número do funcionário King é
7839, então King é gerente de Blake.

Neste processo, você analisa a tabela duas vezes. Na primeira vez, você consulta a tabela para localizar Blake
na coluna ENAME e o valor MGR de 7839. Na segunda vez, você consulta a coluna EMPNO para localizar 7839 e a
coluna ENAME para localizar King.

DICA: Em se tratando de autojunções, sempre vai haver uma inversão durante a cláusula WHERE, neste
exemplo: trabalhador. NúmeroGerente = gerente. NúmeroTrabalhador.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Às vezes, é necessário dividir a tabela de informações em grupos menores. Isso pode ser feito com o uso da cláusula
GROUP BY.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


No exemplo, a cláusula WHERE poderia especificar as linhas a serem recuperadas. Já que não há uma cláusula
WHERE, todas as linhas são recuperadas por default.

A cláusula GROUP BY especifica como as linhas devem ser agrupadas. As linhas são agrupadas pelo número do
departamento, de forma que a função AVG que esteja sendo aplicada à coluna de salários calcule o salário médio para
cada departamento

Sempre que você usa uma mistura de itens individuais (DEPARTMENT_ID) e funções de grupo (COUNT) na mesma instrução
SELECT, deve incluir uma cláusula GROUP BY que especifique os itens individuais (neste caso, DEPARTMENT_ID).

Qualquer coluna ou expressão na lista SELECT que não seja uma função agregada deve estar na cláusula GROUP BY.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


CONSULTA VÁLIDA
SELECT department_id, AVG(salary)
FROM employees
HAVING AVG (salary) > 8000
GROUP BY department_id;

Da mesma forma que você usa a cláusula WHERE para restringir as linhas que seleciona, pode usar a cláusula HAVING para
restringir grupos.

Uma subconsulta é uma instrução SELECT que é incorporada a uma


cláusula de outra instrução SELECT. Você pode desenvolver instruções
sofisticadas a partir de instruções simples usando subconsultas. Elas
poderão ser muito úteis quando você precisar selecionar linhas de
uma tabela com uma condição que dependa dos dados na própria
tabela.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


É possível colocar a subconsulta em várias cláusulas SQL, incluindo as cláusulas WHERE, HAVING e
FROM

Na sintaxe: o operador inclui uma condição de comparação como >, = ou IN

Observação: as condições de comparação subdividem-se em duas classes: operadores de uma única


linha (>, =, >=, <, <>, <=) e operadores de várias linhas (IN, ANY, ALL).

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Para corrigir o erro acima, altere o operador “ = “para “IN”.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


“< ANY” significa menos que o máximo. ”>ANY” significa mais que o mínimo. “=ANY” equivale a IN.
“> ALL” significa mais que o máximo e “<ALL” significa menos que o mínimo. “<>ANY” equivale a NOT IN

A função SYSDATE é usada para obter a data e a hora atuais.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com
Se o registro pai que você tentar deletar tiver registros filhos, você receberá a mensagem ORA-02292
de violação de registro filho encontrado. Se a cláusula “on delete cascate” for especificada para chave
estrangeira, a linha poderá ser excluída sem problema.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


A Instrução MERGE:
Fornece a habilidade de atualizar ou inserir dados condicionalmente em uma tabela de banco de dados. Ela executa uma
operação UPDATE se a linha existir ou uma operação INSERT se for uma nova linha, dessa forma:
 Evita-se atualizações separadas
 Aumenta o desempenho e a facilidade de utilização
 É útil em aplicações de data warehousing.

QUANDO UMA TRANSAÇÃO INICIA E TERMINA?


Uma transação inicia quando a primeira instrução DML é encontrada e termina quando ocorre um dos seguintes eventos:
• Uma instrução COMMIT ou ROLLBACK é emitida
• Uma instrução DDL, como CREATE, é emitida
• Uma instrução DCL é emitida
• Ocorre falha no computador ou no sistema
Depois que uma transação termina, a próxima instrução SQL executável automaticamente inicia a próxima transação.
Uma instrução DDL ou DCL é submetida a commit automaticamente e, portanto, encerra implicitamente uma transação.
O objetivo da consistência de leitura é garantir que cada usuário veja os dados como eles eram no último commit, antes do
início da operação DML.

Todas as alterações feitas nos dados durante a transação são


temporárias até que a transação seja submetida a commit.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Estado dos dados antes de as instruções COMMIT ou ROLLBACK serem emitidas:
• As operações de manipulação de dados afetam primeiramente o buffer do banco de dados; assim, o estado
anterior dos dados pode ser recuperado.
• O usuário atual pode revisar os resultados das operações de manipulação de dados consultando as tabelas.
• Os outros usuários não poderão ver os resultados das operações de manipulação de dados feitas pelo usuário
atual. O servidor Oracle institui a consistência de leitura para garantir que cada usuário veja os dados exatamente
como eram no momento do último commit.
• As linhas afetadas são bloqueadas; os outros usuários não poderão alterar os dados contidos nessas linhas.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


Junção Interna (Inner Join)

Uma Junção Interna é caracterizada por uma seleção que retorna apenas os dados que atendem às
condições de junção, isto é, quais linhas de uma tabela se relacionam com as linhas de outras tabelas. Para isto
utilizamos a cláusula ON, que é semelhante à cláusula WHERE. Podemos especificar duas formas diferentes de
expressar esta junção: a explícita utiliza a palavra JOIN, enquanto a implícita utiliza ',' para separar as tabelas a
combinar na cláusula FROM do SELECT. Então sempre é gerado o produto cruzado do qual são selecionadas as
combinações que cumpram a cláusula WHERE.

Left Outer Join (ou LEFT JOIN)

O resultado desta seleção sempre contém todos os registros da tabela esquerda (isto é, a primeira tabela
mencionada na consulta), mesmo quando não existam registros correspondentes na tabela direita. Desta forma,
esta seleção retorna todos os valores da tabela esquerda com os valores da tabela direita correspondente, ou
quando não há correspondência retorna um valor NULL.

Full Outer Join

Esta operação apresenta todos os dados das tabelas à esquerda e à direita, mesmo que não possuam
correspondência em outra tabela. A tabela combinada possuirá assim todos os registros de ambas as tabelas e
apresentará valores nulos para os registros sem correspondência.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


QUESTÕES DE
CONCURSOS

1- (ANAC2009/CESPE) Um banco de dados relacional é um banco de dados em que a estrutura tem a forma de
tabelas. Formalmente uma relação R definida sobre n conjuntos D1, D2, ..., Dn (Domínio - conjunto de valores
obrigatoriamente distintos) é um conjunto de n-tuplas (ou simplesmente tuplas) <d1,d2, ..., dn> tais que d1
pertence a D1, d2 pertence a D2, ..., dn pertence a Dn.

2- Para se conseguir filtrar valores resultantes de expressões agregadas, foi adicionada à SQL a cláusula:
A) AVG;
B) SUM;
C) SELECT;
D) WHERE;
E) HAVING.

3- (INFRAERO 2009/fcc) As redundâncias de dados possíveis em um banco de dados devem ser justificadas por uma
necessidade específica e num determinado momento do projeto, que são, respectivamente,
(A) melhor desempenho e projeto físico.
(B) maior integridade e projeto lógico.
(C) maior integridade e projeto físico.
(D) melhor desempenho e projeto conceitual.
(E) mais disponibilidade e projeto lógico.

4- (INFRAERO 2009/FCC) Um modelo relacional contendo um autorrelacionamento de uma entidade, numa


associação N:N, que também se relaciona com outra entidade, numa associação 1:N, será implementado
fisicamente por meio de
(A) quatro tabelas.
(B) três tabelas.
(C) nenhuma tabela, tratando-se de uma impossibilidade.
(D) uma tabela, apenas.
(E) duas tabelas.

5- [ESAF 2002] Se uma determinada tabela T1 possui uma chave estrangeira, a qual é chave primária em uma tabela
T2, então ela deve ser igual a um valor de chave primária existente em T2 ou ser nula.

6- Dadas duas tabelas relacionais idênticas quanto à seguinte estrutura e conteúdo definidas como TabA e TabB:

Id Nome
1 N1
2 N2
3 N3
4 N4

Sabendo que a chave primária de identificação única é a coluna Id (válido para ambas as tabelas), a seguinte expressão
SQL:

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


SELECT TabA.Nome, TabB.Nome
FROM TabA, TabB
WHERE TabA.Id NOT IN (TabB.Id)

exibirá como resultado:

(A) nenhuma linha.


(B) 4 linhas.
(C) 8 linhas
(D) 10 linhas.
(E) 12 linhas.

7 – (Analista – Bacen/2006) Um processo que tem comandos Select, Insert, Update ou Delete, para o controle de
concorrência, requer, respectivamente, locks

A) S, S, X ou X
B) X, IX, U ou S
C) S, IX, U ou X
D) X, S, S ou S
E) S, X, X ou X

8- A modificação num banco de dados que pode evitar violação de integridade referencial é executar um teste similar
ao:
a) inserir, se a inserção da relação 2 modificar a chave estrangeira.
b) remover, se a inserção da relação 2 modificar a chave primária.
c) remover, se a atualização da relação 1 modificar a chave primária.
d) remover, se a atualização da relação 2 modificar a chave estrangeira.
e) remover, se a remoção da relação 1 modificar a chave estrangeira.

9- O mecanismo de armazenamento em um banco de dados relacional é


a) partições e subpartições
b) segmentos de rollback
c) segmentos, extensões e blocos
d) usuários e esquemas
e) tabelas, colunas e tipos de dados

10 - Toda chave estrangeira que não é uma chave primária ou não faz parte de uma chave primária composta
representa um relacionamento
a) 1:1 ou 1:N.
b) 1:N ou M:N.
c) 1:1, somente.
d) 1:N, somente.
e) M:N, somente.

11- A estrutura lógica de armazenamento nas bases de dados Oracle é representada na seqüência hierárquica de
(A) segmentos, blocos de dados e extensões.
(B) segmentos, extensões e blocos de dados.
(C) extensões, segmentos e blocos de dados.
(D) extensões, blocos de dados e segmentos.
(E) blocos de dados, segmentos e extensões.

12 - Com respeito ao nível lógico (conceitual e externo) dos bancos de dados relacionais normalizados é correto
afirmar que:

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


(A) As conexões entre tabelas são vistas pelo usuário, na forma de ponteiros.
(B) Todo o conteúdo de informação é representado de um e somente um modo, ou seja, como valores explícitos de
colunas em linhas de tabelas.
(C) Um relacionamento do tipo N:M implicará em chaves estrangeiras multivaloradas nas tabelas relacionadas.
(D) Um relacionamento do tipo 1:N implicará em que as chaves do lado N serão chaves estrangeiras multivaloradas na
tabela representada pelo lado 1.
(E) Um relacionamento do tipo 1:1 não pode ser implementado em tabelas relacionais.

13- Via de regra, são mantidos no catálogo de um banco de dados


(A) os esquemas interno e externo e mapeamentos correspondentes, mas não o conceitual.
(B) o esquema conceitual, mas não o externo e nem o interno.
(C) os esquemas conceitual e interno e mapeamentos correspondentes, mas não o externo.
(D) os esquemas externo, conceitual e interno e todos os mapeamentos correspondentes.
(E) o esquema interno, mas não o externo e nem o conceitual.

14- No projeto de um banco de dados, a construção de um modelo lógico é feita pela transformação do seu modelo
conceitual. O modelo lógico define como o banco de dados será implementado em um SGBD específico.

15 – CESPE
1 CREATE TABLE PAISES (
2 CODIGO VARCHAR(3) PRIMARY KEY,
...
9 CREATE TABLE BARREIRAS_TECNICAS (
...
17 CONSTRAINT FK_PAIS FOREIGN KEY (PAIS) REFERENCES PAISES(CODIGO)

"Conforme o modelo físico desse esquema de dados, a relação de cardinalidade estabelecida entre
BARREIRAS_TECNICAS e PAISES é 1:n."

16 - (FCC/INFRAERO 2009) Considere que um modelo relacional normalizado até a


I. 3FN contém apenas relacionamentos N:M.
II. 3FN contém apenas relacionamentos 1:1 e 1:N.
III. 3FN não pode conter dependências funcionais entre atributos não-chave.
IV. 1FN ou 2FN não pode conter dependências funcionais entre atributos não-chave e nem relacionamentos
N:M.

Está correto o que se afirma APENAS em


(A) I e III.
(B) II.
(C) I.
(D) II, III e IV.
(E) II e III.

17- Em uma organização de ensino, sabendo que um mesmo professor pode ministrar mais de uma disciplina para
seus alunos, para responder à questão: qual professor ministra aulas de bancos de dados para os dez alunos mais
aplicados nessa disciplina? é necessário modelar
(A) um relacionamento ternário entre professor, disciplina e aluno.
(B) dois relacionamentos binários, sendo um entre professor e disciplina e outro entre disciplina e aluno.
(C) dois relacionamentos binários, sendo um entre professor e disciplina e outro entre professor e aluno.
(D) dois relacionamentos binários, sendo um entre professor e aluno e outro entre disciplina e aluno.
(E) três relacionamentos binários sendo um entre professor e aluno, outro entre disciplina e aluno e outro entre
professor e disciplina.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


18 – (TRE-SE/FCC) - Considere o enunciado: "Um analista usa exatamente um notebook para cada projeto. Cada
notebook pertence a um analista para cada projeto. Observe que um analista ainda pode trabalhar em muitos projetos
e usar diferentes notebooks para diferentes projetos".

O diagrama entidade relacionamento a seguir:

a) representa corretamente o enunciado.


b) deveria considerar a cardinalidade "muitos" em Analista.
c) deveria considerar a cardinalidade "muitos" em Notebook.
d) deveria considerar a cardinalidade "muitos" em Projeto e em Notebook.
e) deveria considerar a cardinalidade "muitos" nas três entidades envolvidas.

19 – CESPE - O modelo lógico de um banco de dados corresponde a um modelo abstrato, que descreve a estrutura de
um banco de dados na forma independente de um sistema de gerência de banco de dados particular

20 - CESPE - A independência lógica de dado permite se modificar o esquema conceitual de um banco de dados sem a
necessidade de se reescrever os programas aplicativos. Esse tipo de independência dos dados é mais fácil de ser
alcançada que a independência física, porém os programas são bastante dependentes da estrutura lógica dos dados
que eles acessam.

21 - (CESPE TRT 10ª região / 2004) Um atributo multivalorado pode ter um ou mais valores de uma dada ocorrência de
uma entidade. Os atributos derivados também podem ter um ou mais valores, mas são atributos normalmente
calculados a partir de atributos simples

22 CESPE - Um ou mais atributos {A1, A2,..., An} é uma chave primária em uma relação se esses atributos
funcionalmente determinam todos os outros atributos na relação (duas tuplas distintas da relação não podem ter os
mesmos valores de A1, A2,..., An) e não há um subconjunto de {A1, A2,..., An} que funcionalmente determine todos os
outros atributos da relação.

23 – CESPE - Considerando-se o esquema e as dependências funcionais a seguir, é correto afirmar que o par composto
por matricula e nome é uma chave candidata.
Esquema_alunos = (matricula, nome, curso, telefone)
matricula, nome -> curso, telefone
matricula -> nome, curso, telefone

24 - Seja o seguinte grupo de tabelas de um sistema:


fabricante (idfabricante, nome, endereço)
peça (idmodelo, nome, descrição)
constrói (idmodelo (FK), idfabricante (FK), data, quantidade, cor)

Um programador monta a seguinte consulta SQL:

SELECT f.nome, count(distinct c.idmodelo) as num


FROM fabricante f INNER JOIN constroi c
ON f.idfabricante = c.idfabricante
WHERE c.cor = 'VERMELHO'
GROUP BY f.nome

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


HAVING count(distinct c.idmodelo) > 10
ORDER BY num DESC

Qual o retorno dessa consulta?

(A) Os nomes dos fabricantes e a respectiva quantidade total de peças construídas na cor vermelha, desde que, em
cada data, a quantidade construída seja maior que 10; o relatório estará ordenado de forma descendente pela
quantidade de peças construídas.
(B) Os nomes dos fabricantes que já construíram mais de 10 modelos diferentes de peças 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á construíram pelo menos uma peça na cor vermelha; o relatório estará ordenado
de forma descendente na quantidade de modelos diferentes construídos.
(D) Todos os nomes dos fabricantes e a respectiva quantidade de modelos diferentes de peças vermelhas que já
construíram; se um fabricante nunca construiu uma peça na cor vermelha, a contagem mostrará zero.
(E) Todos os nomes dos fabricantes e a respectiva quantidade de modelos diferentes construídos, não importando a
quantidade de peças, cor ou a data da construção; o relatório estará ordenado de forma descendente na quantidade
de peças.

25 – (UFRJ2008)Considere um banco de dados que contém dados sobre pessoas e armazena os atributos Nome, CPF,
Endereço, Número de celular. Sabendo-se que pode haver homônimos, que mais de uma pessoa pode dividir o mesmo
endereço, que CPF e número de celular pertencem somente a uma pessoa, e que uma pessoa pode ter mais de um
celular, pode-se concluir que a dependência funcional que NÃO é válida neste modelo é:
(A) CPF → Nome;
(B) Número celular → CPF;
(C) CPF → Nome, Endereço;
(D) Nome → Número celular;
(E) Número celular → Endereço.

26 - As chaves estrangeiras implementam a manutenção das referências de integridade em bancos de dados


relacionais. Algumas implementações permitem estabelecer as ações a seguir quando essas referências são violadas. O
comando

alter table T1
add constraint c1 foreign key (a) references T2
on delete cascade

estabelece que:

(A) a remoção de um registro r em T2 provoca a remoção dos registros de T1 associados a r;


(B) a atualização de um registro r em T2 provoca a atualização dos registros de T1 associados a r;
(C) a remoção de um registro r em T1 provoca a remoção dos registros de T2 associados a r;
(D) a remoção de um registro r em T2 provoca um erro em todos os demais comandos se houver registros em T1
associados a r;
(E) a remoção de um registro r em T1 provoca um erro em todos os demais comandos se houver registros em T2
associados a r.
27 - Considere as seguintes dependências funcionais:

A→B
B→A
A→C

Um esquema relacional R (A,B,C) correto para esses atributos teria:

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


(A) uma chave, formada por A;
(B) duas chaves, formadas por A e B;
(C) três chaves, formadas por A, B e C;
(D) uma chave, formada pela concatenação de A e B;
(E) uma chave, formada pela concatenação de A, B e C.

28 - Com relação aos conceitos básicos de banco de dados, é correto afirmar que
A) a chave primária é um atributo de uma tabela que, mesmo com valores nulos, identifica univocamente uma coluna.
B) o modelo relacional refere-se à visualização física e não lógica dos dados. Está relacionado ao nível conceitual
interno. A teoria relacional não diz nada sobre o nível externo, preocupa-se somente com o armazenamento e
manipulação dos dados executados pelo SGBD.
C) chaves estrangeiras são os elos de ligação entre as tabelas. Uma coluna definida como chave estrangeira deve ser
chave primária em outra tabela.
D) um banco de dados relacional é um conjunto de arquivos seqüenciais que são acessados e modificados por
operações que manipulam a álgebra relacional. Tais operações só podem ser executadas se atenderem à regra da
primeira forma normal, devendo-se manipular apenas um dado de cada vez.
E) uma coluna definida como chave-estrangeira em uma tabela-destino não pode aceitar valores nulos e, essa mesma
tabela-destino pode ter uma e somente uma coluna definida como chave-estrangeira.

29 - CESPE - Select, project, union, set difference, produto cartesiano e rename são operações da álgebra relacional. As
operações select, project e rename são chamadas operações primárias, pois operam uma única relação, as outras
operam um par de relações e são chamadas operações binárias.

30 - (TCU2007/CESPE) - Em uma aplicação de banco de dados, scripts escritos na linguagem SQL nativa de um SGBD
podem representar: o esquema conceitual dessa aplicação; a visão externa dos usuários finais; e as características
físicas de armazenamento do esquema interno.

31 – (STF2008/CESPE) As características do atributo CEP — numérico, seqüencial e não repetido — permitem utilizá-lo
como chave primária em um banco de dados destinado ao cadastro de clientes de uma loja.

32 – (TRF/FCC2007) Em relação aos bancos de dados relacionais, é correto afirmar que

a) seu nível interno não é relacional.


b) o esquema conceitual é escrito usando-se a DDL interna.
c) as visões interna e externa são idênticas.
d) a visão conceitual é uma representação de baixo nível do banco de dadospor inteiro.
e) a visão externa define como e em que seqüência física os dados estão armazenados.

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

Uma empresa contrata um profissional para trabalhar em um projeto recebendo um determinado salário.
Sabe-se que um projeto pode ter a participação de diversas empresas e que um profissional pode desempenhar várias
atividades nesse projeto (p.ex. operador de guindaste e pedreiro).

Que modelo ER representa corretamente essa descrição?

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

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


34 – (Os médicos conveniados atendem diversos funcionários do Tribunal em consultas que podem ser emergenciais.
De qualquer forma, toda consulta deve ser registrada para identificar o médico que atendeu determinado funcionário.
Assim, é possível definir um modelo entidade-relacionamento representado pelo diagrama abaixo, dispensando-se,
para esta finalidade, a representação dos atributos de cada entidade.

O departamento de atendimento social do Tribunal deseja registrar os medicamentos existentes, de acordo com a
tabela do Ministério da Saúde, a fim de obter informações a respeito dos medicamentos receitados pelos médicos em
cada consulta efetuada. Obviamente, podem existir consultas em que nenhum medicamento é receitado. Dessa
forma, respeitados os fundamentos do modelo entidade-relacionamento, será necessário criar:

(A) o atributo multivalorado “Medicamento” na entidade “Funcionário”, que indique quais medicamentos lhe foram
receitados em uma consulta.
(B) uma terceira entidade denominada “Medicamento”, que será relacionada à “Consulta”. Como não é possível
relacionar dois relacionamentos, “Consulta” se converterá em Entidade Associativa.
(C) o atributo multivalorado “Medicamento” no relacionamento “Consulta”, que indique quais medicamentos foram
receitados para cada funcionário em cada consulta.
(D) o atributo multivalorado “Medicamento” na entidade “Médico”, que indique quais medicamentos ele receitou em
cada consulta.
(E) o atributo monovalorado “Medicamento” em cada uma das entidades “Médico” e “Funcionário” e relacioná-los
entre si, a fim de responder quais medicamentos um médico receitou a quais funcionários.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


RESPOSTAS

1 – [ERRADO]
O problema está em falar que as tuplas estão contidas no domínio. Na verdade, são os atributos que estão relacionados ao
domínio. Um atributo é um par domínio/valor. Domínio: conjunto de valores atômicos – cada valor é indivisível no diz que
respeito ao modelo relacional. Em geral, o domínio é designado como tipo de dado. [Misael Ferreira]

2 - Gab: Letra E) HAVING


Exemplo do uso HAVING:
select count(cod_cliente), cod_prod
from clienteproduto
where cod_cliente > 1  somente se o código do cliente for maior que 1 (esse filtro é feito por registro)
having count(cod_cliente) > 1
group by cod_prod  somente se o total do grupo count(cod_cliente) por produto for maior que 1

3 - Gab. Letra A
Quando falamos de redundância de dados estamos falando de desnormalização. A desnormalização é feita com o objetivo
de aumentar a performance da aplicação. Exemplo: Para saber o total de uma compra, em um sistema totalmente
normalizado, provavelmente o sistema deveria ler pelo menos três tabelas (compra, detalhe da compra, produto), calcular
os preços unitários * quantidades e somá-los. Isso, em um banco com muitos registros demoria alguns segundos a mais do
que se ao projetar o banco de dados (modelo físico ou projeto físico) já tivessemos previsto o campo TotalDaCompra.
[Natércia Cristiane]

4 - Gab: Letra B
uma associação N:N, deve se criar uma tabela com as chaves das duas tabelas do relacionamento N:N (o que totalizaria 3
tabelas), porém no caso do problema como o ocorre o autorrelacionamento, há na verdade DUAS TABELAS (1 tabela
autorrelacionada e 1 tabela para o autorrelacionamento N:N). No problema ele diz que há também um relacionamento
1:N com outra entidade. Num relacionamento 1:N normalmente não há geração de uma tabela de relacionamento. O que
ocorre é que a tabela do lado "N" da associação incorpora a chave do lado "1" da associação. Portanto, há *3 tabelas* (1
tabela autorrelacionada, 1 tabela da associação de autorrelacionamento N:N e 1 tabela que se liga à tabela
autorrelacionada numa associação 1:N) [Anderson Rodrigues Ferreira]

5 - [CORRETO]
Cenário 1:
Cliente(1,N)-----(1,N)LinhaCrédito
Neste caso, uma empresa X somente efetua uma venda caso o seu cliente possua uma linha de crédito. Trata-se de um
relacionamento mandatário, em que não poderá existir valores nulos.

Cenário 2:
Cliente(1,N)-----(0,N)LinhaCrédito
Neste caso, uma empresa X pode efetuar uma venda mesmo sem uma linha de crédito concedida ao cliente. Trata-se de
um relacionamento NÃO mandatário, que poderá ser expresso por valores não nulos (cliente com linha de crédito) ou por
valores nulos (cliente sem linha de crédito).
Esse segundo cenário é o que trata a questão!

6 - Gab: Letra E) 12 linhas

A resposta seria nenhuma linha se a consulta fosse algo como:


SELECT TabA.Nome , TabB.Nome

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


FROM TabA , TabB
WHERE TabA.Id NOT IN (Select Id FROM TabB)
Da forma como a consulta do enunciado foi elaborada, o teste "TabA.Id NOT IN (TabB.Id)" será realizado para todas as
combinações de TabA.Id e TabB.Id. 4x4 = 16 linhas menos as 4 linhas que coincide nas duas tabelas = 12.

7 - Gab: Letra E
Lock do tipo X = exclusive lock (lock de escrita)
Lock do tipo S = shared lock (lock de leitura)

8 - Gab : Letra C
A regra de integridade referencial nos diz que o banco de dados não pode conter quaisquer valores de chaves estrangeiras
não correspondentes, ou seja, a restrição nos diz que se 2 faz referência a 1, então 1 deve existir. Se eu modificar o valor
da chave primária de 1, então eu tenho de remover as entradas na relação 2. Portanto, letra C. [Diofagor]

9 - Gab: Letra E
O modelo relacional não se preocupa com a representação dos dados no nível físico, se preocupa, sim, com o modelo
lógico ou conceitual. [diofagor]

10- Gab: Letra A


A letra "B" está errada porque em um relacionamento M-N as chaves estrangeiras fazem parte da chave composta da 3a.
tabela, que obrigatoriamente deve existir. E no comando da questão ele fala "Toda chave estrangeira que não é uma
chave primária ou não faz parte de uma chave primária composta representa um relacionamento". [Farouk2007]

11 - Gab: Letra B
A estrutura do Oracle tem, de fato, esta hierarquia.
Segmentos  um conjunto de extensões alocadas a uma estrutura de dados específica
Extensões  número específico de blocos de dados contíguos
Blocos de dados  o nível mais fino de granularidade, que é um número fixo de bytes [Pedrosa]

12 - Gab: Letra B
(A) Não existem “ponteiros” em SGBDs relacionais.
(C) Não existem “chaves estrangeiras multivaloradas”.
(D) A chave estrangeira, para relacionamentos 1:N, sempre fica do lado N. Além do mais, não existem “chaves estrangeiras
multivaloradas”.
(E) É perfeitamente possível implementar um relacionamento 1:1 em SGBDs relacionais. [Pedrosa]

13 - Gab: Letra D
O catálogo contém informações sobre todos os três níveis de esquemas de banco de dados: externo (visões), conceitual
(tabelas da base) e interno (descrição de armazenamento e índices).

14 - [CORRETO]
Entenda modelo lógico como “modelo relacional” e modelo conceitual como “modelo entidade relacionamento” . Não
confunda com o conceito de “esquema lógico conceitual” e as visões externas .

15 – [ERRADO]
Codigo é a chave primária da tabela PAISES, portanto podemos ter apenas um único valor. Como PAIS não é UNIQUE,
então pode ter mais de um valor inserido na relação BARREITAS_TECNICAS referenciando um único valor na relação
PAISES. Assim, resposta correta: “...a relação de cardinalidade estabelecida entre BARREIRAS_TECNICAS e PAISES é N: 1”

16 - Gab: Letra E) II e III.


Normalização é Modelo relacional. Em modelo relacional não há relacionamento N x M, pois este existe no MER. [Regis]
Um relacionamento M:N no fundo não é nada mais que dois relacionamentos sendo 1:N e outro 1:M [Jorge Rafael]

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


17 - Gab: Letra A
18 - Gab: Letra A

Depois de tanta mistura. O que a questão quer de fato é que a mesma tripla (notebook, analista, projeto) não se repita.
Então para que isso aconteça, o relacionamento entre esses objetos tem de ser "um para um" mesmo.
I) Veja que o enunciado diz que "Um analista usa exatamente um /notebook /para cada projeto". Ou seja 1 Analista usa
1 notebook para 1 determinado projeto.
II) Em "cada notebook pertence a um analista para cada projeto". O enunciado nos diz que 1 notebook pertence a 1
analista para 1 determinado projeto.
III) O "analista ainda pode trabalhar em muitos projetos e usar diferentes /notebooks /para diferentes projetos". Ou seja,
isto pode acontecer:
1 Analista 'A1' trabalha em 1 projeto 'P1' usando 1 notebook 'N1'
1 Analista 'A1' trabalha em 1 projeto 'P2' usando 1 notebook 'N1'
1 Analista 'A2' trabalha em 1 projeto 'P1' usando 1 notebook 'N2'
1 Analista 'A2' trabalha em 1 projeto 'P3' usando 1 notebook 'N1'

Portanto, apesar de o mesmo notebook pode ser usado em diferentes projetos por um mesmo analista, este mesmo
notebook não pode ser usado no mesmo projeto para outros analistas. Então, a relação continua sendo 1 notebook para 1
analista para 1 determinado projeto.
Dessa forma, a figura colocada por você está correta. A letra 'a' é a correta.

Analisando a alternativa que confunde 'D': se colocássemos “muitos” em Projeto e em Notebook estaríamos dizendo que
um "analista usa muitos notebooks em muitos projetos". Isto não é totalmente verdade, pois isso significaria dizer que isto
é possível:
1 Analista 'A1' trabalha em 1 projeto 'P1' usando 1 notebook 'N1'
1 Analista 'A1' trabalha em 1 projeto 'P2' usando 1 notebook 'N2'
1 Analista 'A1' trabalha em 1 projeto 'P3' usando 1 notebook 'N3'

Até aí tudo bem, o problema, é que também teríamos isto:


1 Analista 'A1' trabalha em 1 projeto 'P1' usando 1 notebook 'N1'
1 Analista 'A2' trabalha em 1 projeto 'P1' usando 1 notebook 'N1'
1 Analista 'A3' trabalha em 1 projeto 'P1' usando 1 notebook 'N1'

Com a modelagem de relacionamento binário, teríamos um relacionamento 1 Analista para N projetos, com 1 Analista
para N notebooks. O problema é que quando efetuamos um relacionamento ternário, temos de pensar nos 3 ligados ao
mesmo tempo. [diofagor]

19 - [ERRADO]
Assim como o modelo físico, o modelo lógico também é dependente do SGBD

20 - [ERRADO]
A independência lógica dos dados é mais difícil de ser alcançada do que a independência física, porém os programas são
bastante dependentes da estrutura lógica dos dados que eles acessam. [Danilo Franco]

21 – [ERRADO]
Atributo multivalorado é aquele que pode receber uma lista de valores ao mesmo tempo. Por exemplo, número de
telefones de uma pessoa. Esse campo envolve o número residencial e número de celular.
Os atributos derivados são aqueles que seus valores são obtidos a partir de outros atributos, por exemplo, imagine que
você alugará um dvd. Você pagará um valor X caso ele seja lançamento, senão pagará um valor Y, ou seja, o preço do dvd
derivará do tipo do dvd (lançamento ou não).
O erro da questão é dizer que “os atributos derivados também podem ter um ou mais valores “. O atributo derivado, de
acordo com cada cálculo, gera um único valor. Na idade, por exemplo, só podemos ter uma resposta. Idade que você
entrou na faculdade, idade atual, mas tudo com base na data de nascimento.

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


22 - [ERRADO]
A definição dada é a de uma chave candidata que pode, ou não, ser primária. Na maioria das vezes escolhemos a nossa
chave primária a partir da chave candidata, mas não é obrigatório. [diofagor]

23 - [ERRADO]
Para que um atributo seja uma chave candidata, ele deve possuir as seguintes características:
1) Unicidade --> identificar o restante das tuplas unicamente
2) Irredutibilidade --> não poderá haver um subconjunto de atributos que formam a chave.
Pela questão vemos que {matricula, nome} não formam uma chave candidata, pois {matricula} é um subconjunto de
{matricula, nome} e possui a propriedade de unicidade. Sendo assim, {matricula, nome} não é irredutível. [diofagor]

24 - Gab: Letra B

25 – Gab: Letra D
Se um atributo que é uma chave candidata, então significa dizer que a partir dele podemos identifica os demais atributos.
Ou seja, os demais atributos possuem uma dependência funcional em relação as chaves candidatas.
No problema proposto, as chaves candidatas para identificar individualmente uma pessoa são: CPF e número de celular,
pois o enunciado nos diz que " CPF e número de celular pertencem somente a uma pessoa".

Dessa forma:
a) CPF → Nome (Válida, uma vez que CPF é uma chave candidata)
b) Número celular → CPF (Válida, uma vez que número celular é uma chave candidata)
c) CPF → Nome, Endereço (Válida, uma vez que o CPF é uma chave candidata)
d) Nome → Número celular (Inválido, uma vez que o Nome não é uma chave candidata, pois no próprio enunciado tem
dizendo que pode haver homônimos)
e) Número celular → Endereço (Válido, pois número celular é uma chave candidata)

26 – Gab: Letra A
A remoção de um registro r em T2 (mãe) provoca a remoção dos registros dos registros filhos (T1) devido a cláusula ON
DELETE CASCADE.

27 – Gab: Letra B
Percebam que temos a dependência funcional implícita B -> C (visto que A->C e B->A)
Percebam também que a questão não fala em chave primária (apesar de que esta é a primeira chave que vem em mente,
não é a única). Logo, tanto A quanto B podem ser chaves (mas chaves candidatas). Se a questão pedisse qual é a chave
primária, tanto Letra A quanto a letra B poderiam ser respostas. [Nathan Silva]

28 - Gab: Letra C
a)chave primária não admite valores nulos
b) O modelo relacional refere-se a visualização lógica e está igualmente relacionado ao nível lógico (o MER está
relacionado ao nível conceitual/semântico).
c) Menos errada. Caberia recurso, pois uma coluna definida como chave estrangeira pode ser chave candidata em outra
tabela e não apenas chave primária.
d) Um banco de dados relacional não possui nenhuma relação com a forma de acesso físico aos arquivos, que podem ser
seqüenciais, direta ou indexada.
e) Chaves estrangeiras podem ter valores nulos

29 – [CERTO]
Os operadores UNION, INTERSECT e EXCEPT operam relações binárias e correspondem às relações de união, intersecção e
diferença da álgebra. Assim como na álgebra, as relações participantes das relações precisam ser compatíveis, isto é, elas
precisam ter o mesmo conjuntos de atributos.
30 - [CERTO]
O esquema conceitual é representado por meio de DDL (data definition language) , portanto, é sim possível representar

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com


por meio de sql. As views também são representadas por VDL (vision definition language) e o esquema interno é
representado por SDL (storage definition language) - geralmente cada SGBD usa um formato proprietário p/
armazenamento. [always.learning]

31 – [ERRADO]
De fato, o CEP é não repetível, pois nenhuma rua terá dois CEPs e uma rua não terá o CEP igual a outra. Nesse sentido, o
CEP é numérico, seqüencial e não repetido, como afirma a questão. Entretanto, ela quer utilizar esse atributo como chave
primária para identificar os clientes de uma loja. Aí encontra-se o erro dessa questão, pois uma pessoa que mora na Rua X
tem o CEP Z e o vizinho dessa pessoa, como também mora na Rua X, possuirá o CEP Z. Logo, o atributo em questão não
poderá ser usado para identificar pessoas, apenas ruas. [diofagor]

32 – Gab: Letra A
a) Correto. O nível interno é o físico e não tem modelagem definida.
b) O esquema conceitual descreve a estrutura lógica dos dados e é escrito usando-se a DDL conceitual.
c) visões internas e externas são diferentes
d) A visão interna que é de baixo nível
e) A visão interna define a sequencia física

33 - Gab: Letra E
“O profissional receberia o mesmo salário X mesmo desempenhando mais de uma atividade por projeto, como prevê a
situação".
A situação prevê mais de um projeto e mais de uma atividade por projeto. Como a atividade é um atributo-chave do
relacionamento, e a questão cita exemplos de atividades bem distintas (operador de guindaste e pedreiro), seria natural
que cada atividade tivesse sua remuneração específica, a menos que explicitamente declarado que a remuneração
depende apenas do funcionário e não do funcionário e da atividade. [Misael Ferreira]

34- Gab: Letra B


Em alguns casos, é necessário que associemos uma entidade com a ocorrência de um relacionamento. O modelo de
entidades e relacionamentos não permite relacionamentos entre relacionamentos, somente entre entidades. A idéia da
entidade associativa é tratar um relacionamento como se ele fosse uma entidade.
Se desejarmos controlar os medicamentos receitados pelo médico em determinada consulta, temos que relacionar a
entidade medicamento com o fato de ter havido uma consulta (relacionamento consulta). Como não podemos fazer isso
diretamente, indicamos que o relacionamento consulta é uma entidade associativa, através de um retângulo em volta do
relacionamento.

“Bom mesmo é ir a luta com determinação, abraçar a vida com paixão, perder com
classe e vencer com ousadia... pois o triunfo pertence a quem se atreve”.

(Charles Chaplin)

Paulo Marcelo Memorex Banco de Dados paulo1410@hotmail.com