BANCO DE DADOS

189
Araújo 1 BANCO DE DADOS Araújo Lima Jul / 2014

Transcript of BANCO DE DADOS

Araújo 1

BANCO DE DADOS

Araújo Lima

Jul / 2014

Araújo 2

Índice ...

• Conceitos de Bancos de Dados

• Arquiteturas de SGBD

• SGBD X SGA

• Modelos de dados

• Modelos Lógicos de Dados

• Modelo de Entidades e Relacionamentos

• Extensões do MER

• Mapeamento MER MR

• Modelo Relacional

• Normalização

• Linguagem SQL

• Consultas mais

complexas

• Stored Procedure

• Triggers

Araújo 3

CONCEITOS DE BANCO DE DADOS...

• CHU - 1983

Um banco de dados é um conjunto de arquivos

relacionados entre si

• DATE - 1985

Um banco de dados é uma coleção de dados

operacionais armazenados usados pelos

sistemas de aplicação de uma determinada

organização

Araújo 4

...CONCEITOS DE BANCO DE DADOS...

• ELMARSI & NAVATHE - 1989

Um banco de dados é uma coleção de dados

relacionados

• ENGLES

Um banco de dados é uma coleção de dados

operacionais usados pelos sistemas aplicativos

de uma empresa

Araújo 5

...CONCEITOS DE BANCO DE DADOS...

Dados Operacionais

Projetos Funcionários

DepartamentosProdutos Fornecedores

Aloca

Fornece Lota

Araújo 6

...CONCEITOS DE BANCO DE DADOS...

cpf-cgc, nome, ender, dt-nasc nºconta, sld-atu, sld-med, cpf-cgc

SGBDcpf-cgc, nºcotas

CONTA CORRENTE FUNDO DE INVESTIMENTO

SISTEMAS QUE USAM SGBD

BD . . .

SI . . .

Araújo 7

...CONCEITOS DE BANCO DE DADOS...

Ambiente de Banco de Dados envolve:

• Dados - em um ou mais arquivos

• Metadados - Dicionário de Dados

• Software - SGBD (interface entre usuários e dados)

• Hardware - discos

• Usuários - DBA, Programadores de Aplicação, Usuários Finais

Araújo 8

...CONCEITOS DE BANCO DE DADOS...

• SGBD

– dá suporte ao acesso dos usuários aos dados

– esconde do usuário detalhes de

armazenamento dos dados

• Programador de Aplicação

– codifica programas batch ou on-line para

manter o BD

Araújo 9

...CONCEITOS DE BANCO DE DADOS...

• DBA - Administrador de BD define:

– que dados manter no BD

– estrutura que deve ter o BD

– estratégias de acesso

– que esquema de back-up adotar

– procedimentos de autorização

– como monitorar / sintonizar/ reorganizar o BD

Araújo 10

...CONCEITOS DE BANCO DE DADOS...

• Usuário Final

Acessa o Banco de Dados via:

– linguagem de consulta (query language )

– programas de aplicação

Araújo 11

...CONCEITOS DE BANCO DE DADOS...

• Um BD representa aspectos do mundo real

• Um BD é projetado, construído e os dados são

nele armazenados com algum propósito

• Um BD é definido e mantido por uma coleção de

programas (SGBD)

• Sistema de Banco de Dados = Dados +

Programas (SBD = BD + SGBD )

Araújo 12

...CONCEITOS DE BANCO DE DADOS...

Bancos de dados X Linguagens

• DDL - Linguagem de definição de dados

(create, drop, alter...)

• DML - Linguagem de manipulação de dados

(insert, update, delete, select, ...)

• DCL - Linguagem de controle de acesso aos

dados (grant, revoke, commit, rollback, ...)

Araújo 13

...CONCEITOS DE BANCO DE DADOS...

Características de um SGBD:

• BD = Dados + Metadados

Um sistema de Banco de Dados contém,

além dos dados normais, uma descrição

completa desses dados num dicionário de

dados (Catálogo)

Araújo 14

...CONCEITOS DE BANCO DE DADOS...

Características de um SGBD:

• Abstração de dados

Um SGBD permite uma representação conceitual dos dados evitando preocupação com detalhes de armazenamento de dados

• Suporte a múltiplas visões de dados

Cada usuário acessa apenas o que lhe é dado direito a acessar

Araújo 15

...CONCEITOS DE BANCO DE DADOS...

Características de um SGBD:• Controle de redundância

Sem repetição de dados não há inconsistência

• Compartilhamento de dados

Acesso multiusuário com controle de

concorrência garantido

• Processamento de transação

Recuperação em caso de falha

Araújo 16

...CONCEITOS DE BANCO DE DADOS...

Características de um SGBD:• Segurança contra acesso indevido

Diferentes visões asseguram confidencialidade

• Múltiplas Interfaces

Acesso via menu, linguagem natural, query

language, linguagem de programação

Araújo 17

...CONCEITOS DE BANCO DE DADOS...

Características de um SGBD:

• Relacionamentos complexos

Uma entidade pode relacionar-se com outras de

forma binária, ternária, ...

• Restrições de Integridade

Armazenadas no BD “enxugam” os programas

de aplicação

Araújo 18

...CONCEITOS DE BANCO DE DADOS...

Características de um SGBD:

• Independência lógica de dados

A capacidade de se modificar o esquema conceitual sem ter que modificar o esquema externo ou programas de aplicação. Ex.: adição de uma coluna numa tabela no modelo conceitual não exige alteração dos programas

Araújo 19

...CONCEITOS DE BANCO DE DADOS...

Características de um SGBD:

• Independência física de dados

É a capacidade de se modificar o esquema Interno sem ter que modificar os esquemas conceitual ou externo.

Ex.: a inclusão de um índice no esquema interno não exige alteração dos programas nem do esquema conceitual

Araújo 20

...CONCEITOS DE BANCO DE DADOS

Características de um SGBD:

• Dados separados de programas

Definição das estruturas de dados armazenada fora dos programas de aplicação e dentro do SGBD (catálogo): alteração de estruturas de dados evita recompilação de programas

Araújo 21

ARQUITETURAS DE SGBD...

Arquitetura de 3 Níveis (Visões)

Externo (Visão de usuário)

(Usuário)

Conceitual (Visão Total do BD)

(Adm. Dados)

Interno (Visão do Armazenamento)

(DBA)

. . .

Araújo 22

... ARQUITETURAS DE SGBD

ESQUEMA CONCEITUAL:

CLIEN (Nome, DataCadast, LimCred)

ESQUEMA EXTERNO: Arq. 3 Esquemas

CLIEN (Nome, DataCadast, LimCred)

PROD (Codigo, Descriçao, Preço)

ESQUEMA INTERNO:

Formato do Registro CLIEN .....

Formato do Registro PROD .....

Araújo 23

SGBD X SGA ...

• SGBD - software responsável pela definição,

criação e manutenção de um BD

• SGA - conjunto de rotinas do sistema operacional

responsáveis pelo sistema de arquivos (SA) e

respectivos métodos de acesso

• SA - arquivos convencionais (seqüenciais,

indexados, randômicos) e suas operações

Araújo 24

... SGBD X SGA ...

Mundo real

MER

SGBDOORelacional

Rede

Hierárquico

SGBD Específico

SGA

Máquina

Araújo 25

... SGBD X SGA

SGA

SGBD

Alto nível

Baixo nível

Araújo 26

MODELOS DE DADOS ...

Ferramenta usada para descrever a

estrutura de um BD

Compõe-se de:

• Estruturas de dados

• Operações

• Restrições de integridade

Araújo 27

... MODELOS DE DADOS ...

Conceitual

Lógico

Físico

Modelo Conceitual

descreve dados num nível de

abstração muito próximo ao

mundo real

Exemplos:

•Modelo Semântico

•MER

Mundo

real

Araújo 28

... MODELOS DE DADOS ...

Conceitual

Lógico

Físico

