# Exercícios de Teste

Questões de exames antigos de Laboratório de Bases de Dados e Aplicações Web, com resolução.

Página: https://resumos.rgo.pt/cadeiras/lbaw/exercicios-teste/

## Requisitos

Quem identifica as user stories

Exame modelo, 2018

Por quem são identificadas as user stories de um projeto?

Solução

Stakeholders do projeto.

As histórias de utilizador são pequenos requisitos escritos do ponto de vista de quem usa o sistema, logo são identificadas pelos stakeholders.

*   **Arquitetos do projeto.** Os arquitetos usam o artefato, mas não são quem o identifica.
*   **Developers do projeto.** Os developers implementam as histórias, não as escrevem.
*   **Stakeholders do projeto.** As user stories são identificadas pelos stakeholders, que descrevem o que precisam do sistema.
*   **Stakeholders e arquitetos do projeto.** Os arquitetos não fazem parte da identificação.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/requisitos/#hist%C3%B3rias-de-utilizador)

Exemplo de regra de negócio

Teste de prática, 2021

Qual das seguintes afirmações é um exemplo de uma regra de negócio?

Solução

"A data de devolução tem de ser superior a uma data de empréstimo que ainda não tenha devolução registada".

Uma regra de negócio é uma restrição do domínio que o sistema deve impor, qualquer que seja a tecnologia. As restantes opções são requisitos funcionais ou técnicos.

*   **"No sistema deve ser possível editar um comentário adicionado anteriormente".** É um requisito funcional do sistema.
*   **"O sistema do lado do servidor deve funcionar em várias plataformas (Linux, Mac OS, etc.)".** É um requisito técnico (restrição de plataforma).
*   **"A data de devolução tem de ser superior a uma data de empréstimo que ainda não tenha devolução registada".** É uma regra do domínio do problema, independente da tecnologia usada.
*   **"O sistema deve ser implementado como aplicação web com páginas dinâmicas (HTML5, JavaScript, CSS3 e PHP)".** É um requisito técnico de implementação.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/requisitos/#funcionalidade-qualidade-e-regra-de-neg%C3%B3cio)

## Modelação conceptual e relacional

Esquema relacional de utilizadores e itens

Exame modelo, 2018

Considere um modelo conceptual com duas entidades, User e Item, numa associação de um para muitos: cada item pertence a um único utilizador e um utilizador pode ter vários itens. Qual dos seguintes esquemas relacionais representa melhor esse modelo?

Solução

Users(id, nome) Itens(id, nome, idU -> User).

Na conversão de uma associação um para muitos, a chave estrangeira fica sempre na relação do lado do muitos.

*   **Users(id, nome, idI -> Item) Itens(id, nome).** Coloca a chave estrangeira no lado do um, o que não representa vários itens por utilizador.
*   **Users(id, nome) Itens(id, nome, idU -> User).** A tabela do lado do muitos (Itens) guarda a referência para o utilizador.
*   **Users(id, nome) Itens(id, nome) Item2User(idU -> User, idI -> Item).** Uma tabela associativa modela muitos para muitos, não um para muitos.
*   **Users(id, nome, idI -> Item) Itens(id, nome, idU -> User).** Tem chaves estrangeiras nos dois lados, o que é supérfluo e inconsistente.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/esquema-relacional/#as-regras-de-convers%C3%A3o)

Composição de quartos num hotel

Teste de prática, 2019

Para melhor representar num diagrama de classes UML a afirmação "Hoteis são constituídos por listas de quartos numerados sequencialmente dentro do hotel", o que deve ser feito?

Solução

Composição de Quarto num Hotel.

O quarto não tem existência própria fora do hotel (a numeração é sequencial dentro do hotel), o que caracteriza a composição.

*   **Associação de muitos para um entre Quarto e Hotel.** Uma associação simples não exprime a dependência de existência.
*   **Classe-associação entre Hotel e Quarto.** A classe-associação guarda atributos da associação, não o tempo de vida.
*   **Agregação de Quarto num Hotel.** Na agregação o quarto pode existir sem o hotel, o que não acontece aqui.
*   **Composição de Quarto num Hotel.** Os quartos existem apenas dentro do hotel e são numerados no seu contexto, logo há composição.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/modelo-conceptual/#associa%C3%A7%C3%B5es-e-multiplicidades)

Classificação da herança de Animal

