UFBA-OS v2.024
power-on self test · servidor de banco de dados acadêmico
› self-test
pular animação ›
UFBA-OS
0x00 SEGFAULT · 0x00 SEGFAULT
🗂!
Esquema
🔎!🔒
Consultas
📊!🔒
Relatórios
Central de Ajuda
Logs
🗒
Notas
🗄
Explorador BD
Terminal
🎓
Consolidação
🖩
Calculadora
Central de Ajuda — Recuperação do Kernel _×

Missão: restaurar o banco de dados

O servidor de banco de dados acadêmico da UFBA travou às 23:49. Restaure os três componentes do SGBD, em ordem, antes que o tempo acabe.

Como funciona: cada componente tem um desafio de banco de dados. Resolver um libera o próximo automaticamente. Os ícones com 🔒 abrem sozinhos quando você avança.
1
Abra o Explorador de BD (🗄) para ver os dados reais das tabelas — você vai precisar deles em todos os desafios.
2
Abra o Esquema — único destravado no início — e reconstrua as chaves das tabelas.
3
Consulte Logs, Notas e o Terminal (comando man) para relembrar os conceitos de cada desafio.
4
Resolva os 3 componentes em ordem para autorizar o reboot e salvar a entrega.

Progresso

EsquemaLOCKED
ConsultasLOCKED
RelatóriosLOCKED

⏱ Tempo até o desligamento: 10:00

🗂Catálogo de Tabelas — [SYS.01] Esquema _×

O catálogo perdeu as relações entre as 4 tabelas. Marque a chave primária de cada tabela (clique no 🔑 da coluna) e ligue cada chave estrangeira à coluna que ela referencia (clique numa coluna e depois na coluna-alvo).

Não sabe quais colunas são chave? Veja no Explorador de BD (🗄) quais valores nunca repetem e quais repetem os de outra tabela. Veja mais com man chaves no Terminal.

🔎Laboratório de Junções — [SYS.02] Consultas _×

Tarefa: entenda cada tipo de junção entre professor e componente como conjuntos. Em 4 rodadas, para cada alvo: marque as regiões do diagrama que entram no resultado e diga qual cláusula de junção é essa. Acerte as 4 para restaurar o subsistema.

Pense em conjuntos. Nem todo professor tem componente, nem toda componente tem professor — confira no Explorador (🗄) e revise os tipos com man join no Terminal.

📊Gerador de Relatórios — [SYS.03] Relatórios _×

Tarefa: para cada professor, quantos alunos diferentes ele aprovou (nota ≥ 7), somando todas as componentes que leciona? Monte a consulta: clique num campo e depois numa peça abaixo (clique no campo de novo para limpar).

Siga as chaves que você ligou no Esquema para ir de professor até a nota. E cuidado ao contar: um aluno pode repetir. Veja mais com man join e man agregacao no Terminal.

🗄Explorador de BD — ufba_acad _×
🖩Calculadora _×
0
Logs do Sistema — /var/log/panic.log _×
[23:48:40] esquema: catálogo corrompido — relações entre as 4 tabelas perdidas
[23:48:41] esquema: índice de unicidade perdido — recalcular a coluna identificadora de cada tabela
[23:48:42] esquema: 1 referência cruzada FORA da tabela de ligação não resolvida
[23:48:44] consultas: operador de conjunto indefinido (INNER/LEFT/RIGHT/FULL) — remapear
[23:48:46] relatorios: agregador contando linhas duplicadas — verificar cardinalidade (DISTINCT?)
[23:48:47] relatorios: travessia multi-tabela incompleta
[23:49:00] DB PANIC — servidor de banco de dados parou de responder
[23:49:01] entrando em modo de recuperação…
🗒Bloco de Notas — lembrete.txt _×
rascunho, 23h —
join = conjunto → desenhar
  2 círculos!
miolo x beiradas...
left/right = quem vem 1º
  no FROM
contar GENTE, não linha (?)
tem chave estranha fora
  da tabela do meio
Terminal — recovery@ufba-os _×
recovery@ufba-os:~$
🎓Consolidação Conceitual _×

O que cada componente ensina

Conceitos por trás dos desafios. Os três percorrem o ciclo de um banco de dados: projetar → consultar → resumir.

SYS.01 · Esquema — Modelo relacional (PK/FK). A chave primária identifica unicamente cada linha; a chave estrangeira referencia a PK de outra tabela — e pode estar em qualquer tabela (ex.: componente.prof_id → professor.id), não só em tabelas de ligação.
SYS.02 · Consultas — Tipos de junção como conjuntos. Sobre duas tabelas (esquerda × direita): INNER = interseção; LEFT = interseção + sobras da esquerda; RIGHT = interseção + sobras da direita; FULL OUTER = tudo, com NULL onde falta correspondência. "Esquerda/direita" depende da ordem no FROM.
SYS.03 · Relatórios — JOIN multi-tabela + agregação. Consultas reais atravessam várias tabelas (professor → componente → matricula), um JOIN por aresta de chave. Ao agregar, COUNT(*) conta linhas e pode inflar com repetições — COUNT(DISTINCT …) conta valores diferentes.

Encadeamento: relacionar tabelas (E1) → consultar com JOIN (E2) → resumir com agregação (E3).

aluno_ufba
modo de recuperação
🗂 Esquema
🔎 Consultas 🔒
📊 Relatórios 🔒
Central de Ajuda
🎓 Consolidação
🗄 Explorador de BD
Logs do Sistema
🗒 Bloco de Notas
Terminal
🖩 Calculadora
Encerrar sessão
UFBA-OS v2.024 · recovery build
Desistir?
!
Tem certeza que quer encerrar a sessão de recuperação? O kernel será marcado como irrecuperável.
Falha do sistema
!

⊞ Início
🔊
⏱ meltdown 10:00
23:49
desistir
💀
MELTDOWN CRÍTICO
tempo esgotado · kernel destruído
[FAIL] esquema ........ irrecuperável
[FAIL] consultas ...... corrompidas
[FAIL] relatorios ..... offline
 
UFBA-OS v2.024 · falha catastrófica
banco de dados perdido
Sistema Reinicializado
kernel panic · recuperado · entrega salva
[ OK ] esquema ........ restaurado
[ OK ] consultas ...... restauradas
[ OK ] relatorios ..... restaurados
 
[ OK ] reboot autorizado · entrega sincronizada
tempo gasto: --:-- · banco de dados online