Modelo Lógicodescreve dados ao nível de registro bem próximo da

implementação física.

Exemplos:• Relacional• Rede• Hierárquico

Mundo

real

Araújo 29

... MODELOS DE DADOS ...

Conceitual

Lógico

Físico

Modelo Físico

descreve as estruturas de dados

ao nível de armazenamento

físico dos dados, definindo:

•Tipo e tamanho de dados

• Índices

Mundo

real

Araújo 30

... MODELOS DE DADOS ...

Fase do Projeto de BD Modelo de Dados

Conceitual Semântico / MER

Lógico

Relacional

Rede

Hierárquico

Físico Físico

Mundo

real

Araújo 31

... MODELOS DE DADOS

Esquema

Descrição gráfica ou textual de um BD conforme

um modelo de dados

Exemplo de esquema relacional:

FUNC(mat, nome, sal, dep)

DEPA(dep, descr)

DEPE(mat, seq, nomd,sexd)

Araújo 32

MODELOS LÓGICOS DE DADOS ...

RELACIONAL

• Entidades como tabelas e relacionamentos como colunas em pares de tabelas

• Restrições de Integridade:

– componente de PK não pode ser null

– para cada valor de FK em uma tabela deve existir um valor de PK em outra tabela

• Operações: seleção, projeção, junção, união ...

Araújo 33

... MODELOS LÓGICOS DE DADOS ...

RELACIONAL

• Dados armazenados de forma tabular

• Usuário vê um conjunto de tabelas

• Ligações implícitas compartilhando chaves

num nível lógico

• Navegação automática: otimizador de query

Araújo 34

... MODELOS LÓGICOS DE DADOS ...

A

CB

D E

A 2 B 1

3 C 1 4 D 2

1

5 E 2 3

MER RELACIONAL

Araújo 35

... MODELOS LÓGICOS DE DADOS

• SGBD´S RELACIONAIS

– ORACLE

– INGRES

– DB2

– SQL SERVER

– MYSQL

– POSTGRESQL

Araújo 36

...POR QUE MODELAGEM DE DADOS ?

• modelo prévio de dados é um

excelente instrumento de documentação

do mundo real, em tempo de entrevista

• levanta e documenta a parte mais estável

de uma aplicação: os dados

• execelente ferramenta gráfica de projeto

conceitual de bd

Araújo 37

MODELO DE ENTIDADES E RELACIONAMENTOS (MER) ...

• proposto por Peter S. Chen - 1976

• entidade-algo sobre o que se armazena dados

-representação abstrata de algo do mundo real

ex.: aluno, cliente, nota fiscal, ...

• conjunto de entidades - grupo de entidades com características semelhantes ex.: alunos, clientes, notas fiscais,...

Araújo 38

... MER ...

• relacionamento - associação entre elementos de conjuntos de entidades

• relacionamento binário - é um par ordenado (e1, e2), onde e1 e e2 são respectivamente elementos dos conjuntos das entidades E1 e E2

ALUNOS DISCIPLINASCURSA

MAT NOM COD DESNOTA PERÍODO

Araújo 39

... MER ...

• conjunto de relacionamentos - grupo de relacionamentos do mesmo tipo ; no caso binário, conjunto de pares ordenados c (a, d) onde: a e d D

• grau de um relacionamento - número de conjuntos de entidades envolvidos no relacionamento. ex.: unário, binário, ternário, ...

Araújo 40

... MER ...

• classe ou cardinalidade dos relacionamentos

razão entre as quantidades de entidades com

que cada conjunto participa do relacionamento

• exemplos de classes de relacionamentos:

– binários: 1 : 1 1 : n m : n

– ternários: 1 : m : n m : n : p

Araújo 41

... MER ...

PROJETOS

FUNCIONÁRIOS DEPARTAMENTOS

CHEFIA

TRABALHAALOCA

GERENCIA

DT-POSSE

DT-ALOCHOR-TRAB

Araújo 42

... MER ...

• RELACIONAMENTO UNÁRIO OU RECURSIVO OU

AUTORELACIONAMENTO

PESSOAS PRODUTOS

CASA COMPÕE

ESPOSA MARIDO

1 1 M N

É-COMPOSTO É-COMPONENTE

PAPEL DA ENTIDADE NO RELACIONAMENTO

Araújo 43

... MER ...

• RELACIONAMENTO TERNÁRIO

ITENS P-R-I REQUISIÇÕES

PEDIDOS

M N

P

- A UM ITEM E UM PEDIDO CORREPONDEM N REQUISIÇÕES

- A UMA REQUISIÇÃO E UM PEDIDO CORRESPONDEM M ITENS

- A UMA REQUISIÇÃO E UM ITEM CORRESPONDEM P PEDIDOS

Araújo 44

... MER ...

• RELACIONAMENTO TERNÁRIO ...

PROFESSORES P-A-D ALUNOS

DISCIPLINAS

1 N

M

- UM ALUNO CURSA UMA DISCIPLINA COM UM PROFESSOR

- UM PROFESSOR MINISTRA UMA DISCIPLINA PARA N ALUNOS

- UM PROFESSOR MINISTRA PARA UM ALUNO M DISCIPLINAS

Araújo 45

... MER

• RELACIONAMENTO QUATERNÁRIO

CLIENTES

EXECUTA

FUNCIONÁRIOS

ATIVIDADESSISTEMASM

N

P

Q

CDA

NMA

CDS

NMS

NMFMAT

NMCCDC

DT-FIMDT-INI

HOR-INI HOR-FIM

Araújo 46

EXTENSÕES DO MER ...

• atributos compostos - formados por mais de um atributo

• atributos multivalorados - levam uma entidade a mais de um ponto do conjunto de valores

CLIENTESoo FONES

oENDEREÇO

oLOGRADOUROo CEP

oo

o APTO

NUMNOME

Araújo 47

... EXTENSÕES DO MER ...

• parcialidade / totalidade

- nem todo funcionário gerencia um departamento ( parcial)

- todo departamento é gerenciado por um funcionário (total)

FUNCIONÁRIOS DEPARTAMENTOSGERENCIA1 1

Araújo 48

... EXTENSÕES DO MER ...

• RELACIONAMENTOS TOTAIS E PARCIAIS

PESSOAS CIDADES

MORA

NASCE

CASA

1 1

N 1

N 1

NOME

POPULAÇÃO

DT-NASCNOME

Araújo 49

... EXTENSÕES DO MER ...

• cardinalidade dos relacionamentos com

valores máximo e mínimo de entidades que

se associam

• chave - identifica entidades

ALUNOS DISCIPLINASCURSA

( 0 , 40 ) ( 1 , 6 )

MAT NOM COD DESPERÍODONOTA

Araújo 50

... EXTENSÕES DO MER ...

Agregação / Decomposição

Alunos DisciplinasCursa

Turmas

Ensina

Professores

Aluno “é-parte”

da Turma

Disciplina “é-parte”

da Turma

Não há herança

m n

Araújo 51

... EXTENSÕES DO MER ...

Médicos PacientesAtende

Consultas

Faz

Exames

Médico “é-parte”

da Consulta

Paciente “é-parte”

da Consulta

Não há herança

AGREGAÇÃO - identificação de uma superentidade

a partir do relacionamento entre outras entidades

m n

Araújo 52

... EXTENSÕES DO MER ...

• agregação - abstração que permite:

- tratar relacionamentos como entidades de nível

mais alto

- modelar um relacionamento entre uma entidade e

um relacionamento (este geralmente m : n)

Araújo 53

... EXTENSÕES DO MER ...

• GENERALIZAÇÃO / ESPECIALIZAÇÃO

CLIENTES

PESSOAS

FÍSICAS

PESSOAS

JURÍDICAS

ESPECIALIZAÇÃO

GENERALIZAÇÃOCOD

NOMENDER

CPF SEXO EST-CIV

NR-MESES-EX

MES-INCAPITAL

COD

CGC

COD