Teste de prática, 2021

Considere que a partir de um modelo conceptual em UML com generalização foi gerado o esquema relacional:

```sql
CREATE TABLE animal (
   id SERIAL,
   nome VARCHAR(30) NOT NULL,
   tipo ENUM ('cao', 'gato', 'golfinho') NOT NULL
);
```

Como classifica a herança representada em UML?

Solução

Disjunta e completa.

O atributo `tipo` é obrigatório (NOT NULL) e de valores mutuamente exclusivos (ENUM), o que corresponde a uma generalização disjunta e completa.

*   **Não disjunta e não completa.** O tipo ENUM obriga a um valor, logo a cobertura é completa.
*   **Disjunta e não completa.** O atributo tipo não pode ser nulo nem ter dois valores, logo é disjunta e completa.
*   **Não disjunta e completa.** Um animal só pode ter um tipo, logo a herança é disjunta.
*   **Disjunta e completa.** Todo o animal tem obrigatoriamente um único tipo, pelo que a generalização é disjunta e completa.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/modelo-conceptual/#generaliza%C3%A7%C3%A3o-e-restri%C3%A7%C3%B5es-dos-subtipos)

## SQL e esquema físico

Atributos referenciados por uma chave estrangeira

Teste de prática, 2023

Uma FOREIGN KEY faz referência a atributos de uma segunda tabela. O que têm de ser esses atributos?

Solução

UNIQUE.

Uma chave estrangeira aponta para uma chave candidata da tabela referenciada, que tem de ser única (normalmente a chave primária).

*   **NOT NULL.** NOT NULL impede nulos, mas não garante unicidade.
*   **UNIQUE.** Os atributos referenciados têm de ser uma chave candidata (UNIQUE), para que cada linha referenciada seja identificável.
*   **DOMAIN.** DOMAIN define o conjunto de valores, não a unicidade.
*   **DEFAULT.** DEFAULT dá um valor por omissão, não restringe a unicidade.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/esquema-relacional/#chaves-dom%C3%ADnios-e-null)

WHERE versus HAVING

Teste de prática, 2019

Qual das seguintes afirmações está correta?

Solução

O comando WHERE é usado para filtrar registos de um resultado.

Na ordem lógica de um SELECT, o WHERE aplica-se às linhas individuais antes de qualquer agrupamento.

*   **O comando WHERE é usado para filtrar valores de um agrupamento.** Quem filtra grupos (após GROUP BY) é o HAVING.
*   **O comando HAVING é usado para filtrar registos de um resultado.** HAVING filtra grupos, não registos individuais.
*   **O comando WHERE é usado para filtrar registos de um resultado.** O WHERE seleciona as linhas antes da agregação; o HAVING filtra depois do GROUP BY.
*   **O comando HAVING só pode ser usado em conjunto com o comando INSERT.** HAVING usa-se com SELECT e GROUP BY, nunca com INSERT.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/consultas-relacionais/#agrega-sem-esconder-o-detalhe)

Desvantagem das stored procedures

Teste de prática, 2019

Qual das seguintes opções é uma desvantagem decorrente da utilização de stored procedures?

Solução

A incapacidade de reutilização noutros SGBD do código desenvolvido.

Cada SGBD tem o seu dialeto de procedures (PL/pgSQL, T-SQL, etc.), logo o código desenvolvido não é reutilizável noutros sistemas.

*   **A diminuição do desempenho da aplicação.** Em geral, as stored procedures reduzem o tráfego e podem melhorar o desempenho.
*   **A redução do número de pedidos ao servidor de base de dados por parte dos clientes.** Isso é uma vantagem, não uma desvantagem.
*   **A dificuldade adicionada à gestão de transações.** Não é a desvantagem típica apontada.
*   **A incapacidade de reutilização noutros SGBD do código desenvolvido.** O código das procedures é específico do SGBD (dialeto próprio), pelo que não é portável.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/triggers-transacoes/#fun%C3%A7%C3%A3o-procedure-e-trigger)

## Índices e pesquisa

Cenário ideal para um índice do tipo Hash

Teste de prática, 2021

Qual dos seguintes representa um cenário ideal para um índice do tipo Hash?

Solução

Num campo de username, usado para encontrar um utilizador específico.

Um índice hash suporta eficientemente apenas comparações de igualdade; intervalos, prefixos e full-text exigem outros tipos de índice.

