Fundamentos de Banco de Dados e SQL Essencial
Classificado em Computação
Escrito em em português com um tamanho de 9,04 KB
Conceitos Fundamentais de Banco de Dados
A Informação acrescenta algo ao conhecimento da realidade a ser analisada.
O Dado é uma representação, um registro de uma informação.
Modelos de Banco de Dados
Modelo de Rede
Navega mais rápido, não passa pela raiz.
Modelo Hierárquico
Qualquer acesso passa pela raiz.
Modelo Relacional
Grande flexibilidade. Os dados podem ser rearranjados e combinados facilmente, baseado em lógica e teoria de conjuntos. Relacionamentos, no máximo, de grau 1:N.
Níveis de Abstração de Dados
- Nível Interno: Linguagem de máquina.
- Nível Conceitual: O programador.
- Nível Externo: O cliente.
Independência de Dados
- Independência de Dados Lógica: É a capacidade de alterar o esquema conceitual sem ter que alterar o esquema externo ou as aplicações do usuário.
- Independência de Dados Física: É a capacidade de alterar o esquema interno sem ter que alterar o esquema conceitual, o esquema externo ou as aplicações do usuário.
Comandos SQL Essenciais
DDL (Data Definition Language)
Comandos usados para definir e gerenciar a estrutura do banco de dados:
CREATE
: Criar objetos (tabelas, bancos de dados).ALTER
: Modificar objetos existentes.DROP
: Excluir objetos.
DML (Data Manipulation Language)
Comandos usados para inserir, atualizar, excluir e consultar dados no banco de dados:
SELECT
: Consultar dados.INSERT
: Inserir novos dados.UPDATE
: Atualizar dados existentes.DELETE
: Excluir dados.
DLL (Data Link Library - Contexto original)
Comando usado para informar ao banco de dados como armazenar os dados. (Nota: No contexto de SQL, geralmente se refere a DDL ou DCL - Data Control Language)
Outros Conceitos Importantes
- ANSI: Grupo trabalhando em um objetivo comum (ex: padronização SQL).
- SGBDD (Sistema Gerenciador de Banco de Dados Distribuído): Garante alta disponibilidade (se um nó falha, outro assume) e velocidade de acesso.
Modelagem de Dados: Entidades e Atributos
- Entidade: Objeto do mundo real, concreto ou abstrato, que possui existência independente.
- Atributos: Cada entidade possui um conjunto particular de propriedades que a descreve.
- Atributo Composto: Um atributo que pode ser subdividido.
- Atributo Simples: Um atributo que não pode ser subdividido.
Tipos de Chaves
- Chave Primária (PK): Não deve se repetir e é única para identificar cada registro.
- Chave Composta: Duas ou mais entidades com suas chaves primárias combinadas em uma única chave.
- Chave Candidata: Uma entidade pode ter mais de uma chave. Nesse caso, cada uma das chaves é chamada de chave candidata.
- Chave Estrangeira (FK): É a chave formada através de um relacionamento com a chave primária de outra tabela.
Álgebra Relacional
- π (Projeção): Seleciona colunas (atributos).
- σ (Seleção): Filtra linhas (registros) com base em uma condição.
Exemplos de Operações
Projeção e Seleção Combinadas
Exemplo: Nome e sexo da tabela de funcionários.
π nmfunc, dtadm (σ sexo="f" (func))
SQL Equivalente:
SELECT nomefunc, dtadm FROM func WHERE sexo = 'f';
Observação: Se inverter a ordem (selecionar campos antes de filtrar), o filtro será aplicado, mas os campos podem não ser encontrados para seleção se a operação não for bem definida.
Produto Cartesiano e Seleção (Junção)
O produto cartesiano sozinho pode gerar dados inconsistentes.
Exemplo: Combinar funcionários e cargos.
func x cargo σ func.cdcargo = cargo.cdcargo
Os registros que não coincidirem serão excluídos da pesquisa.
SQL Equivalente:
SELECT * FROM func, cargo WHERE func.cdcargo = cargo.cdcargo;
Exemplo com Projeção:
π nomefunc, nomcargo (σ func.cdcargo = cargo.cdcargo (func x cargo))
Operações de Conjunto
Seja A = {0, 3, 4, 6, 8} e B = {1, 3, 5, 6, 7}
- Diferença:
A - B
é diferente deB - A
.A - B
= {0, 4, 8}B - A
= {1, 5, 7}
- União:
A ∪ B
= {0, 1, 3, 4, 5, 6, 7, 8} =B ∪ A
- Intersecção:
A ∩ B
= {3, 6} =A - (A - B)
- Diferença:
Junção Natural (A |x| B)
As chaves primária e estrangeira devem ter o mesmo nome para a junção natural implícita.
Exemplo:
π nomefunc, nomcargo (Func |x| Cargo)
Observação: Na tabela
Func
deve haver uma chave correspondente na tabelaCargo
(Ex:cdcargo
em ambas).
Roteiro de Aplicação da Normalização
A normalização é um processo para organizar as colunas e tabelas de um banco de dados relacional para minimizar a redundância de dados e melhorar a integridade dos dados.
1. Aplicação da Primeira Forma Normal (1FN)
- Identificar a chave primária da tabela original.
- Decompor a entidade em uma ou mais entidades, movendo os atributos multivalorados para a nova entidade.
- Escolher um novo atributo na nova entidade para ser a chave primária; se não for possível, crie um novo campo. Este será concatenado com a chave primária da tabela original.
- Estabelecer o relacionamento e a cardinalidade entre as entidades.
2. Aplicação da Segunda Forma Normal (2FN)
- Para entidades que contenham chaves primárias concatenadas, destacar os atributos que tenham dependência parcial em relação à chave primária concatenada.
- Criar uma nova entidade que conterá estes atributos, e que terá como chave primária os atributos dos quais se tenha dependência parcial.
- Serão criadas tantas entidades quanto forem os atributos da chave primária concatenada que gerem dependência parcial.
- Estabelecer o relacionamento e a cardinalidade entre as entidades.
3. Aplicação da Terceira Forma Normal (3FN)
- Verificar se existem atributos que sejam dependentes transitivos de outros que não pertencem à chave primária (seja ela concatenada ou não), bem como atributos que sejam dependentes de cálculo realizado através de outros atributos.
- Destacar os atributos com dependência transitiva, gerando uma nova entidade com este atributo e cuja chave primária é o atributo que originou a dependência. Manter na tabela original apenas o atributo chave da nova tabela gerada.
- Eliminar os atributos obtidos através de cálculos realizados a partir de outros atributos.
- Destacar os atributos que não tenham dependência funcional da chave primária, gerando uma nova entidade. Manter na tabela original apenas o atributo chave da nova tabela gerada.
Exemplos Práticos de Comandos SQL
Gerenciamento de Banco de Dados e Tabelas
CREATE DATABASE [nome_do_banco];
USE [nome_do_banco];
CREATE TABLE [nome_da_tabela] (
NumPed INT PRIMARY KEY,
PrazoEntrega SMALLINT NOT NULL,
CodVendedor INT NOT NULL,
CodCli INT,
ValorTotalPed DECIMAL(10,2) NOT NULL
);
DROP TABLE Pedido; -- Apaga a tabela 'Pedido'
Relacionamento via Chave Estrangeira
-- Exemplo de como adicionar uma chave estrangeira
-- ALTER TABLE Pedido
-- ADD CONSTRAINT FK_Pedido_Client FOREIGN KEY(CodCli)
-- REFERENCES Client (CodCli);
Manipulação de Dados (DML)
-- Inserindo dados na tabela Produtos
INSERT INTO Produtos (CodProdu, UnidProdu, DescriProdu, ValorUniProdu)
VALUES (1, 'L', 'Álcool', 5.00);
-- Inserção simplificada (todos os campos na ordem)
INSERT INTO Produtos VALUES (45, 'L', 'Álcool', 5.00);
-- Selecionando todos os dados da tabela Produtos
SELECT * FROM Produtos;
-- Excluindo um registro específico
DELETE FROM Produtos WHERE CodProdu = 21;
-- Atualizando dados (cuidado: afeta todos os registros se não houver WHERE)
-- UPDATE Produtos SET DescriProdu = 'Parafuso'; -- Afeta todos os registros!
-- Atualizando um registro específico
UPDATE Produtos SET DescriProdu = 'Parafuso' WHERE CodProdu = 2;