AS SUB-CATEGORIAS (SUB-TIPOS) HERDAM OS ATRIBUTOS

DA CATEGORIA (SUPERTIPO)

Araújo 54

... EXTENSÕES DO MER ...

• hierarquia de generalização - uma categoria de

entidades C é uma generalização de um conjunto

de entidades S1, S2, ... , Sn, chamadas sub-

categorias de C, se cada conjunto de entidades Si

for um sub-conjunto de C e, cada instância de C

for uma instância de um e somente um dos

conjuntos de entidades S1, S2, ... , Sn

Araújo 55

... EXTENSÕES DO MER ...

– GENERALIZAÇÃO - formação de superentidades a

partir de outras entidades; é possível falar: ...é um....,

...é um tipo de ..., ...é um subconjunto de ...

Professores

Concursados Visitantes

Concursado é um professor

cod

nom

instituiçãocod

periodo

codclassific

dt-concurs

Araújo 56

... EXTENSÕES DO MER ...

- ESPECIALIZAÇÃO - identificação de subentidades a

partir de uma entidade; cada subentidade tem

características (atributos) adicionais

Professores

Concursados Visitantes

cod

nom

instituiçãocod

periodo

codclassific

dt-concurs

Especialização Generalização

Araújo 57

... EXTENSÕES DO MER ...

Func

Engenh Secretar ComissionMensalistGerentes

Projetos N.Fiscais

EmiteGerencia

1

n

1

1

nr-crea toq.p.hora sal-mes vlc

3 Espec de Func:

Engehn/Secretar

Gerentes

Mensalist/Comission

GEN / ESPEC

Araújo 58

... EXTENSÕES DO MER ...

ZÉ SÁ ED DÉ DI JÔ

ZÉ ED JÔSÁ DÉ

Funcionários

PedreirosEngenheiros

Um engenheiro “é-um” funcionário

ZÉ, engenheiro, é o funcionário ZÉ

O engenheiro ZÉ é a mesma entidade que o funcionário ZÉ,

apenas está desempenhando um papel diferente

GEN / ESPEC

Araújo 59

... EXTENSÕES DO MER ...

É importante modelar especialização quando:

• Certos atributos aplicam-se somente a algumas e

não a todas as entidades(objetos) da

superentidade; uma subentidade é um conjunto

de entidades ao qual estes atributos se aplicam

• Alguns relacionamentos podem envolver apenas

as entidades da subentidade (apenas os

comissionistas emitem nota fiscal)

Araújo 60

... EXTENSÕES DO MER ...

Automóveis

• Placa

• Marca

• Km

• AnoFabricação

• Preço

• NrPassageiros

• VelocidadeMáxima

Caminhões

• Placa

• Marca

• Km

• AnoFabricação

• Preço

• Tonelagem

• NrEixos

Araújo 61

... EXTENSÕES DO MER

Veículos

Automóveis Caminhões

Placa

Km

AnoFabric

Marca

Preço

Placa PlacaNrPassagVelMax NrEixos Tonelagem

O relacionamento (1:1) entre objetos da superentidade e

de uma subentidade é do tipo “é-um” (caminhão é um

veículo)

Araújo 62

CHAVES ...

• chave primária - conjunto de atributos que

identificam uma única entidade ex.: MATF + NRD,

MAT, CDD ...

• chave candidata- conjunto de atributos que podem

ser chave primária ex.: MAT, RG, CDD, ...

DEPARTS FUNCS DEPENDS

CDD NMD MAT NMF SEX RGSAL

CDDEP

MATF NRD NMD

Araújo 63

chave secundária ou alternada - conjunto de

atributos que identificam um grupo de

entidades ex.: SAL, SEX, ...

... CHAVES ...

DEPARTS FUNCS DEPENDS

CDD NMD MAT NMF SEX RGSAL

CDDEP

MATF NRD NMD

Araújo 64

DEPARTS FUNCS DEPENDS

CDD NMD MAT NMF SEX RGSAL

CDDEP

MATF NRD NMD

... CHAVES ...

•chave estrangeira - conjunto de atributos que são

chave primária em outro conjunto de entidades

ex.:CDDEP, MATF , ...

Araújo 65

... CHAVES ...

• chave externa ou surrogate key - número sequencial

sem qualquer semântica, introduzido para ser chave

primária de um conjunto de entidades ex.:NRD, MAT, ...

DEPARTS FUNCS DEPENDS

CDD NMD MAT NMF SEX RGSAL

CDDEP

MATF NRD NMD

Araújo 66

... CHAVES

• como escolher a chave primária

– deve ser a menor possível

– valor não deve mudar ao longo da vida

da entidade

– não pode ser null (nem parcial, nem

totalmente)

Araújo 67

MAPEAMENTO MER --> MR...

FUNCIONÁRIOS PROJETOS

MAT NOM NMPCDP

ALOCA

DT-ALOC

FUNCIONÁRIOS PROJETOS

MAT NOM NMPCDP

N 1

CDP

DT-ALOC

chave primária do lado 1 vai para o lado n

atributos do relacionamento vão para o lado n

1 : N

Araújo 68

...MAPEAMENTO MER --> MR...

ALUNOS DISCIPLINASCURSA

M N

CDA NMA CDD NMDNOTA PERÍODO

ALUNOS DISCIPLINASAL-DI

NMA CDD NMDNOTA PERÍODO

CDA

M : N

. quebra relacionamento m : n em dois 1 : n

. atributos do relacionamento ficam na entidade intermediária

. chaves primárias das entidades fazem parte da chave primária

da entidade intermediária

CDA CDD

Araújo 69

...MAPEAMENTO MER --> MR...

MÉDICOS HOSPITAISDIRIGE

1 1CDM NMM CDH NMH

DT-POSSE

MÉDICOS HOSPITAIS

CDM NMM CDH NMH CDMDT-POSSE1 : 1

. atributos do relacionamento vão para a entidade

que tem participação total no relacionamento

. chave primária da entidade do lado mais populoso vai ser chave estrangeira no lado menos populoso

Araújo 70

...MAPEAMENTO MER --> MR...

FUNCIONÁRIOS CHEFIA

1

N

CHEFE

SUBORDINADO

MAT

NOM

FUNCIONÁRIOS

MAT NOM MATCHEFE

Araújo 71

...MAPEAMENTO MER --> MR...

PEÇAS COMPÕE

M

N

COMPONENTES

COMPOSTOS

COD

DES

PEÇAS COMPÕE

CD-COMPONENTE

QTD

QTD

CD-COMPOSTO

COD

DES

Araújo 72

...MAPEAMENTO MER --> MR...

FUNCIONÁRIOS DEPARTAMENTOSALOCA

1N

GERENCIA1 1

CURSOSCURSA

MNCHEFIA

1 N

NOMMAT DESCDD

NMCCDC

DT-ALOC

DT-POSSE

Araújo 73

...MAPEAMENTO MER --> MR...

FUNCIONÁRIOS DEPARTAMENTOS

CURSOSCURSA

MAT NOM

CDD NMD

DT-POSSE

CDC NMCMAT CDC DT-CUR

MAT-CH

CHEFE SUBORDINADO

CDD

DT-ALOC

ALOCA

MAT-GERGERENCIA

Araújo 74

...MAPEAMENTO MER --> MR...

MODELO

CONCEITUAL

MODELO

LÓGICO

MODELO

FÍSICO

MER .................

MODELO RELACIONAL.....

Mundo

real

Araújo 75

...MAPEAMENTO MER --> MR...

A R B

CA AA AR CB AB

A B1 1

CA AA CB AB

CB AR

A R B A B1 N

CA AA AR CB AB CA AA CB AB

CA AR

A R B

CA AA AR CB AB

M NA A-B B

CA AA CB ABAR

CA CB

Araújo 76

...MAPEAMENTO MER --> MR...

Relacionamento M X N se transforma em 2

relacionamentos 1 : N (1 nas pontas, N no meio)