*   **Num campo de data, usado para filtrar registos entre uma data de início e fim.** Intervalos pedem índice ordenado (B-tree), não hash.
*   **Num campo de texto, usado para pesquisa full-text no meio de um grande bloco de texto.** Full-text usa índice invertido.
*   **Num campo de texto, usado para identificar todos os registos que começam por uma letra específica.** Prefixos pedem B-tree ou índice invertido, não hash.
*   **Num campo de username, usado para encontrar um utilizador específico.** O hash é ideal para procuras por igualdade exata sobre um valor único.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/sql-indices/#hash-b-tree-e-%C3%ADndice-invertido)

Sinais independentes da interrogação de pesquisa

Teste de prática, 2019

O que se entende por sinais (critérios) independentes da interrogação de pesquisa?

Solução

Sinais que são calculados aquando da indexação dos documentos.

Sinais independentes da interrogação (como o PageRank) calculam-se no momento da indexação e ficam guardados, para não pesar em cada pesquisa.

*   **Sinais que dependem diretamente da expressão de pesquisa utilizada.** Esses são sinais dependentes da interrogação.
*   **Sinais que são calculados apenas no momento da interrogação.** Independentes da interrogação calculam-se antes dela.
*   **Sinais que são definidos no momento de instalação do sistema de pesquisa.** A instalação não é o momento do cálculo dos sinais.
*   **Sinais que são calculados aquando da indexação dos documentos.** São exemplo o PageRank: calculam-se uma vez, na indexação, e não por cada pesquisa.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/sql-indices/#sinais-de-relev%C3%A2ncia-e-momento-do-c%C3%A1lculo)

Estudo da carga no desenho do esquema físico

Exame modelo, 2018

O que inclui o estudo da carga do sistema usado no desenho do esquema físico?

Solução

As alterações SQL (UPDATE, DELETE) importantes e qual a sua frequência.

O estudo da carga estima que consultas e alterações são frequentes, informação essencial para escolher índices e a organização física.

*   **O estudo da normalização de todas as relações.** A normalização pertence ao esquema lógico, não ao estudo da carga.
*   **A identificação das restrições de integridade.** Isso também é definido antes, no esquema lógico.
*   **O mapeamento do modelo conceptual de dados num esquema relacional.** O mapeamento é a passagem ao relacional, não o estudo da carga.
*   **As alterações SQL (UPDATE, DELETE) importantes e qual a sua frequência.** O esquema físico pesa a frequência das operações para decidir índices e organização dos dados.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/sql-indices/#carga-seletividade-e-organiza%C3%A7%C3%A3o-f%C3%ADsica)

## Transações e triggers

Significado de ACID

Exame modelo, 2018

No contexto de transações numa base de dados, o que significa ACID?

Solução

Atomicity, Consistency, Isolation, Durability.

ACID resume as propriedades de atomicidade, consistência, isolamento e durabilité das transações.

*   **Automatic Classification and Interpretation of Data.** Não é o significado do acrónimo.
*   **Advanced Computing Information Database.** Isso não corresponde às quatro propriedades.
*   **Atomicity, Consistency, Isolation, Durability.** São as quatro propriedades que garantem a fiabilidade das transações.
*   **Advanced Combat Infantry Division.** É uma distração, não uma definição.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/triggers-transacoes/#acid-e-o-que-cada-letra-promete)

O que garante a consistência de uma transação

Teste de prática, 2021

O que garante a propriedade da consistência na execução de uma transação numa base de dados?

Solução

A transação transforma a base de dados de um estado válido para outro estado válido.

Consistência (o C de ACID) significa que a transação respeita todas as restrições de integridade, passando de um estado válido a outro.

*   **A transação transforma a base de dados de um estado válido para outro estado válido.** A consistência garante que a transação não quebra as regras de integridade.
*   **A transação tem o mesmo resultado independentemente da altura em que é executada.** Isso descreve o isolamento, não a consistência.
*   **As operações foram efetuadas como o programador deseja.** Não é uma definição formal da propriedade.
*   **Todas as operações da transação são efetuadas ou nenhuma é efetuada.** Isso é a atomicidade.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/triggers-transacoes/#acid-e-o-que-cada-letra-promete)

Trigger despoletado por um UPDATE

Teste de prática, 2021

Considere um trigger despoletado aquando de uma atualização (UPDATE). Qual das seguintes afirmações está correta?

