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 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] (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 [email protected] 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 [email protected] 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 [email protected] (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) b) c) d) e) seu nível interno não é relacional. o esquema conceitual é escrito usando-se a DDL interna. as visões interna e externa são idênticas. a visão conceitual é uma representação de baixo nível do banco de dadospor inteiro. 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 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] 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 [email protected]