FUNCIONÁRIOS DEPARTAMENTOSLOTAÇÕES

MAT NOM CDD NMDMAT CDD DAT

100 ARI

200 ANA

300 EVA

VEN VENDAS

PRO PRODUÇÃO

ADM ADMINISTRAÇÃO

100 ADM JAN / 80

100 VEN MAR / 85

200 VEN OUT / 86

300 PRO MAR / 90

Araújo 77

...MAPEAMENTO MER --> MR...

A

B C

CA AA

AB AC

A

B C

CA AA

AB AC

CA CA

1

1 1

Araújo 78

...MAPEAMENTO MER --> MR...

A R B

C

M N

P

A R B

C

CA AA

CC AC

CB AB

AR

CC AC

CB ABCA AA

CACB CC

AR

Araújo 79

...MAPEAMENTO MER --> MR

A R B

S

M N

P

A R B

S

CC AS

CB ABCA AA

CACB AR

AR

C

CA CB

ACCCC

AS

CC AC

CA AACB AB

Q

Araújo 80

Modelo Relacional ...

• O modelo relacional foi proposto em um paper clássico, por Ted Codd em 1970

• O modelo tem como base matemática a teoria dos conjuntos e usa o conceito de relação matemática que se assemelha a uma tabela bidimensional

• O modelo relacional usa as operações da Álgebra Relacional

Araújo 81

... Modelo Relacional ...

• Os elos são implícitos

• O usuário vê o banco de dados como um conjunto de relações (tabelas)

FUNCIONÁRIOS

MAT NOME DEPART

100 ANA VEN

200 EDU PRO

300 ARI ADM

400 EVA O&M

relação (tabela)

atributos

tuplas (linhas)

valor de atributo

domínios

Araújo 82

... Modelo Relacional ...

UMA RELAÇÃO PODE SER REPRESENTADA SOB A FORMA DE TABELA, ONDE:

- Cada coluna representa um atributo

- Cada linha representa uma ocorrência de: * UMA ENTIDADE * UM RELACIONAMENTO

- Linha (tupla) é um conjunto de colunas (atributos)

Araújo 83

... Modelo Relacional ...

UMA RELAÇÃO PODE SER REPRESENTADA SOB A FORMA DE TABELA, ONDE: ...

- DOMÍNIO - conjunto de valores do atributo

- GRAU DE UMA RELAÇÃO - número de atributos da tupla da relação

- CHAVE PRIMÁRIA - um ou mais atributos que identificam uma única linha (tupla)

- EX.: ALUNO (MAT, NOM, DT-NASC, SEXO)

Araújo 84

... Modelo Relacional

Esquema relacional

Func (mat, nom, sal, sex, dtNasc, cdd, match)

Depa (cdd, dsd, orcamento)

Depe (mat, seq, nomd, sexd, parentesco)

Proj (cdp, dsp)

FunPro (mat, cdp, horasTrab)

Curso (cdc, dsc, cargaHoraria)

FunCurs (mat, cdc, datc, nota)

Araújo 85

NORMALIZAÇÃO ...

• Simplificação de relações a fim de que os

algoritmos de atualização de dados sejam mais

simples e mais claros

• Como sub-produto: ELIMINAÇÃO DA

REDUNDÂNCIA DE DADOS

• Resultado das pesquisas de E. F.CODD

Araújo 86

... NORMALIZAÇÃO ...

• a matrícula de um funcionário determina

funcionalmente o nome bem como o salário

do funcionário

MATRÍCULA NOME

MATRÍCULA SALÁRIO

Se A determina funcionalmente B, então

B depende funcionalmente de A, logo:

NOME depende funcionalmente de MATRÍCULA

Araújo 87

... NORMALIZAÇÃO ...

• DEPENDÊNCIA FUNCIONALFUNC ( MAT, NOME, SAL, CPF)

MAT

NOME

SAL

CPF

MAT NOME

MAT SAL

MAT CPF

CPF SAL

CPF NOME

CPF MAT

Araújo 88

... NORMALIZAÇÃO ...

• DEPENDÊNCIA FUNCIONAL COMPLETA

um conjunto de atributos B de R é

completamente dependente funcionalmente de

outro conjunto de atributos A de R, se B

depende funcionalmente de A, como um todo

Araújo 89

... NORMALIZAÇÃO ...

• TAREFA ( MAT, NOM, NU-PROJ, NM-PROJ, HORAS-TRAB)

MAT, NU-PROJ HORAS-TRAB

MAT NOM

MAT NOM NU-PROJ NM-PROJ HORAS-TRAB

Araújo 90

... NORMALIZAÇÃO ...

• QUAIS AS CHAVES DAS RELAÇÕES ABAIXO ?

PEDIDO (nr-ped, nr-cliente, dt-ped, vl-ped)

HIST-ALUNO (mat, nom, cd-disciplina, nota, periodo)

VENDA (nr-ped, nr-cli, nr-vendedor, cd-item, qt-vendida,

preço-unit, vl-item)

Araújo 91

... NORMALIZAÇÃO ...

• 1FN-NÃO HÁ GRUPO DE ATRIBUTOS REPETIDOS

FUNC (MAT, NOM, ENDER, DT-NASC, DEPENDENTES (NM-DEP, DT-NASC-DEP, PARENTESCO))

A relação não está em 1FN (RELAÇÃO NF2)

há n dependentes (grupos repetidos de atributos ) por funcionárioNormalizando, teríamos:

FUNC ( MAT, NOM, ENDER, DT-NASC)

DEPEN (MAT, SEQ, NM-DEP, DT-NASCD,PARENTESCO)

Araújo 92

... NORMALIZAÇÃO ...

• 2FN - A RELAÇÃO ESTÁ EM 1FN

- OS ATRIBUTOS NÃO-CHAVE DEPENDEM

FUNCIONALMENTE DA CHAVE TODA

ESTOQ(CD-ITEM, NM-ITEM, ESTAB, FONE-ESTAB, QTD)

CD-ITEM

NM-ITEM

ESTAB

FONE-ESTAB

QTD

ESTOQ não está em 2FN: nm-item

e fone-estab não dependem da

chave toda. Normalizando:

ITEM (CD-ITEM, NM-ITEM)

ESTA (ESTAB, FONE-ESTAB)

ESTO (CD-ITEM, ESTAB, QTD)

Araújo 93

... NORMALIZAÇÃO ...

• 3FN - A RELAÇÃO ESTÁ EM 2FN

- OS ATRIBUTOS NÃO-CHAVE SÃO

INDEPENDENTES ENTRE SI

ITEM-PED (NR-PED, NR-ITEM, QTD, PR-UNIT, VL-ITEM)

NR-PED

NR-ITEM

QTD

PR-UNIT

VL-ITEM

ITEM-PED NÃO ESTÁ EM 3FN :

VL-ITEM DEPENDE DE PR-UNIT

E DE QTD QUE NÃO SÃO CHAVE

Normalizando:

IT-PED(NR-PED,NR-IT,QTD,VL-IT)

Araújo 94

... NORMALIZAÇÃO ...

• normalização x performance- ideal do ponto de vista de performance:

todos os dados em um único registro

- ideal do ponto de vista de simplicidade: várias relações em 5FN

