1.
(VUNESP – TJM/SP – 2017)Um dos conceitos básicos da modelagem de bancos de dados relacionais são as chaves primárias, sobre as quais, é correto afirmar que
a) devem ser compostas por, pelo menos, dois atributos.
b) em cada banco de dados deve haver uma tabela que armazena as chaves primárias de todas as demais tabelas.
c) devem ser armazenadas, de forma redundante, em pelo menos duas tabelas distintas do banco de dados.
d) não podem ser formadas por nomes próprios.
e) podem ser formadas tanto por atributos numéricos, quanto por atributos literais.
RESOLUÇÃO:
a) As chaves primárias podem ser compostas por dois ou mais atributos, mas também podem ser compostas por um só, caso em que são chamadas de chaves primárias simples. ERRADA
b) Não há esse requisito nos bancos de dados relacionais. Cada chave primária é armazenada em sua própria tabela, pois é um atributo ou conjunto de atributos daquela tabela. O que se armazena em um local específico (o catálogo) no banco de dados são os metadados, que dizem quais são os atributos que compõem a chave primária de cada tabela. Contudo, os valores das chaves em si não fazem parte desses metadados. ERRADA
c) Essa restrição também não existe! As chaves primárias são compostas por um ou mais atributos de uma tabela e seus valores não se repetem dentro desta tabela, nem podem assumir o valor nulo. Não é necessário que esses dados estejam armazenados de forma redundante. ERRADA
d) Desde que esses nomes possam identificar unicamente o objeto sendo representado na tabela, não há empecilho. Por exemplo, se temos uma tabela que contém todos os países do mundo, podemos identificá-los unicamente pelos seus nomes sem problema algum. ERRADA
e) Essa é a resposta correta. O requisito para a chave primária é que ela assuma valores únicos e não nulos. Dessa maneira, não importa se elas são numéricas ou literais. CERTA
Resposta: E
2.
(VUNESP – MPE/SP – 2016)Considerando bancos de dados relacionais, no modelo relacional há os conceitos de chaves candidata, primária e estrangeira, sobre os quais é correto afirmar que uma
a) chave estrangeira deve ser criptografada.
b) chave estrangeira deve ser do tipo simples (ter apenas um atributo).
c) chave primária deve ser do tipo autoincremento.
d) chave primária deve ser do tipo composto (ter mais de um atributo).
e) relação pode ter mais de uma chave candidata.
RESOLUÇÃO:
a) Os bancos de dados podem ter seus objetos criptografados para coibir acessos indesejados a determinados campos. Por exemplo, um campo que armazena senhas de usuários a um determinado sistema deve ser criptografado, já que é uma má prática de segurança armazenar esses dados sensíveis em texto plano. Contudo, temos não há nenhum requerimento específico nesse sentido para chaves primárias ou estrangeiras. ERRADA b) As chaves estrangeiras costumam referenciar chaves primárias. Dessa maneira, ambas devem ter estruturas semelhantes para que essas referências possam se concretizar corretamente. Através desse raciocínio, podemos concluir que as chaves estrangeiras, a exemplo das primárias, podem ser simples ou comuns. ERRADA
c) Autoincremento é um tipo de chave primária substituta que vai incrementando de valor à medida que registros são inseridos. Nesse caso, o usuário não determina valor algum para a chave primária, o SGBD é que vai atribuindo um número sequencial. Por exemplo, quando o primeiro registro é inserido na tabela o SGBD atribui o valor 1 à chave primária; quando o segundo é inserido, o valor 2, e assim sucessivamente.
Apesar de ser uma alternativa interessante para a criação de chaves, pois o usuário não precisa se preocupar com o gerenciamento desses valores, o autoincremento não é, de forma alguma, obrigatório. ERRADA
d) A chave primária, como já sabemos, pode ser tanto do tipo simples ou do tipo composto. ERRADA
e) Uma relação pode ter, sim, várias chaves candidatas. Dentre elas, na etapa de modelagem do banco de dados, é selecionada a chave primária. CERTA
Resposta: E
3.
(VUNESP – TCE/SP – 2015)Em um banco de dados relacional, a característica que distingue um atributo A como chave estrangeira de uma tabela R é a seguinte:
a) a tabela R possui apenas esse atributo A.
b) esse atributo A é codificado para maior segurança no acesso à tabela R.
c) esse atributo A é a chave primária de outra tabela T.
d) esse atributo A sempre possui atributo do tipo numérico.
e) todos os demais atributos de R têm o mesmo domínio que o atributo A RESOLUÇÃO:
a) Nada a ver, não existe essa restrição! É possível criar uma tabela que seja composta somente por uma chave estrangeira? A resposta é sim. Mas isso não faz sentido, pois essa tabela não trará nenhuma informação nova, apenas fará referência a uma outra tabela. ERRADA
b) Não é necessário que uma chave estrangeira seja armazenada de forma criptografada! ERRADA
c) Essa é a única alternativa plausível! Embora não seja absolutamente necessário que uma chave estrangeira faça referênca à chave primária de outra tabela, esse geralmente é o caso, já que o registro dessa outra tabela T deve ser referenciado de forma unívoca pela chave estrangeira A. CERTA
d) O atributo da chave estrangeira deve assumir um tipo compatível com o tipo do atributo referenciado da tabela de destino. Esse atributo pode ser numérico, inteiro, decimal... não existe restrição de tipo para as chaves estrangeiras. ERRADA
e) Pode ser o caso, mas também pode não ser. Cada atributo deve ter um domínio compatível com a informação que está sendo representada por ele. O domínio de um atributo de uma tabela não influencia nos domínios dos demais, seja ele chave primária ou estrangeira. ERRADA
Resposta: C
4.
(VUNESP – SEDUC/SP – 2014)Muitas vezes, não inserimos o valor em um campo de um registro de um banco de dados relacional, por não dispor desse valor ou por não conhecê-lo. Nesse caso, essa ausência de valor é chamada de valor.
a) chave.
b) coringa.
c) morto.
d) nulo.
e) zero.
RESOLUÇÃO:
O valor especial que indica a ausência ou a não aplicabilidade de um valor para um determinado registro de um bacno de dados é chamado de valor nulo (NULL). Esse valor não pertence a nenhum domínio e não tem nenhum tipo de dados, é um mero marcador que indica que não há valor para aquele atributo.
Resposta: D
5.
(FCC – SEFAZ/SC – 2018)Suponha que um Auditor foi encarregado de modelar e criar um banco de dados para um pequeno sistema de pedidos de produtos de informática. Para realizar essa tarefa, desenvolveu o modelo mostrado na figura abaixo.
Após criar o modelo, implementou o banco de dados em um Sistema de Gerenciamento de Banco de Dados, criou as tabelas e cadastrou as seguintes informações:
O Auditor tentou incluir os dados abaixo na tabela Pedido.
Ao executar a operação de inclusão, ocorreu um erro porque:
a) não há um cliente com id 12 cadastrado na tabela Cliente.
b) já existe um pedido cadastrado com id 13.
c) a data cadastrada não existe, já que o formato correto é dd/mm/yyyy.
d) já existe um pedido criado para o cliente 12.
RESOLUÇÃO:
a) Realmente, não há um cliente com o id 12 na tabela cliente. Como existe uma FK em Pedido, no campo idCli, que referencia o campo de mesmo nome na tabela Cliente, uma inserção de um valor que não existe na tabela referenciada viola a integridade referencial. Essa é a resposta, mas não pare de ler aqui! Veja as demais resoluções. CERTA
b) Essa assertiva está errada. Ainda não existe um pedido com esse id cadastrado. ERRADA
c) Você pode até ter achado que essa era a alternativa, mas não é! Os formatos de data padrão dos bancos de dados costumam ser no formato AAAA-MM-DD (ano, mês e dia). Essa padronização é útil porque evita ambiguidades entre os formatos brasileiro e americano, por exemplo, já que as posições de dia e mês são invertidas nessas duas regiões. De qualquer forma, daria para ver de acordo com os registros já presentes na tabela Produto que esse era o formato aceito. ERRADA
d) Não é o caso, mas mesmo que já houvesse pedido cadastrado para esse cliente, não haveria problema, já que é um relacionamento um para muitos. O examinador usou a notação Pé-de-Galinha em seu modelo. Nessa notação, o tridente indica que aquele lado do relacionamento é o lado “muitos”, enquanto que o tracinho vertical aponta que a cardinalidade máxima da entidade é “um”.
Veja o resumo dessa notação:
ERRADA
e) Não existe mesmo, mas é justamente o que estamos tentando inserir! Se já existisse, haveria violação à integridade de entidade, ou à restrição de unicidade da chave primária da tabela. ERRADA
Gabarito: A
6.
(FCC – SEFAZ/SC – 2018 – ADAPTADA)Ainda considerando o modelo lógico e as tabelas da questão anterior, considere também as seguintes tabelas:
Considere que o Auditor digitou um comando para inserir os valores abaixo na tabela ItemPedido:
O resultado da operação foi:
a) Inserido com sucesso b) Erro de sintaxe SQL
c) Erro de tipo no campo qtdIteped d) Erro de integridade referencial e) Erro de integridade primária
RESOLUÇÃO:
Bom, não podemos falar em erro de sintaxe SQL, já que não estamos vendo o comando. Então a b já não é a nossa resposta. O campo qtdItePed recebe um número inteiro, representado por INT no modelo, então não há o que se falar em erro de tipo, logo, a alternativa c também não é nossa resposta.
A integridade referencial está mantida, já que realmente existem o idPed = 7 na tabela Pedido e o idPro = 14 na tabela de Produto. Dessa maneira, nos restam as alternativas a e e. Avaliando a alternativa e, vemos no modelo lógico que a chave primária da tabela ItemPedido é composta pelos campos idItePed e idPed. Dessa maneira, a combinação desses campos deve ser única dentro da tabela. Não é o que acontece, já existe um registro com esses valores na relação. Logo, temos um erro de integridade primária ou integridade de entidade.
Gabarito: E
7.
(FCC – SEFAZ/SC – 2018)Suponha que um Auditor foi encarregado de modelar e criar um banco de dados para um pequeno sistema de pedidos de produtos de informática. Para realizar essa tarefa, desenvolveu o modelo mostrado na figura abaixo.
Considere e avalie as asserções a seguir e a relação proposta entre elas.
I. O relacionamento entre as entidades Pedido e ItemPedido é um relacionamento identificado PORQUE
II . idPed, que é chave estrangeira na entidade ItemPedido, faz parte da chave primária desta entidade.
É correto afirmar que
a) as duas asserções são proposições verdadeiras, mas a segunda não é justificativa correta da primeira.
b) a primeira asserção é uma proposição falsa, e a segunda, uma proposição verdadeira.
c) as duas asserções são proposições verdadeiras, e a segunda é uma justificativa correta da primeira.
d) a primeira asserção é uma proposição verdadeira, e a segunda, uma proposição falsa.
e) tanto a primeira quanto a segunda são proposições falsas.
RESOLUÇÃO
Veja no diagrama lógico que a entidade ItemPedido tem o campo idPed, que é a chave da entidade Pedido, como parte de sua chave primária – fato indicado pelo ícone de uma chave do lado do nome do atributo. Essa composição da chave primária indica que a entidade ItemPedido é a entidade fraca de Pedido. O relacionamento entre uma entidade fraca e uma forte é chamado de relacionamento identificador, que é a primeira assertiva.
Podemos concluir, dessa maneira, que podemos afirmar que as duas assertivas são verdadeiras, e que é a segunda assertiva (a respeito da composição da chave) que nos indica que esse é um relacionamento identificador. Logo, a segunda assertiva justifica a primeira.
Gabarito: C
8.
(FCC – SEFAZ/SC – 2018)Suponha que um Auditor foi encarregado de modelar e criar um banco de dados para um pequeno sistema de pedidos de produtos de informática. Para realizar essa tarefa, desenvolveu o modelo mostrado na figura abaixo.
No modelo apresentado a entidade ItemPedido:
a) deveria conter o campo PreUniPro, pois o preço unitário do produto deve ser incluído em cada item do pedido.
b) está relacionada com as entidades Pedido e Produto usando a notação Integrated DEFinition for Information Modelling - IDEF1X.
c) possui relação com cardinalidade n :n com a entidade Produto e 1 : n com a entidade Pedido.
d) possui chave primária composta, mas não possui chave estrangeira, logo, não garante integridade referencial.
e) possui uma chave primária composta pelos atributos idItePed e idPed, sendo que os atributos qtdItePed e idPro possuem dependência funcional completa com relação à chave primária.
RESOLUÇÃO
a) O preço do produto é um atributo da entidade produto, não faz sentido querer que ele esteja presente em cada item do pedido. Estaríamos inserindo uma redundância desnecessária no nosso modelo. ERRADA
b) A modelagem lógica acima segue a notação pé de galinha ou crow’s foot para representar as cardinalidades e a participação nos relacionamentos. A notação IDEF1X é outro tipo de notação. ERRADA
c) Como podemos ver, ItemPedido possui cardinalidade 1:n tanto com Produto quanto com Pedido. ERRADA d) Veja que na parte “indexes” do modelo existem duas restrições que começam com fk, isso indica que há duas
e) A chave primária realmente é composta por esses atributos, como podemos ver através dos ícones no formato de chave. Repare que os atributos qtdItePed e idPro têm a ver exclusivamente com um item de pedido – alguém compra x unidades de um produto y - e um item de pedido é identificado unicamente pela sua chave primária.
Logo, podemos dizer que qtdItePed e idPro possuem uma relação de dependência da chave primária como um todo, não somente de parte da chave.
A dependência funcional seria parcial se, por exemplo, tivéssemos o atributo nomeProduto dentro da tabela ItemPedido. Veja que o nome de um produto só guarda relação direta com um produto. Podemos ter mil pedidos diferentes, se o produto comprado for o mesmo, o produto será o mesmo. Dessa forma, esse atributo nomeProduto apresentaria dependência somente com parte da chave, no caso com o componente idPro. CERTA Gabarito: E
9.
(FCC – TCE/RS – 2018)Considere que uma tabela de um banco de dados relacional possui uma chave primária composta por um único atributo. Essa tabela tem como propriedade:
a) a chave primária não pode ser nem do tipo booleano, nem do tipo inteiro.
b) a chave primária deve ser do tipo inteiro longo.
c) metade dos seus registros, no máximo, pode ter esse atributo com o valor nulo.
d) nenhum par de seus registros pode ter o mesmo valor para esse atributo na chave primária.
e) o armazenamento da chave primária na tabela deve ser feito de forma criptografada.
RESOLUÇÃO:
a) Um tipo booleano (composto pelos valores “verdadeiro” ou “falso” – às vezes representados por 1 e 0, respectivamente) realmente não seria um bom candidato para chave primária, pois só há dois valores possíveis.
Contudo, nada impede que se crie uma chave primária em um atributo desse tipo. Já o tipo inteiro é um tipo frequentemente utilizado para a utilização de chaves substitutas. Assertiva incorreta. ERRADA
b) Pode ser, mas não necessariamente. A palavra deve é que torna a assertiva falsa, as chaves primárias podem ser inteiros, cadeias de caracteres, booleanos, etc. ERRADA
P.S.: Se você quiser saber o que é um inteiro longo, veja o quadro a seguir. Caso contrário, pode ir para a próxima assertiva.
Geralmente existem vários tipos de número inteiro em um SGBD, que variam de acordo com seu tamanho máximo. Não vale a pena explicar exatamente o porquê aqui, mas é devido ao espaço que cada valor ocupa no servidor.
Por exemplo, um valor do tipo tinyint no SGBD SQL Server vai de 0 a 255 e ocupa somente 1 byte.
Já o tipo int varia de -2.147.483.648 a 2.147.483.647 e um valor desse tipo ocupa 4 bytes, quatro vezes mais que o original.
A escolha correta do tipo do atributo é uma tarefa bastante importante para o projetista, pois em um banco de dados muito grande essas pequenas diferenças podem ter um grande impacto.
c) Uma chave primária deve ser composta por valores únicos e não nulos. Logo, não pode ter nenhum nulo.
ERRADA
d) Como dissemos acima, uma chave primária deve ter valores únicos e não nulos dentro da relação. Dessa maneira, nenhum par de registros pode ter o mesmo valor para essa chave. CERTA
e) Essa regra não existe. É possível sim criptografar os registros de uma tabela do banco de dados, mas não podemos afirmar que o armazenamento da chave primária deve ser feito de forma criptografada. O examinador tentou confundir aquele aluno que conhece um pouco de criptografia e sabe que existem os conceitos de chave pública e chave privada, que nada têm a ver com banco de dados. ERRADA
Gabarito: D
10.
(FCC – TRT6 – 2018)Considere hipoteticamente a existência de empresas que terceirizam o fornecimento de Recursos Humanos a outras empresas. Cada funcionário pode ser cadastrado em várias dessas empresas terceirizadas, nos mesmos cargos ou em cargos diferentes. Um modelo abstrato de dados dessa relação entre Empresa_Terceirizada_RH e Funcionario é mostrado abaixo.
Para um Analista especializado em Tecnologia da Informação implementar o modelo mostrado na figura, em um Sistema Gerenciado de Banco de Dados relacional, terá que
a) utilizar a linguagem SQL, adicionando o parâmetro CROSS REFERENCES à instrução CREATE TABLE na criação de ambas as tabelas para estabelecer a relação n:m entre elas.
b) excluir o campo cargoFuncionario da tabela Funcionario e inserir na tabela Empresa_Terceirizada_RH, pois o cargo é cadastrado quando o funcionário faz a inscrição na empresa terceirizada.
c) criar uma tabela de ligação entre Empresa_Terceirizada_RH e Funcionario, fragmentando o relacionamento n:m em dois relacionamentos 1:n e colocando o campo cargoFuncionario como atributo simples nessa tabela de ligação
d) criar uma tabela de ligação entre Empresa_Terceirizada_RH e Funcionario, fragmentando o relacionamento n:m em dois relacionamentos 1:1, já que não é possível implementar a relação n:m em bancos de dados relacionais.
e) excluir o atributo cargoFuncionario, pois cada funcionário poderá ter um cargo diferente em cada empresa terceirizada onde se cadastrar.
RESOLUÇÃO:
Vimos que para implementar um relacionamento m:n precisamos de uma tabela auxiliar. Dessa maneira, precisamos criar uma tabela de ligação. Isso não tem nada a ver com exclusão de atributos, como afirmam as assertivas b e e. Você não é obrigado a saber, mas também não existe esse parâmetro CROSS REFERENCES na linguagem SQL da letra a.
Nos restam as alternativas c e d. Agora veja que, em um relacionamento M:N, uma instância do relacionamento, ou seja, uma linha da tabela da ligação, só possui um elemento de cada uma das entidades envolvidas. Ou seja, uma instância do relacionamento mostrado envolve um funcionário trabalhando em uma empresa.
Dessa forma, os relacionamentos resultantes da criação da tabela auxiliar são do tipo 1:n, já que os registros de uma tabela podem aparecer várias vezes na tabela de ligação, mas um registro na tabela de ligação só diz respeito a um registro de cada entidade participante. Ficou claro?
Para finalizar, temos que o atributo cargoFuncionário diz respeito ao relacionamento, não ao funcionário, já que um funcionário pode ocupar vários cargos em várias empresas diferentes. Já temos, assim, a nossa resposta.
Gabarito: C
11.
(FCC – TRF5 – 2017)Um Técnico inseriu um valor no campo chave estrangeira de uma tabela sem que existisse o valor equivalente no campo chave primária da tabela relacionada. Considerando o uso de um Sistema Gerenciador de Banco de Dados Relacional, esta operação
a) será bem sucedida se a relação entre as tabelas for n:n.
b) será bem sucedida, apesar de uma mensagem de alerta ser exibida.
c) viola a integridade referencial.
d) irá falhar devido à dependência funcional parcial entre as tabelas.
e) será bem sucedida se a relação entre as tabelas for 1:n.
RESOLUÇÃO:
Para começar, podemos eliminar a alternativa d, já que dependência funcional diz respeito ao assunto de normalização, não de chaves e relacionamentos.
Em seguida, temos que não é possível existir um valor de chave primária sem correspondência na tabela relacionada, independente da cardinalidade do relacionamento. Logo, as alternativas a, b, e estão incorretas, pois será apresentado erro ao tentar inserir o registro. Esse erro é justamente uma violação à integridade referencial, a resposta da letra c.
Gabarito: C
12.
(FCC – TST – 2017)Considere, por hipótese, que um Analista de Sistemas está trabalhando no projeto conceitual de um sistema de controle de processos compartilhado entre tribunais, o qual futuramente será projetado para ser processado em um modelo de banco de dados relacional normalizado. O Analista levantou os seguintes requisitos:
− A entidade tribunal deverá ser identificada de forma unívoca pelo atributo identidade do tribunal que será a chave primária; A entidade processo terá sua chave primária composta por um número sequencial de 1 a n mais a identidade do tribunal ao qual está vinculado.
O motivo da incorporação da identidade do tribunal na chave primária de processo bem como o tipo de relacionamento entre as entidades tribunal e processo são, respectivamente, a
a) manutenção da unicidade da identidade do tribunal; relacionamento de dependência (tribunal é entidade fraca de processo).
b) necessidade de se manter, em uma única tabela, os tribunais e os processos; relacionamento unitário.
c) necessidade de se manter um pseudo-relacionamento entre tribunal e processo; relacionamento ternário (tribunal + tribunal e processo).
d) manutenção da unicidade da identidade do processo; relacionamento de dependência (tribunal é entidade fraca de processo).
e) manutenção da unicidade da identidade do processo; relacionamento de dependência (processo é entidade fraca de tribunal).
RESOLUÇÃO:
Bom, vamos lá. Os requisitos são os seguintes
1) A entidade Tribunal terá um atributo “identidade” como chave primária
2) A entidade Processo terá sua chave primária composta por um número sequencial (chave substituta) + a chave primária de Tribunal
A assertiva pergunta qual é o motivo da chave primária de Processo ter a chave primária de Tribunal em sua composição e qual é o tipo de relacionamento.
Se você lembra bem do nosso curso teórico, vai se recordar dos conceitos de entidade fraca e de relacionamento identificador. Uma entidade fraca não pode ser identificada unicamente por seus próprios atributos, então sua chave primária precisa ser composta com a chave primária da entidade forte associada. Veja que o propósito é o mesmo de uma chave primária qualquer: identificar unicamente um registro da tabela. Assim, temos as alternativas D e E como possíveis respostas.
Em seguida, temos que esse é um relacionamento identificador. A banca chamou de relacionamento de dependência, mas dá pra ir pela lógica, já que a existência da entidade fraca realmente depende da existência da forte. Como a entidade fraca do relacionamento é aquela que tem sua chave composta pela chave da entidade forte, temos que Processo é a entidade fraca de Tribunal. Logo, a alternativa E é a resposta correta.
Gabarito: E