Por que precisamos de um banco de dados?
Num sistema de arquivos, cada setor guarda os seus próprios arquivos. Isso traz problemas:
- Redundância de dados: o mesmo dado é guardado várias vezes e gasta espaço.
- Inconsistência de dados: uma cópia é atualizada, as outras não, e elas passam a se contradizer.
- Difícil buscar e compartilhar: cada pergunta nova exige um programa novo.
- Pouca segurança: é difícil controlar quem vê o quê.
- Isolamento e dependência de dados: arquivos em formatos diferentes; mudar o formato do arquivo quebra os programas.
Um banco de dados é uma coleção organizada de dados relacionados, guardada num só lugar, para que possa ser compartilhada, mantida consistente e protegida.
Sistema Gerenciador de Banco de Dados (SGBD)
Um SGBD é um programa para criar, guardar, atualizar, buscar e gerenciar um banco de dados, e para controlar quem pode usá-lo. Exemplos: MySQL, Oracle, PostgreSQL, SQLite, Microsoft Access.
Vantagens: menos redundância, consistência, uso por muitas pessoas ao mesmo tempo, segurança com senhas e permissões, backup e recuperação, e busca fácil com uma linguagem de consulta (SQL).
Usos do dia a dia: bancos, reserva de passagens, registros escolares, compras online, hospitais.
Modelo relacional: relação, atributo, tupla, domínio
No modelo relacional de dados, os dados ficam em tabelas.
- Relação: uma tabela com um nome, por exemplo ALUNO.
- Atributo: uma coluna, por exemplo Nome.
- Tupla: uma linha, ou seja, um registro completo.
- Domínio: o conjunto de valores permitidos para um atributo, por exemplo Série ∈ {9, 10, 11, 12}.
- Grau: número de atributos (colunas).
- Cardinalidade: número de tuplas (linhas).
Regras: cada coluna tem um nome único; a ordem das linhas ou colunas não importa; não existem duas linhas exatamente iguais; cada célula guarda um único valor (ou NULL, que significa desconhecido).
Chaves: candidata, primária e alternativa
- Chave candidata: um atributo (ou conjunto de atributos) cujo valor é único em cada linha e nunca é NULL. Uma tabela pode ter mais de uma.
- Chave primária: a chave candidata escolhida para identificar as linhas. Ela não pode ser NULL nem se repetir.
- Chave alternativa: toda chave candidata que não foi escolhida como chave primária.
Exemplo: ALUNO(Matricula, Nome, Serie, Email). Nome se repete e Serie se repete, então não são chaves. Matricula e (se estiver sempre preenchido e for diferente) Email são chaves candidatas. Escolha Matricula como chave primária; Email vira a chave alternativa.
Também é útil saber: uma chave composta usa duas ou mais colunas juntas (como Serie + Chamada); uma chave estrangeira é uma coluna de uma tabela que se refere à chave primária de outra tabela, ligando as duas.
Experimente: ache a chave na sua carteirinha
Olhe a carteirinha da escola ou o passe do ônibus. Liste todos os campos (nome, série, número de chamada, matrícula, telefone). Para cada um, faça duas perguntas: dois alunos podem ter o mesmo valor? Ele pode ficar vazio? Anote quais são chaves candidatas e qual você escolheria como chave primária. Depois teste a mesma ideia no passo 6 do 3D.
Fórmulas e definições principais
- Relação = tabela; atributo = coluna; tupla = linha
- Grau = número de colunas; cardinalidade = número de linhas
- Chave candidata: única + não NULL
- Chave primária = chave candidata escolhida; chaves alternativas = as restantes
Exemplos resolvidos
1. Uma tabela tem 5 colunas e 30 linhas. Dê o seu grau e a sua cardinalidade.
Grau = 5, cardinalidade = 30.
2. Depois de acrescentar 2 linhas e 1 coluna a uma tabela 4 × 10 (grau 4, cardinalidade 10), quais são os novos valores?
Grau = 5, cardinalidade = 12.
3. FUNCIONARIO(IdFunc, Nome, CPF, Setor). Identifique as chaves candidatas, primária e alternativa.
IdFunc e CPF são únicos → chaves candidatas. Escolha IdFunc como chave primária; CPF é a chave alternativa. Nome e Setor podem se repetir.
4. Por que Nome não pode ser chave primária em ALUNO?
Dois alunos podem ter o mesmo nome, então ele não identifica uma linha de forma única.
5. Dê o domínio de um atributo Sexo guardado com uma letra.
{"M", "F", "O"} (ou os códigos que a escola permitir).
Erros comuns
- Chamar uma coluna de tupla. Tupla = linha; atributo = coluna.
- Dizer que o grau é o número de linhas. O grau conta colunas.
- Achar que uma tabela só pode ter uma chave candidata. Ela pode ter várias, mas só uma chave primária.
- Permitir NULL numa coluna de chave primária.