29
Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Embed Size (px)

Citation preview

Page 1: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Linguagem de Banco de Dados - SQL

Disciplina de Linguagem de Banco de dados – QI – Aula2Prof. Luciano Monteiro

Page 2: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Modelo de Dados - níveis de abstração

Page 3: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Modelo conceitual

Independente de tipo de SGBD– Registra

Estrutura dos dados podem aparecer no banco de dados

– Não registraComo estes dados estão armazenados

a nível de SGBD

Page 4: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Modelo conceitual - diagrama ER

Técnica mais difundida de modelagem conceitual– Abordagem entidade-relacionamento (ER)

Modelo conceitual é representado através de:– diagrama entidade-relacionamento (DER)

Page 5: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Modelo conceitual - diagrama ER

Page 6: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Modelo lógico

Nível de abstração visto pelo usuário do SGBD

Dependente do tipo particular de SGBD que está sendo usado

Ex.: PostgreSQL <> Oracle <> Interbase

Page 7: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Modelo lógico

SGBD relacional para o exemplo

Page 8: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Modelo lógico para o exemplo

TipoDeProduto(CodTipoProd, DescrTipoProd) Produto(CodProd, DescrProd, PrecoProd,

CodTipoProd) CodTipoProd referencia TipoDeProduto

Page 9: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Modelo Físico

Contém detalhes de armazenamento interno de

informações Detalhes que

– não têm influencia sobre a programação de aplicações no SGBD

– influenciam a performance da aplicações

Usados por profissionais que fazem sintonia de

performance em banco de dados

Page 10: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Idéia fundamental do projeto de bancode dados

Através da identificação das

entidades que terão informações

representadas no banco de dados,

possível identificar os arquivos que

comporão o banco de dados

Page 11: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Projeto de Banco de Dados

Há múltiplas modelagens possíveis… qual escolher?

Pessomóvel (Id, Nome, Chassis, Modelo, Ano…)

Page 12: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Problemas na Concepção

Redundância (espaço de armazenamento)– Proprietário de diversos automóveis !

Atualização inconsistente– Alteração de nome em uma tupla… em todas ?!

Anomalias de Atualização– (inclusão) Pessoa que não tem automóvel;– (exclusão) Perde informações da pessoa quando

último carro é vendido!

Page 13: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Teoria da Normalização

Formalismos para “boa” concepção de umesquema de BD relacional

– Sem informações redundantes– Evita anomalias de atualizações

Principais conceitos envolvidos– Dependências funcionais (DFs)– Formas normais– Algoritmos de decomposição

Page 14: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Dependências Funcionais

O que são “Dependências” ? Especificam propriedades sobre dados

válidos no banco de dados– Dependência de inclusão:

“todo aluno é uma pessoa”

– Dependência funcional: “todo empregado trabalha no máximo em um

departamento”

Page 15: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Dependências Funcionais

Utilização: Verificação de restrições de integridade Otimização de consultas Concepção de esquemas: formas normais

Page 16: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Objetivo da Decomposição

Particionar a tabela em esquemas relacionais menores de forma a eliminar, parcial ou totalmente, as redundâncias e

anomalias de Atualização.

Page 17: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Normalização da Informação

Conduz a um esquema da BD relacional capaz de suportar os dados relevantes a um dado universo.

Ao normalizarmos a informação estamos a garantir:– A não existência de redundâncias (cada dado deve ser

armazenado uma única vez e numa única localização);– Consistência da Informação - Qualquer operação de

manipulação da informação (Inserção, Alteração, Destruição) deve afetar uma só ocorrência de um dado;

– Visão relacional dos dados.

1ª, 2ª e 3ª Formas Normais, Boyce-Codd Normal Form, 4ª e 5ª formas normais.

Page 18: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Formas Normais

Primeira Forma Normal (1FN)– Uma relação R está em 1FN se todos os atributos

são atômicos/indivisíveis

Segunda Forma Normal (2FN)– Uma relação R está em 2FN se estiver em 1FN e

nenhum atributo não-primo depender funcionalmente de uma parte da chave

Page 19: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Formas Normais

Terceira Forma Normal (3FN)– Uma relação R está em 3FN se estiver em 2FN e

todo atributo não primo depender apenas de um atributo primo;

Page 20: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Ponto de equilíbrio...

Objetivos: flexibilidade vs. desempenho. Na maioria dos casos o processo de

normalização pára na 3FN.

Page 21: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Tipos de dados do Banco de Dados

VARCHAR CHAR SMALLINT INTEGER BIGINT FLOAT DOUBLE PRECISION TIMESTAMP TIME DATETIME DATE BLOB NUMERIC

Page 22: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Comandos SQL

Comando Descrição

SELECT Recupera dados do Banco de Dados

INSERTUPDATEDELETE

Insere novas linhas, altera linhas existentes e remove linhas de tabelas do banco de dados, respectivamente. Estes comandos são conhecidoscomo comandos DML (Data Manipulation Language).

CREATEALTERDROPRENAMETRUNCATE

Cria, altera e remove objetos do banco de dados. São conhecidoscomo comandos DDL (Data Definition Language).

COMMITROLLBACKSAVEPOINT

Gerenciam as modificações realizadas pelos comandos DML. Asmodificações efetuadas pelos comandos DML podem ser agrupadas em transações lógicas.

GRANTREVOKE

Atribuem e removem direitos de acesso ao banco de dados e aos objetos a ele pertencentes. São conhecidos como comandos DCL (Data Control Language).

Page 23: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Instruções DDL - SQL

(Data Definition Language) Comandos de definição de estrutura no

SGBD.

Page 24: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Criação de Tabelas

CREATE TABLE TABELA1 (COLUNA1 TIPO NOT NULL,COLUNA2 TIPO,COLUNA3 TIPO,

COLUNA4 TIPO,PRIMARY KEY (COLUNA1),FOREIGN KEY (COLUNA2) REFERENCES TABELA2 (COLUNA1),CHECK (COLUNA3 < COLUNA4));

Page 25: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Exclusão de Tabela

DROP TABLE TABELA1;

Page 26: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Alteração de Tabela

ALTER TABLE TABELA1

ADD CAMPO5 TIPO

ADD CAMPO6 TIPO NOT NULL,

DROP CAMPO3,

ALTER CAMPO1 TO CAMPO2;

Page 27: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Criação de Índices

CREATE INDEX NOMEINDICE ON TABELA (CAMPO1, CAMPO2,…);

Page 28: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Alteração de Índice

ALTER INDEX NOMEINDICE INACTIVE;

ALTER INDEX NOMEINDICE ACTIVE;

Page 29: Linguagem de Banco de Dados - SQL Disciplina de Linguagem de Banco de dados – QI – Aula2 Prof. Luciano Monteiro

Exclusão de Índice

DROP INDEX NOMEINDICE;