• como melhorar a performance em bd`s relacionais - criar índice (evita varrer tabela) - armazenar resumos

Araújo 95

... NORMALIZAÇÃO ...

• NOTA-FISCAL(NR-CLI, NM-CLI, EN-CLI, NR-NF, (CD-IT, DS-IT, QTD, PREÇO,VAL), TOT-NF,

CD-VENDEDOR, NM-VENDEDOR)

• FICARIA ARMAZENADA COMO:NR-CLI NM-CLI EN-CLI NR-NF CD-IT DE-IT 1206 SILVA RU X,20 468 126 PARAF 1206 SILVA RU X,20 468 130 PORCA 1206 SILVA RU X,20 476 140 ARRUEL 1300 MARIA RU Y,30 477 126 PARAF 1300 MARIA RU Y,30 477 130 PORCA

Araújo 96

... NORMALIZAÇÃO ...

• ANOMALIAS

- INCLUSÃO – incluir novo item exige nota fiscal

- EXCLUSÃO DE UM REGISTRO - exige verificar

existência do item mais de uma vez para não

perder os dados desse item com a exclusão

- ALTERAÇÃO - mudar endereço do cliente 1206

implica alterar vários registros

Araújo 97

... NORMALIZAÇÃO ...

• As anomalias existem por falta de independência de

dados: cliente misturado com nota fiscal, misturado

com produto, com vendedor.

NORMALIZANDO ....

CLIEN (NR-CLI, NM-CLI,EN-CLI)

NFIS (NR-NF, TOT-NF, NR-CLI,CD-VENDEDOR)

IT-NF(CD-IT, DS-IT, QTD, PREÇO,VAL,NR-NF)

VENDEDOR (CD-VENDEDOR, NM-VENDEDOR)

Araújo 98

... NORMALIZAÇÃO ...

•IT-NF (CD-IT, DS-IT, QTD, PREÇO, VAL, NR-NF)

ANOMALIAS NA RELAÇÃO ACIMA:

INCLUSÃO - só inclui um item se houver venda

ALTERAÇÃO - alterar descrição de um item, altera vários registros

EXCLUSÃO - excluir único registro que contém um item perde dados desse item

ALÉM DISSO, DS-IT DEPENDE FUNCIONALMENTE APENAS DE PARTE DA CHAVE. LOGO ....

Araújo 99

... NORMALIZAÇÃO ...

• ITENS (CD-IT, DS-IT, PREÇO)

• IT-NF (NR-NF, CD-IT, QTD, VAL)

• CLIEN(NR-CLI, NM-CLI, EN-CLI)

• VEND (CD-VENDEDOR, NM-VENDEDOR)

• NFIS (NR-NF,NR-CLI,TOT-NF,CD-VENDEDOR)

Araújo 100

... NORMALIZAÇÃO

CLIEN NFIS IT-NF

ITENSVEND

NR-NF

CD-ITQTD

VAL

NR-NF

CD-VENDEDOR

TOT-NF NR-CLI

NR-CLI NM-CLI EN-CLI

CD-VENDEDOR NM-VENDEDOR CD-IT

PRECO

DER

EQUIVALENTE

DS-IT

Araújo 101

Linguagem SQL ...

• Linguagem de Consulta Estruturada

• Linguagem comercial, declarativa, padrão

para acesso a bancos de dados relacionais

• Introduzida como linguagem de consulta

para o sistema R (inicialmente, SEQUEL)

• Trata conjuntos de tuplas (linhas)

• Álgebra Relacional é formal e procedural

Araújo 102

... Linguagem SQL ...

• Cria e manipula as estruturas de dados:

– TABLE - tabela real formada por linhas e

colunas

– INDEX - índice para otimizar o acesso às

linhas das tabelas

– VIEW - tabela virtual formada a partir de

outras tabelas (apenas a definição da visão é

armazenada em disco)

Araújo 103

... Linguagem SQL ...

Mat Nom Sex Sal Dep Match

100 Zé M 200,00 Pro 300

200 Sá M 210,00 Pro 300

300 Ed M 300,00 Pro 500

400 Dé M 320,00 Ven 500

500 Di F 500,00 Adm

FK FKPK

FUNC

Tabela

Araújo 104

... Linguagem SQL ...

Mat Nom Sex Dep

1 100 Zé M Pro

2 200 Sá M Pro

3 300 Ed M Pro

4 400 Dé M Ven

5 500 Di F Adm

Adm 5

Pro 1

Pro 2

Pro 3

Ven 4

Dep E

Idep Inom

Nom E

Dé 4

Di 5

Ed 3

Sá 2

Zé 1

Índices secundários

Create index Idep on func (dep)

Create index Inom on func (nom)

Araújo 105

... Linguagem SQL ...

Mat Nom Sex Dep

1 100 Zé M Pro

2 200 Sá M Pro

3 300 Ed M Pro

4 400 Dé M Ven

5 500 Di F Adm

100 1

200 2

300 3

400 4

500 5

Mat E

Imat Inom

Nom E

Dé 4

Di 5

Ed 3

Sá 2

Zé 1

EImat é um índice primário (mat é PK)

Imat é um índice clusterizado (índice e dados na mesma ordem)

Araújo 106

... Linguagem SQL ...

Índices - estruturas de dados que agilizam o

acesso às tuplas (linhas); podem ser:

• primário - campo de indexação é a chave primária não permitindo campos repetidos

• secundário ou alternado - campos de indexação são quaisquer atributos que não a chave primária

• clusterizado - a ordem das entradas no índice é a mesma das linhas da tabela

Araújo 107

... Linguagem SQL ...

Índice agiliza consulta e prejudica atualização

• Evitar muitos índices em tabela muito volátil (alta taxa de inclusão / exclusão)

• Em tabela pouco volátil, muitos índices agilizam acessos; desvantagem: maior consumo de disco

• Cuidado ao indexar coluna atualizada com muita freqüência

• Grandes tabelas: recomendável criar os índices após a carga dos dados

Araújo 108

... Linguagem SQL ...

Índice clusterizado

• Não é obrigatório, mas, só um por tabela

• Força os dados da tabela ficarem na mesma ordem das chaves do índice

• Favorece a leitura exaustiva mas prejudica muito a atualização

• O índice clusterizado deve ser o primeiro a ser criado entre os índices de uma tabela

Araújo 109

... Linguagem SQL ...

O que indexar ?

• Chave primária (checa unicidade)

• Chave estrangeira (usada em junções e na integridade referencial)

• Chave secundária que seja argumento de pesquisa freqüentemente feita

• Nome usado para consulta alfabética on-line

• Atributo fonetizado usado em pesquisa fonética

Araújo 110

... Linguagem SQL ...

O que indexar ?

• Em tabela associativa, além do índice primário composto, criar índice secundário (unique), invertendo as chaves

• Indexar colunas usadas em consultas freqüentes ou que classifiquem muitas linhas, usando order by, group by ou distinct

Araújo 111

... Linguagem SQL ...

O que não indexar ?

• Atributo com poucos valores (sexo = M / F)

• Atributo usado em consulta que recupera quase todas as linhas (otimizador não usará o índice)

• Atributo com alto percentual de valores null

• Atributo com alto percentual de valores duplicados (poucos valores; bom criar índice composto)

Araújo 112

... Linguagem SQL ...

Por que indexar?

• Aumentar performance das consultas

• Acelerar a execução das junções

• Aumentar a performance de execução de

cláusulas ORDER BY e GROUP BY

• Acelerar a verificação de restrições de

integridade

Araújo 113

... Linguagem SQL ...

Por que não indexar?

• Aumenta o consumo de disco

• Gasta tempo para criar índice em tabela com grande número de linhas

• Piora a performance de execução de comandos de alteração de dados (Insert, Update, Delete)

Araújo 114

... Linguagem SQL ...

VISÃO

• é como se fosse uma janela que nos permitisse

ver um subconjunto de uma ou mais tabelas

• é uma tabela virtual derivada de uma ou mais

tabelas (não duplica os dados)

• Exemplos:– Marajás – funcionários com salário muito alto

– Idosas – funcionárias com idade avançada

Araújo 115

... Linguagem SQL ...

Mat Nom Sex Sal Dep Match

100 Zé M 200,00 Pro 300

200 Sá M 210,00 Pro 300

300 Ed M 300,00 Pro 500

400 Dé M 320,00 Ven 500

500 Di F 500,00 Adm

FUNC

As linhas azuis correspondem a uma visão: homens que trabalham na produção

Araújo 116

... Linguagem SQL ...

Mat Nom Sex Sal Dep Match

100 Zé M 200,00 Pro 300

200 Sá M 210,00 Pro 300

300 Ed M 300,00 Pro 500

400 Dé M 320,00 Ven 500

500 Di F 500,00 Adm

FUNC

Em azul, uma visão que exibe nome e salário

Araújo 117

... Linguagem SQL ...

Possui comandos DDL, DML, DCL

• DDL - Linguagem de Definição de Dados

Create, Drop, Alter

• DML - Linguagem de Manipulação de Dados

Select, Insert, Update, Delete

• DCL - Linguagem de Controle de Dados

Commit, Rollback, Grant, Lock

Araújo 118

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados

• CREATE – cria objetos (table, index, view,

procedure, trigger) no banco de dados

• DROP – remove objetos (table, index, view,

procedure, trigger) do banco de dados

• ALTER – altera objetos (table, index, view,

procedure, trigger) do banco de dados

Araújo 119

... Linguagem SQL ...

Tipos de dados:

• integer - inteiro entre 32767 e -32768

• char - alfanumérico

• date - data

• decimal - numérico com casas decimais

• varchar - alfanumérico com tamanho variável

Araújo 120

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados

• CREATE TABLE nome-tabela (coluna1 tipo1 [NOT NULL] [, coluna2 tipo2 [NOT NULL] ...)

• create table aluno (matric integer not null, -- matric exigidanome char (30), sexo char(1),nasc date, ender varchar (40))

Araújo 121

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados

• create table Func

(mat integer primary key,

nom char(30),

sex char(1) check (sex = “M” or sex = “F”),

sal decimal(8,2) check (sal >179.99),

dep char(3) default “PRO” references Depa,

match integer references Func)

Araújo 122

... Linguagem SQL ...

Problemas com o NULL (ausência de valor)

• Aumenta complexidade no código para seu

tratamento

• Aumenta complexidade no armazenamento

• SGBD’s tratam de forma diferente os NULL’s

• Funções agregadas levam em conta apenas os

valores não NULL

Araújo 123

... Linguagem SQL ...

Problemas com o NULL (ausência de valor)

• Na ausência de especificação no atributo:

default do padrão ANSI: NULL

default do SQL Server: NULL

• Recomendável especificar sempre NOT NULL

e, quando necessário, NULL para todos os

atributos

Araújo 124

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados

• CREATE [UNIQUE] [CLUSTERED] INDEX

nome-do-índice ON tabela (coluna1

[ordem1] [, coluna2 [ordem2]] ...)

• create unique index imat on func (mat)

• create index isal on func (sal desc)

isal indexa func em ordem decrescente de sal

Araújo 125

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados

• create index idep on func (dep, nome desc)

idep indexa func por departamento e, dentro de

departamento em ordem decrescente de nome

• create unique clustered index icdd on depa (cdd)

icdd é um índice clusterizado na tabela depa com valores de cdd sem repetição

Araújo 126

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados

• CREATE VIEW nome-da-visão [(coluna1, ...)] AS clausula-select

• create view marajas as select * from func where sal > 30000

• create view idosas (nome, anonasc) as select nom, aanasc from pessoa where sex = “F” and aanasc < 1930

Araújo 127

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados

• create view marajas as select * from func where

sal > 30000

• marajas é uma tabela virtual, logo os dados dos marajas estão apenas na tabela func

• a execução dos comandos abaixo produz o mesmo resultado

• select * from marajas

• select * from func where sal > 30000

Araújo 128

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados

• DROP TABLE nome-da-tabela

• drop table func /*elimina a tabela func (definição e dados) */

• DROP INDEX nome-tabela.nome-do-índice

• drop index func.isal /*elimina índice isal de func*/

• DROP VIEW nome-da-visão

• drop view idosas /* elimina visão idosas */

Araújo 129

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados

• ALTER TABLE nome-da-tabela ADD nome-da-

coluna tipo-de-dado

• alter table func add estadocivil char(1), grauinstr

char(1)

• alter table depa add orcamento decimal(10,2)

altera tabelas criando as colunas estadocivil e

grauinstr na tabela func e, orcamento em depa

Araújo 130

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados

• UPDATE [ALL] STATISTICS FOR TABLE nome-da-tabela (SQL1)

• update statistics for table func

atualiza, no catálogo, as estatísticas referentes a tabela func, contribuindo para melhoria de performance de acesso a func

• Sintaxe no SQL Server: update statistics func

Araújo 131

... Linguagem SQL ...

DDL - Linguagem de Definição de Dados (SQL1)

• COMMENT ON {TABLE tabela | COLUMN coluna} IS “comentario”

• comment on table func is “cadastro de funcionários” -- não funciona no SQL Server

• comment on column sal is “salário do funcionário”

• acrescenta comentários para tabela func e para coluna sal

Araújo 132

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

Comandos

• SELECT – obtém linhas de uma tabela

• INSERT – insere linhas numa tabela

• UPDATE – atualiza linhas de uma tabela

• DELETE – exclui linhas de uma tabela

Araújo 133

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

• SELECT [ALL | DISTINCT] {colunas | *}

FROM tabela1 [nome de correlação], ...

[WHERE condição de linha]

[GROUP BY colunas]

[HAVING condição de grupo]

[ORDER BY coluna1 [ASC | DESC], ...]

Araújo 134

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

• select * from func

exibe todos os atributos de todas as linhas da tabela func

• select mat, nom from func where sal > 500

exibe matrícula e nome dos funcionários com salário superior a 500 projeção – exibe apenas mat e nomseleção – exibe linhas onde sal > 500

Araújo 135

... Linguagem SQL ...

DML- Linguagem de Manipulação de Dados

• select * from func order by sal desc

exibe todos os atributos de todos os

funcionários em ordem decrescente de salário

• select * from func order by nom

exibe todos os atributos de todos os

funcionários em ordem alfabética

Araújo 136

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

• select count(*), sum(sal) from func

exibe a quantidade de funcionários e a soma dos salários de todos

• select avg(sal) from func

exibe a média salarial dos funcionários

Funções de agregação: count, sum, avg, min, max

Araújo 137

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

• select dep, count(*), sum(sal), avg(sal) from func

group by dep

exibe para cada departamento, o código, a

quantidade de funcionários, a soma dos

salários e a média salarial do departamento

Araújo 138

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

• select * from func, depaexibe todas as linhas resultado do produto cartesiano de func e depa (func X depa)

• select * from func, depa where func.cdd = depa.cdd

exibe o resultado da junção, ou seja as linhas que têm mesmo valor de cdd (func depa)

Araújo 139

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

• select * from clien where uf = “PI” union select * from forn where uf = “PI” -- uniãoObtém os clientes ou fornecedores do PI

• select * from clien where uf = “PI” intersect select * from forn where uf = “PI” -- interseção

Obtém os clientes que são também fornecedores, do PI

• select * from clien where uf = “PI” minus select * from forn where uf = “PI” -- diferença

Obtém os que são clientes mas não fornecedores, do PI

Araújo 140

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

select nom from forn where uf = “PI” union select nom from clien where uf = “CE”

exibe nomes, sem repetir, dos fornecedores do Piauí ou dos clientes do Ceará

select nom from forn where uf = “PI” union all select nom from clien where uf = “CE”

idem, com repetição de nomes

Araújo 141

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

INSERT INTO tabela [(coluna1,...)] VALUES

({literal / NULL / valor}, ...)

• insert into func values (800, ‘Rui’, ‘M’, ‘PRO’)

inclui na tabela func um novo funcionário com

valores (na mesma ordem) para todos os

atributos

Araújo 142

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

• INSERT INTO tabela [(coluna1,...)] VALUES

({literal / NULL / valor}, ...)

• insert into func (mat, nom) values (900, ‘Ana’)

inclui na tabela func um novo funcionário com

valores para apenas os atributos mat e nom

Araújo 143

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

• UPDATE tabela SET coluna = {valor / NULL}

WHERE condição

• update func set nom = ‘Gal’ where nom = ‘Gil’

altera para Gal o nome do funcionário Gil

Araújo 144

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

• update func set sal = sal * 2

duplica o salário de todos os funcionários

• update func set sal = sal * 1.3 where dep = ‘pro’

dá um aumento de 30% aos funcionários do departamento ‘pro’ (produção)

Araújo 145

... Linguagem SQL ...

DML - Linguagem de Manipulação de Dados

• DELETE FROM tabela WHERE condição

• delete from func where mat = 200

exclui o funcionário de mat = 200

• delete from func

exclui todos os funcionários (cuidado !!!)

Araújo 146

... Linguagem SQL ...

DCL - Linguagem de Controle de Dados

Comandos

• GRANT – concede privilégios de acesso a dados para usuários

• REVOKE – retira privilégios de usuários

• COMMIT – efetiva transações no banco de dados

• ROLLBACK – desfaz transações no banco de dados

• LOCK – bloqueia acesso a itens do BD

Araújo 147

... Linguagem SQL ...

DCL - Linguagem de Controle de Dados

• GRANT {ALL | ALL [PRIVILEGES] | {ALTER | DELETE | INDEX | INSERT | SELECT | UPDATE} [(coluna1, ...)]} ON tabela1, ... TO {usuario1, ... | PUBLIC} [WITH GRANT OPTION]

• grant select, update on func to joao, maria with grant option

• grant select mat, nom on func to ze

Araújo 148

... Linguagem SQL ...

DCL - Linguagem de Controle de Dados

• REVOKE {ALL | ALL [PRIVILEGES] | {ALTER |

DELETE | INDEX | INSERT | SELECT |

UPDATE} [(coluna1, ...)]} ON tabela1, ... FROM

{usuario1, ... | PUBLIC}

• revoke update on func from joao

Araújo 149

... Linguagem SQL ...

DCL - Linguagem de Controle de Dados

• COMMIT WORK - efetiva (grava em disco) as modificações feitas no banco de dados desde o início da sessão, do programa ou da última sentença efetivadora

• ROLLBACK WORK - desfaz as modificações feitas no banco de dados desde o início da sessão, do programa ou da última sentença efetivadora

Araújo 150

... Linguagem SQL

• DCL - Linguagem de Controle de Dados

• LOCK TABLE {visão | tabela} IN {SHARE | EXCLUSIVE} MODE

• lock table preco in exclusive mode

impede qualquer acesso à tabela preco

• lock table func in share mode

impede atualização embora permita leitura simultânea na tabela func

Araújo 151

Consultas mais complexas ...

DML- Linguagem de Manipulação de Dados

• select * from func where dep is null

exibe os atributos dos funcionários sem valor de código de departamento (NULL)

• select mat, nom, sal * 12 from func order by 3 desc

exibe matrícula, nome e salário anual dos funcionários em ordem decrescente de salário anual (terceiro atributo)

Araújo 152

... Consultas mais complexas ...

DML- Linguagem de Manipulação de Dados

• select * from func where dep in (“ven”,”pro”)

exibe atributos dos funcionários cujo código do

departamento pertence ao conjunto dos elementos

“ven” e “pro”

• select * from func where dep not in (“ven”,”pro”)

atributos dos funcionários que não pertencem ao

conjunto dos elementos “ven” e “pro”

Araújo 153

... Consultas mais complexas ...

DML- Linguagem de Manipulação de Dados

• select * from func

where mat between 150 and 500

exibe os atributos dos funcionários de valor de

matrícula entre 150 e 500, incluindo os extremos

• select * from func

where mat not between 150 and 500

Araújo 154

... Consultas mais complexas ...

DML- Linguagem de Manipulação de Dados

• select * from func where nom like “A_B%”

exibe os atributos dos funcionários que têm

nome iniciado por A e a terceira letra do nome

igual a B (ALBER, ALBERTO, ALBA, ALBINA,

ALBINO, AMBLER, ...)

• select * from func where nom not like “A_B%”

Araújo 155

... Consultas mais complexas ...

DML- Linguagem de Manipulação de Dados

• select * from func where nom like “%a”

exibe os atributos dos funcionários que têm

nome terminado em a (Francisco Lima, Laura,

Maria, Diva, Eva, Lia, Sa)

• select * from func where nom not like “%a”

Araújo 156

... Consultas mais complexas ...

DML- Linguagem de Manipulação de Dados

• select * from func where nom like “A%”

exibe os atributos dos funcionários que têm

nome iniciado com A (Ana Maria, Alves, Ari,

Araujo)

• select * from func where nom not like “A%”

Araújo 157

... Consultas mais complexas ...

DML- Linguagem de Manipulação de Dados

• select distinct dep from func

exibe os diferentes códigos de departamento existentes na tabela func (havendo 20 funcionários em pro, 5 em ven e 3 em adm, o resultado da consulta acima será):

adm

pro

ven

Araújo 158

... Consultas mais complexas ...

DML - Linguagem de Manipulação de Dados

• select dep, count(*), sum(sal), avg(sal) from func

group by dep having count(*) > 3

exibe para cada departamento com mais de 3

funcionários, o código, a quantidade de

funcionários, a soma dos salários e a média

salarial do departamento

Araújo 159

... Consultas mais complexas ...

DML - Linguagem de Manipulação de Dados

• select count(*) as x from func where sal < 150

• select count(*) as y from func where sal >= 150

• select count(*) as z from func

Seria possível z > x + y ?

Seria possível se houvesse algum funcionário com

salário NULL (Mais problema com NULL)

• select * from func where sal is null

Araújo 160

... Consultas mais complexas ...

DML - Linguagem de Manipulação de Dados

• select count(*) from func where sex = “M”

• select dep, count(*) from func where sex = “M” group by dep

• select dep, count(*) from func where sex = “M” group by dep having count(*) > 3

where - testa condição de linha

having - testa condição de grupo

Araújo 161

... Consultas mais complexas ...

DML - Linguagem de Manipulação de Dados

• select nom, sal, dsd from func, depa

where dep = cdd

exibe nome, salário e nome do departamento

dos funcionários

junção (join) entre as tabelas func e depa, com

base na igualdade entre PK e FK

Araújo 162

... Consultas mais complexas ...

DML - Linguagem de Manipulação de Dados

• select nom, sal from func

where sal > (select avg(sal) from func)

exibe nome, salário dos funcionários com salário

superior à média salarial da empresa

subselect - select dentro de select; o que

está entre parênteses é executado antes

Araújo 163

... Consultas mais complexas ...

DML - Linguagem de Manipulação de Dados

Exibir o total de dependentes dos funcionários do

departamento de produção

select count(*) from depe where mat in

(select mat from fun where dep in

(select cdd from depa where dsd = “produção”))

Araújo 164

... Consultas mais complexas ...

DML - Linguagem de Manipulação de Dados

Exibir dados dos funcionários sem dependentes

• select * from func where mat not in (select distinct mat from depe)

Exibir dados dos funcionários com salário maior que qualquer salário do departamento “p”

• select * from func where sal > any (select sal from fun where dep = "p")

Araújo 165

... Consultas mais complexas ...

DML - Linguagem de Manipulação de Dados

func (mat, nom, sal, match)

• select su.nom, su.sal, ch.nom from func su, func ch

where su.match = ch.mat

exibe nome e salário de cada funcionário e, na mesma linha, o nome do seu chefe

implementação de autorelacionamento 1: n

su, ch - alias ou nome de correlação

Araújo 166

... Consultas mais complexas ...

DML - Linguagem de Manipulação de Dados

func (mat, nom, sal, match)

select su.nom, su.sal from func su, func ch

where su.match = ch.mat and su.sal > ch.salexibe nome e salário dos funcionários que ganham mais

que seus respectivos chefes

implementação de autorelacionamento 1: n

su, ch - alias ou nome de correlação

Araújo 167

... Consultas mais complexas ...

• INNER JOIN – resultam da operação, apenas as

linhas em que haja igualdade entre o par de

atributos (por exemplo, PK = FK)

• OUTER JOIN – resultam da operação, além das

linhas em que PK = FK, também as linhas de

uma tabela sem correspondência na outra tabela

Araújo 168

... Consultas mais complexas ...

INNER JOIN ou apenas JOIN

FUNC(mat, nom, cdd) DEPA(cdd, dsd)

select * from func join depa on func.cdd = depa.cdd /* Inner Join */

• Resultado mostra só os funcionários que estão alocados em algum departamento e apenas departamentos que têm pelo menos um funcionário alocado ( Inner join)

• select * from func, depa where func.cdd = depa.cdd /* produz mesmo resultado */

Araújo 169

... Consultas mais complexas ...

LEFT / RIGHT OUTER JOIN

• select * from func left outer join depa on func.cdd = depa.cdd

• Resultado mostra todos os funcionários, mesmo os que não estão alocados em nenhum departamento

• select * from func right outer join depa on func.cdd = depa.cdd

• Resultado mostra todos os departamentos, mesmo os que não têm nenhum funcionário alocado

• A palavra outer pode ser suprimida

Araújo 170

... Consultas mais complexas ...

FULL OUTER JOIN

• select * from func full outer join depa on func.cdd = depa.cdd

• Resultado mostra todos os funcionários, mesmo os que não estão alocados em algum departamento e todos departamentos, mesmo os que não têm nenhum funcionário alocado ( Full join)

• A palavra outer pode ser suprimida

Araújo 171

... Consultas mais complexas ...

CROSS JOIN

• select * from func cross join depa

• Resultado do comando acima é o produto cartesiano das tabelas func X depa (para 8 linhas em func e 4 linhas em depa, o resultado terá 32 linhas, cada uma delas formada pela concatenação de uma linha de func com uma linha de depa)

• select * from func, depa -- mesmo resultado

Araújo 172

... Consultas mais complexas

• select "nome:", nom from func

exibe a palavra nome: antes do nome de cada funcionário:

nome: Ana Marianome: José Silva...

• Select 5 + 4 * 1045

Araújo 173

Stored Procedure ...

• Programa formado por variáveis, comandos SQL e comandos de controle de fluxo, armazenado no banco de dados

• Pode ser executado manualmente ou chamado de um programa de aplicação ou de outro procedimento armazenado

• Reduz tráfego de dados na rede, além de melhorar a performance de acesso aos dados

• Execução mais rápida que comandos SQL porque não precisa ser pré-compilada e otimizada a cada execução

Araújo 174

... Stored Procedure ...

• Facilita a manutenção, pois uma alteração em

stored procedure é feita só no servidor

• Aceita parâmetros de entrada e pode retornar

resultados, além de indicação de sucesso ou

causa da falha na execução

• Difere de função pois não retorna valor nem

pode ter seu nome usado numa expressão

Araújo 175

... Stored Procedure ...

Tipos de stored procedure

• Local – armazenada em servidor local

• Remota – armazenada em servidor remoto

• Definida pelo usuário – criada por usuário

• Do sistema – previamente criada e é componente do SGBD (system stored procedure): sys.sp_columns, sys.sp_tables, sys.sp_fkeys, sys.sp_helptrigger, sys.sp_helptext, ...

Araújo 176

... Stored Procedure ...

CREATE PROCEDURE nome-procedure@param1 tipo dado1, @param2 tipo dado2 ...

AS comandos sqlCREATE procedure sp_aumenta_sal

@dep char(3), @fator decimal(2,1)AS UPDATE [RH].[dbo].[Func] SET [sal] = sal * @fatorWHERE ([cdd] = @dep)

aumenta salário (fator informado) dos funcionário do

departamento (informado)

Araújo 177

... Stored Procedure

create procedure sp_totdepa

@dep char(3) -- parâmetro

as select @dep Dep, count(*) Qtd, sum(sal) Total, avg(sal) Média from func where cdd = @dep

cria stored procedure sp_totdepa recebendo código do departamento como parâmetro

sp_totdepa pro -- executa sp_totdepa

exibe totais de funcionários, de salários e salário médio do departamento de código igual a pro

drop procedure sp_totdepa -- elimina sp_totdepa

Araújo 178

Triggers ...

Trigger• um tipo de procedimento armazenado no banco

de dados, que é executado quando uma tabela é atualizada

• usado para:– manter integridade referencial– criar uma coluna a partir de outras– replicar alterações em uma tabela – atualizar outras tabelas quando uma tabela

sofre alteração

Araújo 179

...Triggers ...

Por que usar Trigger?

• Regras de negócio ficam armazenadas no banco de dados e são sempre executadas não importando se a alteração foi promovida por programa de aplicação ou por comando SQL interativo

• Redução da complexidade de programas de atualização

Araújo 180

...Triggers ...

Por que não usar Trigger?

• Aumenta a complexidade do banco de dados

• Uma atualização do banco de dados pode provocar a execução de um trigger que altera o banco de dados que provoca a execução de outro trigger,... em cascata

Araújo 181

... Triggers ...

DDL - Linguagem de Definição de Dados

• CREATE TRIGGER nome-do-trigger ON tabela FOR [INSERT] [, UPDATE] [, DELETE] AS comandos Transact SQL

• create trigger incFunc on func for insert as print “mais um funcionário cadastrado”

exibe a mensagem “mais um funcionário cadastrado”, quando inserida linha em func

Araújo 182

... Triggers ...

create trigger excFunc on func for delete as

/* informa exclusão de func. e num. de func. restantes */

begin

declare @cont int

print “mais um funcionário excluído”

select @cont = count(*) from func

print “funcionários restantes”

print @cont

end

Araújo 183

... Triggers ...

• DROP TRIGGER nome-do-trigger

• drop trigger excFunc /* exclui trigger excFunc */

• sp_helptrigger nome-da-tabela

• sp_helptrigger func /* exibe triggers da tabela func */

• sp_helptext nome-do-objeto

• sp_helptext excFunc /* exibe texto do trigger excFunc*/

Araújo 184

... Triggers ...

Replicando linhas com trigger

create trigger IncRepFunc

on func for insert as

insert into func1 select * from inserted

replica na tabela func1, linha recém incluída na tabela func

Araújo 185

... Triggers

Excluindo linhas com trigger

create trigger ExcRepFunc

on func for delete as

delete from func1 where func1.mat in (select mat from deleted)

exclui da tabela func1 linha recém excluída da tabela func

drop trigger ExcRepFunc /*elimina trigger */

Exercícios...

1. Uma cidade tem vários bairros e um bairro tem

várias ruas e uma rua tem vários imóveis. Deseja-

se saber quem é o proprietário de um dado

imóvel, a área do imóvel e a data do seu habite-

se. Desenhar DER.

Araújo 186

...Exercícios...

2.Na informatização de uma biblioteca é necessário registrar as

datas de empréstimo e devolução dos livros. É preciso poder

localizar os livros consultando por autor, título, editora,

assunto principal. Deve ser armazenado um resumo de cada

livro com até 200 caracteres. Os periódicos não são

emprestados. Desenhar DER que responde às questões:

. Que periódicos são referenciados pelo periódico P?

. Quais os livros do autor A?

. Quais os livros cujo assunto é Bancos de Dados Relacionais?

. Que livros são referenciados pelo periódico P?

. Quais os autores do periódico P?

Araújo 187

Exercícios

3. Um passageiro tem um documento de identidade e um

nome definido. Um avião é caracterizado por um

número de série único e por um modelo. Um assento é

uma posição única em um avião, identificada por um

código. Um assento é da classe econômica ou

executiva. Um avião possui vários assentos e pode ser

usado em vários vôos. Um vôo é identificado por um

número e utiliza: um avião, um piloto, um aeroporto

de partida e outro de chegada. Um passageiro pode

reservar um assento em um vôo. Desenhar DER

destacando os atributos.

Araújo 188

Araújo 189

FIM