Solução

O trigger pode ser executado em vez da atualização.

Além de BEFORE/AFTER, um trigger pode ser INSTEAD OF, caso em que substitui a operação original em vez de a acompanhar.

*   **O trigger é sempre executado uma vez por cada linha modificada.** Depende do tipo de trigger (por linha ou por instrução).
*   **O trigger pode ser executado em vez da atualização.** Um trigger INSTEAD OF substitui a operação que o despoletou.
*   **Triggers em instruções de UPDATE que envolvam múltiplas linhas desencadeiam um erro.** Não é verdade; os triggers por linha correm para cada linha.
*   **O trigger é sempre executado uma única vez, independentemente do número de linhas modificadas.** Só os triggers por instrução funcionam assim.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/triggers-transacoes/#triggers-momento-unidade-e-retorno)

## Web e acessibilidade

O que é o AJAX

Exame modelo, 2018

O que é o AJAX?

Solução

Um conjunto de técnicas para manipulação assíncrona de páginas web.

O AJAX agrupa técnicas (como XMLHttpRequest/fetch) que comunicam com o servidor em segundo plano e atualizam a página dinamicamente.

*   **Uma técnica assíncrona para comunicação com servidores remotos.** Isso descreve só parte do conceito, não o conjunto.
*   **Uma técnica assíncrona para processamento em background.** O processamento em background não é o foco do AJAX.
*   **Um limpa-vidros muito comum.** É uma distração sem relação com a definição.
*   **Um conjunto de técnicas para manipulação assíncrona de páginas web.** AJAX (Asynchronous JavaScript and XML) é o conjunto de técnicas que permite atualizar partes da página sem a recarregar.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/cliente-desempenho/#pedidos-ass%C3%ADncronos-e-estados-da-interface)

Protocolo de comunicação entre servidores e clientes web

Teste de prática, 2023

Qual o nome do conjunto de regras (protocolo) que define a forma como servidores e clientes web devem estruturar e organizar as mensagens que usam para comunicar?

Solução

HyperText Transfer Protocol (HTTP).

É o protocolo da camada de aplicação usado na web para estruturar pedidos (métodos, cabeçalhos) e respostas (códigos de estado).

*   **File Transfer Protocol.** FTP trata da transferência de ficheiros, não da web.
*   **Transmission Control Protocol.** TCP é a camada de transporte, não o protocolo da web.
*   **HyperText Transfer Protocol.** É o HTTP que define pedidos e respostas entre clientes e servidores web.
*   **Internet Protocol.** IP trata do endereçamento e encaminhamento de pacotes.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/http-estado/#pedido-e-resposta)

Eloquent e Blade na framework Laravel

Teste de prática, 2021

Na framework Laravel, quais das seguintes tecnologias são usadas para, respetivamente, (1) gerir o acesso aos dados e (2) definir as vistas HTML?

Solução

Eloquent e Blade.

No Laravel, o Eloquent implementa o padrão Active Record sobre a base de dados e o Blade gera as vistas HTML.

*   **Artisan e Blade.** Artisan é a consola de comandos, não o acesso a dados.
*   **Eloquent e Artisan.** Artisan não define vistas.
*   **Blade e Eloquent.** Inverte as duas tecnologias.
*   **Eloquent e Blade.** O Eloquent é o ORM (acesso a dados) e o Blade é o motor de templates das vistas.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/aplicacao-laravel/#orm-e-o-problema-n-1)

O que é um leitor de ecrã

Teste de prática, 2023

O que é um leitor de ecrã (screen reader)?

Solução

Um software que utiliza discurso sintetizado para ler uma página web.

O leitor de ecrã é uma tecnologia de apoio que converte o conteúdo do ecrã em fala sintetizada.

*   **Um software que converte discurso falado para texto, para apresentação num ecrã.** Isso descreve reconhecimento de fala, não leitura do ecrã.
*   **Um software que permite aumentar o texto num ecrã de um computador.** Isso é um ampliador de ecrã.
*   **Um software que utiliza discurso sintetizado para ler uma página web.** O screen reader lê o conteúdo da página em voz alta, apoiando utilizadores com deficiência visual.
*   **Um indivíduo que traduz língua falada para língua gestual.** Isso é um intérprete, não software.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/lbaw/interfaces-acessiveis/#acessibilidade-que-se-pode-verificar)
