Fundamentos de Banco de Dados e SQL Essencial
Classificado em Computação
Escrito em  em  português com um tamanho de 9,04 KB
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 - Funcdeve haver uma chave correspondente na tabela- Cargo(Ex:- cdcargoem 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;
