Sistemas de Banco de Dados: Guia de SGBD e Linguagem SQL
Enviado por Javi e classificado em Computação
Escrito em em
português com um tamanho de 11,39 KB
Sistemas de Banco de Dados
Um sistema de banco de dados consiste em:
- Banco de dados: uma coleção de dados inter-relacionados. Um sistema consiste de:
- Dicionário de Dados: contém uma descrição da estrutura do BD, os "metadados".
- Dados
- Sistema de Gerenciamento de Banco de Dados (SGBD): um conjunto de programas que permite definir, criar, manipular e controlar o acesso ao banco de dados.
- Usuários: administradores, designers, usuários finais, entre outros.
Vantagens da utilização de SGBD
- Redução e controle de redundância.
- Evitar inconsistências (cópias diferentes do original).
- Manter a integridade (garantir que as informações armazenadas estejam corretas). Para isso, utilizam-se as chamadas restrições de integridade (tipo de dados, comprimento, etc.).
- Facilidade para executar, desenvolver e manter relacionamentos entre os dados.
- Controle de acesso, segurança e concorrência.
- Facilidade para realizar backup de dados e recuperação de erros.
- Flexibilidade: mudanças na estrutura sem afetar os dados armazenados.
Modelo de Dados
O modelo de dados de um BD é um conjunto de conceitos que descrevem os tipos de dados, relacionamentos e as restrições que devem ser cumpridas, além das operações de consulta e modificação, tanto dos dados quanto da estrutura do banco de dados. Tipos:
- Conceituais (alto nível): próximos ao mundo real, baseados em entidades que possuem atributos que as definem e se relacionam com outras. Exemplo: UML.
- Lógicos: descrevem a estrutura global e são compreensíveis pelos usuários, mas também estão próximos à organização física dos dados. Exemplo: relacional ou orientado a objetos.
- Físicos: descrevem a estrutura física do banco de dados, como o armazenamento e o acesso aos registros, blocos, etc.
Esquemas e Estados
Esquema: especifica o design do banco de dados, ou seja, os metadados.
Estado: conjunto de dados contidos no banco de dados em um determinado momento. O gerenciador deve garantir que o estado seja sempre consistente.
Linguagens e Interfaces
DDL (Linguagem de Definição de Dados): para especificar a estrutura conceitual do banco de dados.
SDL (Linguagem de Definição de Armazenamento): para definir o armazenamento físico.
VDL (Linguagem de Definição de Visão): permite ao usuário definir visualizações. A maioria dos gerenciadores usa a DDL para definir visões.
DML (Linguagem de Manipulação de Dados): permite o acesso, inserção, exclusão e modificação de dados. Pode ser procedural (como chegar aos dados) ou declarativa (o que obter, mas não como).
Modelo de Dados Relacional
É o modelo mais utilizado, baseado em registros.
| Formal | SQL | Descrição |
|---|---|---|
| Relação | Tabela | Representa uma entidade genérica. |
| Tupla | Linha | Representa uma entidade particular. |
| Atributo | Coluna | Propriedade da entidade. |
| Domínio | Domínio | Valores atômicos que os atributos podem assumir. |
Na definição formal, as relações possuem as seguintes propriedades:
- Não há tuplas repetidas.
- As tuplas não são ordenadas.
- Os atributos não são ordenados.
- Os valores de atributos são atômicos.
Regras de Integridade
O gerenciador define as restrições que se aplicam às tuplas. O modelo relacional especifica dois tipos principais de integridade:
- Chaves candidatas, primárias e alternativas: um subconjunto de atributos que satisfaz a restrição de unicidade (não há duas tuplas com os mesmos valores). A chave primária não pode conter valores nulos.
- Chaves estrangeiras: conjunto de atributos de uma relação que referencia a chave primária de outra relação (ou da mesma). Permite a ligação entre relacionamentos. O gerenciador deve assegurar a correspondência das chaves estrangeiras.
Valores Nulos (NULL)
Representam atributos desconhecidos, ausentes ou não aplicáveis. Em chaves primárias, nenhum atributo pode conter um nulo. Fora delas, o nulo é permitido.
Linguagens de Banco de Dados
Álgebra Relacional
Coleção de operadores que utilizam relações como operandos e retornam relações como resultado. Em operações que exigem compatibilidade, ambas as relações devem ter o mesmo número de atributos e o mesmo domínio.
Operações
| Operação | Compatível | Resultado |
|---|---|---|
| União (∪) | Sim | Tuplas que estão em R, S, ou ambos. |
| Interseção (∩) | Sim | Tuplas que estão em ambos (R e S). |
| Diferença (-) | Sim | Tuplas que estão em R, mas não em S. |
| Produto Cartesiano (x) | Não | Todas as combinações possíveis de tuplas de R com S. |
| Restrição (Seleção) | - | Tuplas que satisfazem uma condição específica. |
| Projeção | - | Seleciona atributos específicos, descartando outros. |
| Junção (Join) | - | Combina tuplas relacionadas. |
| Divisão | - | Tuplas de R associadas a todas as tuplas de S. |
| Funções de Agregação | - | Agrupamento de tuplas e aplicação de funções (Soma, Média, etc.). |
Cálculo Relacional
Expressa condições para obter um conjunto de tuplas t. Exemplos:
- {t | ACTOR(t) AND t.cache > 2000}
- {t.nombre, t.nacionalidad | ACTOR(t) AND t.cache > 5000}
- (∀ t) (BANCO(t) AND NOT (t.ciudad = 'London'))
- (∃ t) (BANCO(t) AND t.ciudad = 'Amsterdam')
Integridade dos Dados
Regras de Integridade
Consistem em:
- Nome da restrição.
- Condição a ser avaliada.
- Resposta à tentativa de violação: rejeitar a operação ou executar outro procedimento.
Tipos de restrições:
- Domínio: define um domínio. Exemplo:
CREATE DOMAIN Color_ojos AS VARCHAR(10) CHECK (VALUE IN ('BROWN', 'GREY', 'azul', 'Verde', 'BLACK')); - Tabela: aplicada a colunas (tipo de dado, NOT NULL) ou chaves.
- Geral (Assertions): elementos independentes que podem envolver várias tabelas.
Verificação de Restrição
- Imediata: após cada instrução SQL.
- Diferida: ao final da transação.
Triggers (Gatilhos)
Permitem especificar ações a serem executadas após a violação ou ocorrência de um evento. Requerem:
- Evento causador (INSERT, UPDATE, DELETE).
- Condição para execução.
- Ações a serem tomadas.
Transações
Uma transação é uma sequência de ações que lê ou atualiza o banco de dados. Propriedades (ACID):
- Atomicidade: tudo ou nada.
- Consistência (Integridade): leva o banco de um estado consistente a outro.
- Isolamento (Presença): mudanças não são visíveis até a confirmação.
- Durabilidade (Recuperação): mudanças persistem após o sucesso, mesmo em falhas.
Concluídas com COMMIT (sucesso) ou ROLLBACK (cancelamento).
Controle de Concorrência
Problemas comuns:
- Atualização perdida: duas transações gravam sobre o trabalho uma da outra.
- Leitura suja (Dirty Read): ler dados de uma transação que ainda não foi confirmada e pode falhar.
- Resumo incorreto: funções agregadas lendo dados em modificação.
- Leitura não repetível: ler o mesmo valor duas vezes e obter resultados diferentes.
Serialização
O objetivo é escalonar operações para evitar interferências. Um planejamento é serializável se for equivalente a uma execução em série.
Métodos de Bloqueio
- Bloqueio Compartilhado (Shared): permite leitura, mas não escrita.
- Bloqueio Exclusivo: permite leitura e atualização.
Protocolo de Duas Fases (2PL)
- Fase de Expansão: adquire bloqueios, não libera nenhum.
- Fase de Recessão: libera bloqueios, não adquire novos.
Deadlock (Impasse)
Ocorre quando transações esperam umas pelas outras indefinidamente. Técnicas de gestão:
- Timeout (tempo limite).
- Prevenção (Wait-die ou Hurt-wait).
- Detecção e recuperação (gráfico de precedência).
Recuperação de Falhas
O gerenciador deve garantir a atomicidade e durabilidade. Tipos de falhas incluem falhas locais (transação), falhas do sistema (crash) ou falhas físicas (disco).
Mecanismos de Recuperação
- Log: arquivo que armazena detalhes das transações para desfazer (UNDO) ou refazer (REDO) operações.
- Checkpoints: pontos de controle que gravam dados pendentes no disco para agilizar a recuperação.
Linguagem SQL
Consulta de Dados: SELECT
Estrutura básica:
- SELECT: colunas ou funções.
- FROM: tabelas envolvidas.
- WHERE: condições de seleção de linhas.
- GROUP BY: agrupamento de linhas.
- HAVING: condições para os grupos.
- ORDER BY: ordenação do resultado.
Operações de Conjunto
UNION, INTERSECT e EXCEPT (ou MINUS no Oracle).
Junções (Joins)
- INNER JOIN: combina tabelas com base em uma condição.
- NATURAL JOIN: junção automática por colunas de mesmo nome.
- OUTER JOIN (LEFT, RIGHT, FULL): inclui linhas mesmo sem correspondência (preenche com NULL).
Linguagem de Definição de Dados (DDL)
Esquemas e Tabelas
CREATE SCHEMA e CREATE TABLE definem a estrutura. ALTER TABLE permite modificar colunas e restrições, enquanto DROP TABLE as remove.
Visões (Views)
Uma visão é uma tabela virtual derivada de outras. Criada com CREATE VIEW, ela não armazena dados fisicamente (exceto em visões materializadas), funcionando como um atalho para consultas complexas.
Índices
Estruturas auxiliares para busca eficiente. Criados com CREATE INDEX, são automáticos para chaves primárias e restrições de unicidade.