Laboratório de Bases de Dados e Aplicações Web
Preparação do teste individual, dos requisitos e da modelação aos dados, à aplicação web e às suas garantias.
A Loja de Bilhetes acompanha o percurso dos requisitos às compras concorrentes. Compradores escolhem sessões de eventos e recebem bilhetes; cada capítulo acrescenta as decisões necessárias para representar, consultar ou proteger esses dados. As questões são próprias, não reproduções de provas oficiais.
Pré-requisitos
A cadeira pressupõe UML, modelo relacional e SQL de Bases de Dados, e HTTP, HTML, CSS e JavaScript de Linguagens e Tecnologias Web. Estas páginas recordam os conceitos usados nos exemplos, ou seja, não substituem o estudo desses fundamentos. Os dados, diagramas e programas da Loja de Bilhetes são exemplos didáticos simplificados, não um template de entrega do projeto.
Para recuperar os pré-requisitos, há dois vídeos de Rodrigo Dias: Consultas de SQL 101 e Programação Web, em ~4 horas. São revisões de fundamentos, não guias dos artefactos ou regras de LBAW.
Percurso de estudo
- Requisitos fixa atores, histórias, regras e critérios. Arquitetura de informação e acessibilidade organiza a tarefa de encontrar uma sessão e comprar, antes de qualquer tabela. Estes dois artefactos correspondem a A2 e A3 do projeto.
- Modelo conceptual, esquema relacional e normalização convertem as regras em estrutura, restrições e validação, com a notação compacta de A5. É o mesmo caso contínuo da Loja de Bilhetes, do desenho às tabelas. A FK composta acrescenta a verificação de uma combinação, quando duas referências independentes não chegam.
- Consultas SQL responde sobre os dados com junções, NULL, agregação e quantificação. Índices e pesquisa parte de uma consulta frequente e de uma carga definida para escolher índices e ler o plano, como pede A6.
- Triggers e transações trata atomicidade, isolamento e a corrida pelo último lugar, com o isolamento de cada transação justificado. HTTP, aplicação Laravel e segurança distinguem protocolo, responsabilidades e permissões sobre o mesmo recurso Sessões. O protótipo vertical liga uma história aos estados da interface, ao contrato e aos dados persistidos.
- Cliente e desempenho mede o percurso completo antes de otimizar. NoSQL decide armazenamento por operação, unidade de atualização e garantias, com o âmbito de CAP delimitado.
Cada capítulo termina com questões e resoluções justificadas. A cheat sheet conserva definições, condições e armadilhas para consulta depois de estudar.
Preparar o teste
Resolve uma questão de modelação, uma de normalização e uma consulta sem abrir as pistas. Depois analisa um cenário concorrente e identifica as defesas de um pedido web. Justifica sempre a condição, porque não chega dizer «tem trigger», «usa ORM» ou «está autenticado».
Para SQL, cria dados com zero, uma e várias correspondências, e com NULL quando é permitido. Para uma regra concorrente, escreve uma sequência possível de duas transações. Para uma falha web, identifica quem controla a entrada, onde ela é interpretada e que permissão devia ser verificada.
Os blocos SQL desta cadeira declaram o motor PostgreSQL. Os exemplos específicos de PostgreSQL, como PL/pgSQL e índices GIN, usam esse dialeto. Os níveis de isolamento exigem um servidor com várias ligações para demonstrar concorrência. Os fragmentos Laravel pressupõem a aplicação e as dependências do projeto; os blocos PHP executáveis isolam uma operação da linguagem.
Avaliação atual: pesos, mínimos e limites
A apresentação indica um teste individual de escolha múltipla, sem consulta, sobre os conceitos aplicados nos artefactos. A prática de justificação destas páginas ajuda a distinguir alternativas; não prevê as perguntas do teste.
A apresentação e a FAQ de 2026/27 indicam 80% de projeto e 20% de teste individual, com mínimo de 8/20 no teste, sem arredondamento para atingir esse mínimo. Cada componente do projeto exige 10/20. A classificação final não pode exceder a nota do teste acrescida de cinco valores. Por exemplo, projeto 18 e teste 10 dão 16,4 pela média ponderada, mas o limite baixa esse resultado para 15.
Estas páginas ligam a preparação do teste às decisões aplicadas no projeto. Regras de frequência, entregas, apresentação e avaliação individual do projeto continuam nos materiais atuais do Moodle. A ficha SIGARRA de 2026/27 confirma os pesos, os mínimos e o limite de cinco valores acima do teste, também presentes na apresentação e na FAQ atuais. O plano do semestre acrescenta a sequência das aulas. Os slides disponíveis cobrem requisitos, arquitetura de informação, especificação da base de dados, índices, pesquisa textual, triggers e transações. As aulas posteriores continuam a precisar de comparação quando forem publicadas.
Fontes e anos: base, provas arquivadas e documentação
A base destas páginas são os cinco conjuntos de slides LBAW 2026/27 disponíveis em 8 de outubro, a FAQ e o plano do semestre. O exame modelo de abril de 2018 e os quizzes de prática exportados em abril de 2019, junho de 2021 e janeiro de 2023 ajudam a comparar conceitos. Os ficheiros arquivados como 2019 e 2021 são quizzes de prática. Estes modelos não confirmam o conteúdo nem as regras de uma prova futura. As notas de Fábio Sá partem da edição 2022/23 e foram revistas em 2023. Para as ferramentas, as definições e os exemplos destas páginas seguem a documentação primária ligada abaixo.
Referências complementares: documentação por tema
Os materiais da edição atual do Moodle definem o percurso da cadeira. A bibliografia institucional recolhida inclui Database Management Systems, de Raghu Ramakrishnan e Johannes Gehrke, e The Tangled Web, de Michal Zalewski. Estas referências ajudam a consultar definições, detalhes das ferramentas e aulas sobre os mesmos temas. Confirma a versão quando segues documentação de software.
- Modelo conceptual em UML: UML Specification.
- Do modelo ao esquema relacional: restrições em PostgreSQL.
- Consultas SQL, NULL e agregação: SELECT em PostgreSQL, comparações com NULL.
- Índices, planos e pesquisa em PostgreSQL: tipos de índice, Static quality scores and ordering, índices compostos, CLUSTER, Using EXPLAIN, pesquisa em texto.
- Referências compostas e agregação: chaves estrangeiras em PostgreSQL 16 e expressões de tabela.
- Triggers, transações e concorrência: isolamento, bloqueios explícitos, triggers, procedures, CTEs com alterações de dados, programa oficial de CMU.
- HTTP, recursos e estado da aplicação: HTTP semantics, RFC 9110, métodos em MDN, CORS, REST, Roy Fielding, PATCH, RFC 5789.
- Ambiente de desenvolvimento: requisitos técnicos da edição 2026/27, com a ligação ao guia de instalação e aos templates.
- Arquitetura e protótipo: A7, recursos web, 2021/22 e A8, protótipo vertical, 2021/22, como referências históricas de integração. As obrigações de entrega são as da edição atual.
- Aplicação web com Laravel: Cliente e servidor, MDN, Validation, Routing, âmbito de variáveis, arrow functions, autorização, validação, relações Eloquent.
- Segurança da aplicação web: SQL injection, XSS, CSRF, armazenamento de palavras-passe.
- Interfaces, usabilidade e acessibilidade: Labels nos formulários, Formulários acessíveis, Understanding Success Criterion 1.4.3: Contrast (Minimum), Wireflows, Nielsen Norman Group, Tecnologias de apoio, WAI, tutoriais de formulários, introdução em vídeo.
- Cliente web e desempenho: referência de seletores, tabelas com cabeçalhos,
var, modo estrito, Fetch em MDN, desempenho web. - Modelos NoSQL e decisões de armazenamento: modelação em MongoDB, transações, Perspectives on the CAP Theorem.
Os vídeos recomendados vivem nas lições dos conceitos que ajudam a visualizar:
- Acessibilidade que se pode verificar: relaciona barreiras de utilização com critérios de acessibilidade.
- Snapshots e níveis de isolamento: segue execuções concorrentes e identifica as anomalias e garantias de isolamento.
- Agregar sem esconder o detalhe: prevê o resultado de agregações, operações de conjuntos e funções de janela.
Artefactos A1 a A6
Cada capítulo usa a Loja de Bilhetes como caso contínuo: requisitos em A2, arquitetura em A3, modelo em A4, esquema e validação em A5, índices, triggers, transações e população em A6. A notação compacta e o SQL dos artefactos oficiais têm gralhas pontuais que estas páginas não reproduzem: aqui a regra entre 1 e 5 usa AND, currval é local à sessão e cada trigger verifica a coluna da regra que anuncia.