Você está na página 1de 245

Banco de Dados I

Pitgoras Martins

Banco de Dados
Introduo Histrico de Banco de Dados Dado x Informao Anlise de Dados Projeto Lgico Projeto Fsico Lista de Eventos Compartilhamento de Dados x Arquivos Isolados Conceitos de Banco de Dados Arquiteturas de SGBD Nveis de Abstrao SGBD x SGA
2

Banco de Dados
Caractersticas de um Banco de Dados Usurios do Banco de Dados Implicaes no Esquema de Banco de Dados O que ocorre quando no se usa um SGBD Modelo de Dados, Esquemas e Instncias de Dados Arquitetura do DBMS Independncia de Dados Interfaces O ambiente do Banco de Dados
3

Banco de dados
Tipos de SGBD Nveis de Modelagem Modelo Entidade Relacionamento Modelagem de Dados Comunicao de Dados SGBD Relacional Diagrama de Entidade - Relacionamento Ferramenta de Modelagem Definio de Dados Domnios de Relaes Chaves Primrias Chaves Estrangeiras
4

Banco de dados
Regras de Integridade Dependncias Funcionais Normalizaes Linguagem de Definio de Dados Linguagem de Manipulao de Dados
5

Referncias
Fundamentals of Database System Elmarsi/Navathe Sistemas de Banco de Dados C.J.Date Sistemas de Banco de Dados - Sylberchartz

Histrico do Banco de Dados


Desenvolvimento de software
At 1972: Construo Artstica de Software (Artesanal) 1972: Programao Estruturada (Dijkstra)
Foco: ao nvel de programa Objetivos:
Melhora a forma Facilita a leitura e manuteno Controla a complexidade Torna a programao mais cientfica
7

Histrico do Banco de Dados


Desenvolvimento de software
1976: Projeto Estruturado (Yordon / Constantine, Michael Jackson, Warnier Orr)
Foco: ao nvel de problema Objetivos:
Modularidade Padronizao do projeto

Histrico do Banco de Dados


Desenvolvimento de software
1977: Anlise Estruturada (Chris Ganentine, Tom de Marco)
Foco: ao nvel de sistema Objetivos:
Desenvolver o modelo lgico Obter especificao funcional

Histrico do Banco de Dados


Desenvolvimento de software
1979: Anlise de Dados
Foco: ao nvel de empresa Objetivos:
Definir requisitos Sistema de informao gerencial Normalizao Modelagem de Dados

10

Histrico do Banco de Dados


Desenvolvimento de software
Anos 80: Tcnicas Automatizadas
Geradores de tela, de programa, de aplicao LG4, Query Language, CASE Engenharia da Informao

Anos 90: Orientao a Objeto, Cliente / Servidor

11

Dado X Informao
Informao um ou mais dados processados, tratados, lapidados
Dado: Informao: A4 L8 L3 D 5 I 7 E 1 E 8 N DAN I E LLE 4 88 3 8 75

Dado

Processamento

Informao
12

Anlise de Dados
Nvel de Deciso
Estratgico Ttico Operacional

Tipo de Informao
Projees Comparaes AD-HOC Comparaes Resumos Informaes detalhadas Informaes Precisas

13

Anlise de Dados
AS = Anlise de Dados + Anlise de Funes Por onde comear ? Uns preferem pela AD outros preferem pela AF, mas todos j concordam: deve-se fazer Anlise de Dados AD
Dados

Funes

14

Anlise de Dados
Ato de Construir modelos conceituais de dados, atravs de abstraes, a partir do mundo real, buscando simplificao rumo implementao fsica
Mundo Real Conceitual Lgico Fsico

15

Anlise de Sistemas Anlise de Dados (DER) + Anlise de Funes (DFD) Anlise de Sistemas

16

Anlise de Dados
Projeto Lgico: Dados: O que armazena e qual a estrutura ? Funes:
Que informaes o sistema deve fornecer ? Que dados o sistema deve receber e de quem ? Que transformaes os dado devem sofrer para produzir as informaes desejadas ?

17

Anlise de Dados
Projeto Fsico: Dados: Como e onde armazenar os dados ? Funes:
Como apresentar as sadas ? Como fornecer os dados ao sistema ? Como e quando executar os processos ?

18

Projeto Lgico
Declarao de Objetivos (DO) Lista de Eventos (LE) Diagrama de Entidade relacionamento (DER) Dicionrio de Dados (DD) Especificao da Lgica do Processo (ELP)

19

Projeto Fsico
Projeto Detalhado de: Sadas Arquivos Entradas Controles no sistema Especificao de Programas

20

Declarao de Objetivos (DO)


Descrever de forma sucinta e objetiva, em uma pgina, a finalidade do sistema. Ex: O sistema de Compra e Venda de Mercadorias tem como objetivos automatizar de forma integrada as atividades de: Compras de mercadorias Vendas de mercadorias Controle de estoque Contabilizao

21

Lista de Eventos
Descrever todos os eventos que ocorrem, ocorreram ou podero ocorrer no sistema, classificando-os em trs tipos:
Orientados ao fluxo Temporais Controle

22

Lista de Eventos
Eventos orientados a fluxo de dados Ex:
Cliente envia pedido Cliente faz pagamento Cliente devolve mercadoria Fornecedor envia mercadorias Fornecedor envia fatura Departamento de vendas define poltica de vendas

23

Lista de Eventos
Eventos temporais Ex:
O relatrio de estatstica de vendas deve amanhecer

pronto s segundas-feiras
Os lanamentos contbeis devem estar disponveis para

a Contabilidade no dia 01 de cada ms

24

Lista de Eventos
Eventos de Controle Ex:
Ao atingir o ponto de ressuprimento, emitir pedido ao fornecedor Ao exceder o limite de crdito, bloquear o cliente por excesso

25

Diagrama de Entidade Relacionamento (DER)


Chefia

Dependentes Possui

Funcionrios Trabalha Aloca

FunPro Tem

Projetos

Departamentos

26

Especificao da Lgica do Processo


VL_PMED = VL_AREA / VL_TES Se VL_PMED < 24 VL_PMED = (2 * VL_AREA) / (VL_PMED + 36) Se VL_PMED > = 24 E VL_PMED < 36 VL_TEST = (2 * VL_PMED) / (VL_PMED + 36) * VL_TES Se VL_PMED > = 36 VL_TEST = ((1,8 * VL_PMED) / (VL_PMED + 94)) + ((1,8 * VL_PMED) / (2,6 * VL_PMED + 36)) * VL_TES Obs: VL_PMED - Valor da profundidade mdia do terreno VL_TES - Valor da testada real VL_TEST - Valor da testada fictcia do terreno 27

Compartilhamento de Dados x Arquivos Isolados


Arquivos convencionais servem a sistemas especficos (isolados) com pouco ou nenhum compartilhamento com outros sistemas difcil obteno de informaes gerenciais Tcnicas de bancos de dados ressaltam o dado como um recurso importante na empresa, devendo ser: compartilhado, controlado de forma centralizada para se saber quem onde, e com que finalidade, o dado usado

28

Compartilhamento de Dados x Arquivos Isolados


Sistemas Isolados
Aplicativos independentes, tanto em relao aos dados quanto as sadas Cada aplicao cuida apenas de seus arquivos, ignorando possveis repeties Possvel inconsistncia de dados Programas levam em conta distribuio fsica dos dados nos arquivos: alterao no lay-out do registro significa alterao nos programas
29

Compartilhamento de Dados x Arquivos Isolados


Arquivos Isolados
Num_conta, nome, endereo, sld_atual, sld_medio, cpf-cgc, dt_nasc

Conta Corrente

Cpf-cgc, nome, endereo, num_atual_cotas, dt_nasc

Fundos de Investimentos
30

Compartilhamento de Dados x Arquivos Isolados


Sistemas Integrados
Dados de uma mesma rea so armazenados em um mesmo conjunto de arquivos Um sistema grava sada em arquivo em meio magntico a ser usado como entrada por outro sistema Alterao no layout de arquivos compartilhado implica alterao em programas de mais de um sistema
31

Compartilhamento de Dados x Arquivos Isolados


Arquivos Integrados
nome, endereo, cpf-cgc, dt_nasc

Conta Corrente

Fundos de Investimentos

Num_conta, sld_atual, sld_medio, cpd-cgc

num_atual_cotas, dt_nasc

32

Compartilhamento de Dados x Arquivos Isolados


Sistemas que usam SGBD
Integrao de dados no apenas por rea, mas por toda a Empresa Dados da empresa compartilhados por todos os sistemas Sistemas enxergam ps dados independentemente de sua distribuio pelos arquivos Programas de aplicao ignoram detalhes de armazenamento/recuperao de dados Sem redundncia de dados no h inconsistncia
33

Compartilhamento de Dados x Arquivos Isolados


Sistemas que usam SGBD
nome, endereo, cpf-cgc, dt_nasc Num_conta, sld_atual, sld_medio, cpd-cgc

SGBD

num_atual_cotas, cpf-cgc Conta Corrente Fundos de Investimentos


34

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 coleo de dados operacionais armazenados usados pelos sistemas de aplicao de uma determinada organizao.
35

Conceitos de Banco de Dados


ELMARSI & NAVATHE - 1999
Um banco de dados uma coleo de dados relacionados, no isolados.

ENGLES
Um banco de dados uma coleo de dados operacionais usados pelos sistemas aplicativos de uma empresa.

36

Dados Operacionais
Projetos Aloca Funcionrios Lota

Fornece

Produtos

Fornecedores

Departamentos

37

Um Sistema de BD se compe de:


Dados: em um ou mais arquivos Metadados: dicionrio de dados Software: SGBD (interface entre usurios e dados) Hardware: discos Usurios: DBA, Programadores de Aplicao, Usurios Finais
38

Um Sistema de BD se compe de:


SGBD
d suporte ao acesso dos usurios aos dados esconde do usurio detalhes de armazenamento dos dados

Programador de Aplicao
codifica programas batch ou on-line para manter o DB
39

Um Sistema de BD se compe de:


DBA - Administrador de BD define:
que dados manter no BD estrutura que deve ter o BD estratgias de acesso que esquema de backup adotar procedimentos de autorizao como monitorar/sintonizar/reorganizar o BD
40

Um Sistema de BD se compe de:


Usurio Final
Acessa o BD via:
query language programas de aplicao

41

Conceitos de Bancos de Dados


Um BD representa aspectos do mundo real Um BD projetado, construindo e os dados so nele armazenados com algum propsito Um BD definido e mantido por uma coleo de programas (SGBD) Sistema de Bando de Dados = Dados + Programas (SBD = BD + SGBD)
42

Bancos de Dados x Linguagens


DDL - Linguagem de definio de dados (create, drop, alter...) DML - Linguagem de manipulao de dados (insert, delete, update, ...) DCL - Linguagem de controle de acesso aos dados (grant, revoke, ...) QL - Linguagem de consulta (select)
43

Por que usar SGBD ?


BD = Dados + Metadados Um sistema de Banco de Dados contm, alm dos dados normais, uma descrio completa desses dados num dicionrio de dados (catlogo)

44

Qual a finalidade de usar DD ?


Abstrao, ou seja, deixar o usurio tratar os dados em alto nvel, enquanto o SGBD usa o DD para tratar os dados fisicamente (baixo nvel)

45

Por que usar SGBD ?


Abstrao de dados
Um SGBD permite uma representao conceitual dos dados evitando preocupao com detalhes de armazenamento de dados

Suporte a mltiplas vises de dados


Cada usurio acessa apenas o que lhe dado direito de acessar

46

Por que usar SGBD ?


Controle de redundncia
Sem repetio de dados no h inconsistncia

Compartilhamento dos dados


Acesso multi-usurio com controle de concorrncia garantido

47

Por que usar SGBD ?


Segurana contra acesso indevido
Diferentes vises asseguram confidencialidade

Mltiplas Interfaces
Acesso via menu, linguagem natural, query language, linguagem de programao

48

Por que usar SGBD ?


Relacionamentos complexos
Uma entidade pode se relacionar com outras de forma binria, ternria, ...

Restries de integridade
Armazenadas no BD enxugam os programas de aplicao

49

Por que usar SGBD ?


Independncia de dados
A definio das estruturas de dados armazenada fora dos programas de aplicao: alterao de estruturas dispensa recompilao de programas

Recuperao do BD
Feito atravs de check-points

50

Arquiteturas de SGBD
Arquitetura de 3 nveis (Vises)
Vises de usurio Viso total do BD Viso do armazenamento

...

51

Arquiteturas de SGBD
Arquitetura de 3 nveis (Esquemas)
Sub-esquemas Esquema Conceitual Esquema Fsico

...

52

Arquiteturas de SGBD
Arquitetura de 3 nveis (CODASYL - 71)
(Conference on Data System and Language)

...

Viso Conceitual Fsico

53

Arquiteturas de SGBD
Arquitetura de 3 nveis (ANSI/SPARC 75)
(American. Nacional Standart Institute / System Planning and Requirements Commitee)

...

Externo Conceitual Externo

54

Nveis de Abstrao
Externo
Viso de um subconjunto do nvel conceitual (viso que um aplicativo tem dos dados) Viso que cada usurio tem do sistema Administrador da aplicao: usurio

55

Nveis de Abstrao
Conceitual
Viso conceitual e global dos dados, representando o mundo real Consiste de entidades, relacionamentos e atributos Deve envolver todos os objetos do sistema de informao Administrador de dados: AD
56

Nveis de Abstrao
Interno
Viso dos diversos registros armazenados em um banco de dados Alterao no nvel interno (estrutura de armazenamento) no deve afetar o modelo conceitual Administrador de Banco de Dados: DBA

57

SGBD x SGA
SGBD - software responsvel pela definio e manuteno de um BD SGA - conjunto de rotinas do sistema operacional responsvel pelo sistema de arquivos (SA) e respectivos mtodos de acesso SA - arquivos convencionais (sequenciais, indexados, randmicos) e suas operaes
58

SGBD x SGA
Mundo real MER SGBDOO Relacional Rede Hierrquica SGBD Especfico SGA Mquina
59

SGBD X SGA

Alto nvel Baixo nvel SGA SGBD


60

Caractersticas do BD
mantido um nico local (repositrio) de dados, onde todos os usurio tm acesso O BD contm alm dos dados de tabelas uma tabela que guarda a descrio de todas as demais (Dicionrio de dados) Isolamento entre os programas e dados e abstrao de dados
61

Caractersticas do BD
Suporta mltiplas vises dos dados Compartilha dados Processa vrias transaes de usurio ao mesmo tempo

62

Usurios do BD
Administradores do BD Projetistas de BD usurios finais
Casual Ingnuos Sofisticados Isolados
63

Usurios do BD
Analistas de Sistemas Programadores Projetistas de DBMS Desenvolvedores de ferramentas Operadores Pessoal de manuteno
64

Objetivos de um SGBD
Controlar redundncia Restringir o acesso Armazenamento persistente Inferncia do BD usando regras de deduo Fornecer mltiplas interfaces Representao complexa de relacionamentos entre dados
65

Objetivos de um SGBD
Garantir restries de integridade Backup e Recuperao

66

Implicaes no uso de um SGBD


Garantir padres Reduo no tempo de desenvolvimento Flexibilidade Disponibilidade de informaes on-line

67

Desvantagens em usar um SGBD


Alto investimento em hardware, software e treinamento Modelo geral de definio e processamento de dados Excesso de segurana, controle de concorrncia, recuperao e funes de integridade
68

Modelo de Dados
a principal ferramenta para fornecer abstrao de dados um conjunto de conceitos que pode ser usado para descriminar a estrutura do banco de dados Um modelo de dados se compe de tipos de objetos, relacionamentos entre objetos e restries de objetos
69

Modelo de Dados
As operaes bsicas fazem parte da maioria dos modelos de dados Ferramenta usada para descrever a estrutura do BD O modelo de dados se compem de:
Estruturas de dados Operaes Restries de integridade
70

Modelo de Dados
Os modelos de dados se dividem em trs nveis:
Conceitual (alto nvel) Lgico Fsico (baixo nvel)

71

Modelo de Dados
Conceitual: Descreve dados que esto prximos da forma como muitos usurios vem os dados, muito prximos do mundo real.
Ex: Modelo Semntico e MER

Lgico: Nvel intermedirio que descreve dados ao nvel de registro bem prximo da implementao fsica
Ex: Relacional, Rede e Hierrquico

72

Modelo de Dados
Fsico: Descreve as estruturas de dados ao nvel de armazenamento fsico dos dados

73

Mundo real Fase de Projeto do BD Conceitual Lgico Fsico Modelo de Dados Semntico/MER Relacional Rede Hierrquico SGBD especfico SGA

74

Conceitual
Entidades: representa um objeto do mundo real ou conceito Atributos: propriedades que descrevem uma entidade Relacionamentos: interaes entre entidades

75

Um exemplo

Projetos tm Funcionrios Projetos Cod. Projeto Nome Projeto Valor Projeto Funcionrios Cod. Funcionrio Nome Funcionrio Endereo Funcionrio

76

Lgico
So usados na maioria dos DBMS, incluindo os trs tipos de modelos usados
Relacional Rede hierrquico

Representam dados usando estruturas de registros So por vezes chamados de modelos de dados baseados em registros
77

Fsico
Descrevem como os dados so armazenados no computador atravs da representao da informao tal como formato, ordem e acesso aos registros

78

Esquemas e Instncias
Esquema: Descrio grfica ou textual do BD conforme o modelo de dados. Ele especificado durante o projeto do BD e no modificado com freqncia.
Ex: FUNC (mat, nome, sal, dep) DEPA (dep, descr) DEPE (mat, seq, nomd, sexd)

Diagrama de Esquema: Mostra alguns aspectos do BD

79

Esquemas e Instncias
Instncia: Descrio de uma abstrao do banco de dados. So os dados esto no BD em determinado momento. Pode ser modificado com freqncia.

80

Arquitetura do BD
Usaremos a arquitetura de trs nveis O objetivo separar as aplicaes de usurio da parte fsica do BD
Nvel interno: armazenamento fsico da estrutura do BD. Usa a modelagem de dados fsicos e descreve detalhes de armazenamento e caminhos para BD.

81

Arquitetura do BD
Nvel conceitual: descreve a estrutura de todo o BD para os usurios. Esconde os detalhes as estruturas de armazenamento fsico e se concentra na descrio de entidades, tipos de dados, relacionamentos, operaes de usurios e restries. Um modelo de dados de ato nvel ou modelo de implementao pode ser usado neste nvel

82

Arquitetura do BD
Nvel externo: descreve a parte do BD a um grupo de usurios (vises) e esconde o restante do BD. Um modelo de alto nvel ou modelo de implementao usado neste nvel

83

Usurios Finais Viso externa1

...

Viso externa2

Esquema Conceitual

Esquema Interno

84

Armazenamento do BD

Mapeamento de dados
Processo de transformar requisies de usurios feitas no nvel externo aos nveis mais internos e retornar uma resposta ao usurio

85

Independncia de dados
Capacidade de fazer modificaes no banco de dados em um dos nveis sem afetar o nvel mais alto
Independncia lgica dos dados Independncia fsica dos dados

86

Independncia Lgica
Capacidade de modificar o esquema conceitual sem modificar o esquema externo ou programas de aplicao

87

Independncia Fsica
Capacidade de modificar o esquema interno sem modificar o esquema externo ou programas de aplicao (Reorganizao de arquivos)

88

Linguagens do BD
DDL - Linguagem de Definio de Dados SDL - Linguagem de Definio de Armazenamento VDL - Linguagem de Definio de Viso DML - Linguagem de Manipulao de Dados

89

DDL
Usada pelo DBA ou por qualquer projetista do BD Serve para definir os esquemas interno e conceitual quando a arquitetura de 2 nveis Define a construo do esquema e a descrio do esquema de armazenamento
90

SDL
Usada para especificar o esquema interno O mapeamento entre os dois esquemas pode ser feito com a SDL ou a DDL

91

VDL
Usada para especificar as vises e faz o mapeamento com o esquema conceitual

92

DML
Usada para manipular o banco de dados como inserir, apagar e alterar dados
Alto nvel ou no procedural
Usada no terminal ou dentro de uma linguagem de programao

Baixo nvel ou procedural


Usada dentro de uma linguagem de programao

93

Interfaces
Interfaces baseadas em menus Interfaces grficas Interfaces baseadas em formulrios Interfaces de linguagem natural Interfaces para usurios sem experincia Interfaces para DBA
94

O ambiente do BD
Catalogo SO Gerenciador de acesso a disco Compilador de DDL Processador do BD Compilador de consultas Prcompilador Compilador de DML

95

Utilitrios do BD
Carga de arquivos existentes Backup/Recovery Reorganizao de arquivos Monitoramento de performance Software de comunicao

96

Tipos de SGBD
Hierrquico Rede Relacional Objeto-Relacional Orientado-Objeto Outros
97

Hierrquico Lgico
Entidades implementadas como segmentos e relacionamentos como ponteiros Restries de integridade:
exceto a raiz qual registro deve ter um pai

Operaes: get first, get next, ...

98

Hierrquico Fsico
Dados armazenados usando estruturas embutidas Usurio v um conjunto de rvores Ligaes explicitas via ponteiros no nvel fsico Navegao atravs de ponteiros e de responsabilidade do programador Tem dependncia de dados

99

Rede Lgico
Entidades como colees de registros e relacionamentos como ligaes pai-filho Restries de integridade:
relacionamento m:n no pode ser representado por um nico tipo de ligao

Operaes: get, find, store, ...

100

Rede Fsico
Dados organizados atravs de uma rede de ns e links Usurio v um conjunto de grafos Ligaes explicitas via ponteiros no nvel fsico Navegao atravs de ponteiros e de responsabilidade do programador Tem dependncia de dados
101

Relacional Lgico
Entidades como tabelas e relacionamentos como colunas em pares de tabelas Restries de integridade:
componentes de PK no pode ser nulo para cada valor de FK em uma tabela deve existir um valor de PK em outra tabela

Operaes: seleo, projeo, juno, ...


102

Relacional Fsico
Dados armazenados de forma tabular Usurio v um conjunto de tabelas Ligaes implcitas compartilhando chaves num nvel lgico Navegao automtica: otimizadores de consultas

103

Classificao de BD
RELACIONAL Tabelas Linhas Implcito (pares Relacionamento de colunas) Atributos Coluna MER Entidade Entidade REDE HIERARQUICO Grafos rvores Registro Segmento Explcito Explcito (ponteiros) (ponteiros) Campo Campo

104

Classificao de BD
A B C 1 A 2 B 1

3 C 1

4 D 2

D MER

5 E

2 3

RELACIONAL
105

Classificao de BD
A B C B A C

D MER

D REDE

106

Classificao de BD
A B C B A C

D MER

HIERRQUICO
107

SGBDs Hierrquicos
IMS (IBM) SYSTEM 2000 (SAS) TDMS (BURROUGHS) MARS VI (CDC) RFMS (Univ. Texas)

108

SGBDs Rede
IDS II (Bull) DMS II (UNISYS) IDMS ( CULLINAME) DMS 1100 (UNIVAC) DBMS-11 (DEC) TOTAL (CINCON) ADABAS (Software AG)
109

SGBDs Relacional
ORACLE INGRES DB2 INFORMIX RDB PROGRESS SQL SERVER
110

Por que modelagem de dados ?


Com o crescente uso de SGBDs em face da necessidade de aplicaes cada vez mais complexas, inevitvel esta abordagem Antes, as aplicaes usavam um nmero muito reduzido de arquivos convencionais Sistemas antigos (aplicaes isoladas) primavam pela repetio de dados em vrios arquivos
111

Por que modelagem de dados ?


Aplicaes desenvolvidas com L4G dependem de uma rgida administrao de dados - cada usurio projeta os dados de seu uso especfico sem tomar conhecimento das necessidades dos demais usurios Principal virtude dos modelos de daods: estabilidade
112

Por que modelagem de dados ?


Enquanto modela dados o analista concentra-se nesta tarefa esquecendo software e SGBD Os relacionamentos representam a obteno de respostas a certas necessidades de informao por parte do usurio

113

Por que modelagem de dados ?


Modelo prvio de dados um excelente instrumento de documentao do mundo real, em tempo de entrevista Levanta e documenta a parte mais estvel de uma aplicao: os dados Excelente ferramenta grfica de projeto conceitual de BD
114

MER
Proposto por Peter S. Chen - 1976 Entidade
Algo sobre que dados so armazenados Representao abstrata de algo do mundo real
Ex: Aluno, cliente, nota fiscal, ...

Conjunto de entidades
Grupo de entidades com caractersticas semelhantes
Ex: Alunos, clientes, notas fiscais, ...

115

MER
Relacionamento - associao entre elementos de conjuntos de entidades Relacionamento Binrio - um par ordenado (e1, e2), onde e1 e e2 so respectivamente elementos dos conjuntos das entidades E1 e E2
Alunos Mat Nom Nota Cursa Perodo Disciplinas Cod Des
116

MER
Conjunto de Relacionamentos - Grupo de relacionamentos do mesmo tipo; no caso binrio, conjunto de pares ordenados C(a,b) onde a A e d D Grau de um relacionamento - nmero de conjuntos de entidades envolvidos no relacionamento
Ex: unrio, binrio. ternrio, ...
117

MER
Classe ou cardinalidade dos relacionamentos - razo ente as quantidades e entidades com que cada conjunto participa do relacionamento
Ex: Binrios - 1:1 1:n m:n Ternrios - 1:m:n m:n:p

118

MER
Projetos Trabalha Funcionrios Chefia Chefia Dt_posse
119

Hor_trab Chefia

Dt_aloc

Departamentos

MER
Atributos
So caractersticas de entidades ou de relacionamentos So funes que levam um ponto do conjunto de entidades ou do relacionamento a um ponto de conjuntos de valores
Funcionrios Matricula Sexo F M 100 200
120

MER
Relacionamento unrio ou recursivo ou auto-relacionamento
Pessoas 1 Esposa casa 1 Marido m Produtos n

compe componente composto


121

Papel da entidade

MER
Itens m P_R_I p Pedidos - Para um item e para um pedido correspondem n requisies - Para uma requisio e um pedido correspondem m itens - Para uma requisio e um item correspondem p pedidos
122

n Requisies

MER
Professores 1 P_A_D m Disciplinas - Um aluno cursa uma disciplina com um professor - Um professor ministra uma disciplina para n alunos - Um professor ministra para um aluno m disciplinas
123

n Alunos

MER
Cdc Cds Sistemas Nms m

Funcionrios n Executa q

Nmc Cda p Atividades Nma Nmf


124

Mat

Funcionrios

MER
Entidade Fraca
Sua existncia depende de outra Seus atributos, em geral, so insuficientes para determinar uma chave primria
1 n Dependentes

Funcionrios

Depende

125

MER
Chave primria
Conjunto de atributos que identificam uma nica entidade Ex: matrcula, cod_produto, cod_cli, CPF, ...

126

MER
Cardinalidade dos relacionamentos
Um relacionamento pode ter a cardinalidade alterada com o tempo ou conforme as necessidades de informao por parte do usurio Ex: Casamento entre pessoas Atual (1h x 1m) ... 1 : 1 Atual (1h x 1Poligamiam) ... 1 : n Histrico de todos os casamentos ... M : n 127

MER
Cardinalidade dos casamentos
Lojas 1 Vende n Itens Loja nica Lojas m Vende n Itens Abertura de novas lojas
128

MER
Cardinalidade dos relacionamentos
Departamentos 1 Aloca n Funcionrios

Qual a alocao atual do funcionrio ?

Departamentos

Aloca Data

Funcionrios

Em quais departamentos esteve ou est lotado o funcionrio ? Um funcionrio pode estar lotado simultaneamente em mais de um departamento: devia haver um atributo tipo percentual de dedicao do funcionrio ao departamento

129

MER
Anlise Sentencial
Substantivos (sujeitos/objetos) - entidades Verbos (predicados) - relacionamentos

Casas

Mora

Pessoas

Carros

Tem
130

MER
Anlise Sentencial
Adjetivos - atributo de entidades Advrbios - atributo de relacionamentos
Pessoas
Nome Profisso Dt_aquisio

Possui
Nome

Carros
Profisso

Jos, advogado, possui um volks azul desde 1987

131

MER
Anlise Sentencial
Entidade tem atributos Ex: nota fiscal tem srie, data, nmero
carro tem marca, cor, modelo

Atributo de entidade valor Ex: o nmero da nota fiscal 1234


a idade da pessoa 36

132

Extenses do MER
Atributos compostos - formados por mais de um atributo Atributos multivalorados - levam uma entidade a mais de um ponto do conjunto de valores
Fones Clientes Logradouro Nome Endereo CEP
133

Num Apto

Extenses do MER
Parcialidade / Totalidade
Nem todo funcionrio gerencia um departamento (parcial) Todo departamento gerenciado por um funcionrio (total)
1 1

Funcionrios

Gerencia

Departamentos
134

Extenses do MER
Relacionamentos totais e parciais
Nome Dt_nasc Pessoas 1 Casa
135

Mora

Nome Cidades

Pop

Nasce

Extenses do MER
Cardinalidade dos relacionamentos com valores mximo e mnimo de entidades que se associam
(0,40) (1,6)

Alunos Mat Nome

Cursa

Disciplinas Cod Des


136

Nota

Perodo

Extenses do MER
Generalizao x Especializao
Ender Tipo Clientes Cod Nome

Cod

PF

PJ

Cod CGC

CPF Sexo Est_civil

Capital Mes_in Nu_meses_ex

137 As subcategorias (subtipos) herdam os atributos da categoria supertipo)

Extenses do MER
Hierarquia de generalizao - uma categoria de entidades C uma generalizao de um conjunto de entidades S1, S2, ..., Sn, chamadas subcategorias de C, se cada conjunto de entidades Si for um subconjunto de C e cada instncia de C for uma instncia de um e somente um dos conjuntos de entidades S1, S2, ..., Sn
138

Extenses do MER
Agregao
Consultas Mdicos m Atende n Pacientes

Prescreve Exames
139 Um exame prescrito por um mdico para um paciente

Extenses do MER
Agregao - uma abstrao que:
permite que relacionamentos sejam tratados como entidades de nvel mais alto permite modelar um relacionamento entre uma entidade e um relacionamento (este geralmente m: n)

140

Extenses do MER
Chave primria - conjunto de atributos que identificam uma nica entidade
Ex: CDD, mat, matf + num

Chave candidata - conjunto de atributos que podem ser chave primria


Ex: mat, RG, CDD
CoDep Departamentos CDD Nmd Funcionrios Dependentes Sal 141 Mat Nmf Sexo RG Matf Nud Nmd

Extenses do MER
Chave secundria ou alternada - conjunto de atributos que identificam um grupo de entidades
Ex: sal, sexo, ...
CoDep Departamentos CDD Nmd Funcionrios Dependentes Sal Mat Nmf Sexo RG Matf Nud Nmd
142

Extenses do MER
Chave estrangeira - conjunto de atributos que so chaves primrias em outro conjunto de entidades
Ex: codDep, matf, ...
CoDep Departamentos CDD Nmd Funcionrios Dependentes Sal Mat Nmf Sexo RG Matf Nud Nmd
143

Extenses do MER
Chave estrangeira ou surrogate key- nmero seqencial sem qualquer semntica, introduzido para ser chave primria de um conjunto de entidades
Ex: nud, mat, ...
CoDep Departamentos CDD Nmd Funcionrios Dependentes Sal Mat Nmf Sexo RG Matf Nud Nmd
144

Extenses do MER
Como escolher a chave primria
Deve ser a menor possvel Valor no muda ao longo da vida da entidade No pode ser NULL (nem parcial, nem totalmente)

145

Mapeamento MER X DER


Funcionrios Mat Nmd n Aloca Dt_aloca 1 Projetos Cdp Nmp

Funcionrios Mat Nmd Cdp Dt_aloc

Projetos Cdp Nmp


146

Chave primria do lado 1 vai para o lado n Atributos do relacionamento vo para o lado n

MER X DER
Alunos Cda Nma m Nota Cursa Perodo n Disciplinas Cdd Nmd

Alunos Cda Nma Cda

Al-di Cdp Dt_aloc Cdd

Disciplinas Cdd Nmd

Quebra o relacionamento m:n em dois 1:n Atributos do relac. ficam na entidade intermediria Chaves primrias das entidades fazem parte da chave primria da entidade intermediria

147

MER X DER
Mdicos Cdm Nmm 1 Gerencia Dt_posse 1 Hospitais Cdh Nmh

Mdicos CdmNmm

Hospitais Dt_posse Cdm Nmm Cdm

Atributos do relacionamento vo para a entidade que tem participao total no relacionamento Chave primria da entidade do lado parcial vai para a entidade que participa totalmente

148

MER X DER
Nom Funcionrios Mat Chefe Subordinado 1 Chefia n

Funcionrios Mat Nom Matchefe


149

MER X DER
des Peas Cod Componentes Compostos m Qtd n Compe

Cd-componente Funcionrios Mat Nom Qtd Compe Cd-composto


150

MER X ...
1 Mat Nom Gerencia 1 Cdd 1 Des Dt_posse Aloca n Dt_aloc n Cursa

Funcionrios 1 Chefia n

Departamentos

m Cursos Cdct Nmc

151

... X DER
Dt_aloc Mat Nom Cdd Cdd Des

Funcionrios Mat-ch Cursa Chefe

Departamentos Dt_posse Cursos Mat-ger

Subordinado Mat Cdct Dt_cur Cdct Nmc


152

MER X DER
Mundo Real MER...................................... Modelo Conceitual

DER ..................................... Modelo Relacional ..... Modelo Lgico Modelo Fsico

153

MER X DER
MER - os atributos de uma entidade no devem aparecer em outra DER - os atributos de uma entidade podem aparecer em outra para estabelecer o relacionamento

154

MER X DER
AR CB A 1 R 1 B A CA AA A CA AA A CA AA B CB AB AR CA A 1 R N B B CB AB CA CB AB AR B CB AB
155

CA AA AR CB AB

CA AA AR CB AB A R N B CA AA AR CB AB M

MER X DER
Relacionamento M x N se transforma em 2 relacionamentos 1 : n
Funcionrios Mat 100 200 300 Nom Lotaes Mat Cdd Dat Departamentos Cdd Nmd

Ari 100 Adm Jan/98 Ven Vendas Ana100 Ven Mar/99 Pro Produo Eva 200 Ven Out/00 Adm Adminst 300 Pro Mai/01
156

MER X DER
CA AA A 1 1 B AB Tipo CA AA A Tipo

1 C AC

B CA AB

C CA AC

157

MER X DER
AR A M R P C CC AC N B CB AB A CA AA C CC AC CA CC CB AR R B CB AB

CA AA

158

MER X DER
AR A M R P S AS Q C N B CB AB A CA AA CA AS CA CB R S C CC AC
159

AR B CB AB CB CC

CA AA

CC AC

Modelagem com ferramenta CASE


Metodologia IDE1X
Desenvolvida pela US Air Force Usada por vrios rgos do governo americano Representa relacionamentos via chaves compartilhadas Usada por grandes empresas de diversas reas

160

Modelagem com ferramenta CASE


Metodologia IDE1X...
Trata chaves como o modelo relacional A chave primria (PK) do lado 1 vai para o lado N
Relacionamento no identificador (linha cheia): chave estrangeira far parte da PK no lado N Relacionamento no identificador (linha pontilhada): chave estrangeira no far parte da chave primria no lado N
161

Modelo Relacional
Baseia-se na teoria dos conjuntos Os elos so implcitos O usurio v o banco de dados como um conjunto de tabelas
Funcionrios Mat Nome Dep 100 Ana Ven 200 Edu Pro 300 Ari Adm 400 Eva |Mar Nome da tabela Atributos Tuplas Valor de atributo Domnios
162

Modelo Relacional
Esquema da relao (tabela): funcionrios (mat, nom, dep) Relao - subconjunto do produto cartesiano dos domnios R D1 x D2 x ... X Dn
100 300 400 Matrculas 200 Ana Eva Ari Nomes Edu Pro Ven Departamentos
163

Adm Mar

Modelo Relacional
Uma relao pode ser representada sob forma de tabela, onde
cada coluna representa um atributo cada linha representa uma ocorrncia de:
uma entidade um relacionamento

Linha (tupla) um conjunto de atributos

164

Modelo Relacional
Um relao pode ser representada sob forma de tabela onde: ...
Domnio - conjunto de valores do atributo Grau de uma relao - nmero de atributos da tupla da relao Chave primria - um ou mais atributos que identificam uma nica linha Ex: aluna (mat, nom, dt_nasc, sexo)
165

Normalizao
Mundo Real Mundo Real

MER Modelo Lgico Arquivos (Top-Down)

Modelo Lgico Normalizao Arquivos (Botton-Up)

166

Normalizao
Simplificao de relaes a fim de que os algoritmos de atualizao de dados sejam mais simples e mais claros Como sub-produto: eliminao da redundncia de dados Resultado das pesquisas de E. F. Codd

167

Normalizao
A matrcula de uma funcionrio
Determina funcionalmente o nome bem como o salrio do funcionrio Matrcula Nome Matrcula Salrio Se A determina funcionalmente B, ento B depende funcionalmente de A, logo: Nome depende funcionalmente de matrcula
168

Normalizao
Dependncia Funcional
Func (mat, nome, sal, CPF) Mat Mat Mat Mat CPF CPF CPF Nome Sal CPF Sal Nome Mat Nome Sal CPF
169

Normalizao
Dependncia Funcional Completa:
Um conjunto de atributos B ed R completamente dependente funcionalmente de outro conjunto de atributos A de R, se B depende funcionalmente de A como um todo

170

Normalizao
Tarefa (mat, nom, nu_proj, nm_proj, horastrab)
Mat, nu_proj Mat horas-trab nome

Mat

Nom

Nu_proj

Nm_proj

Horas-trab

171

Normalizao
A chave primria deve:
Identificar uma nica tupla Conter o mnimo de atributos

Aps a escolha da chave, verificar:


A chave pode ser simplificada pela retirada de algum atributo ? Algum componente da chave tem valor indefinido ?
172

Normalizao
Quais as chaves das relaes abaixo ? Pedido (nu_ped, nu_cliente, dt_ped, vl_ped) His-aluno (mat, nom, disciplina, nota, dt_entrada_univ) Venda (nu_ped, nu_cli, nu_nu_vendedor, cd_item, qt_venda, preo_unit, vl_item)
173

Normalizao
Objetivo = FNBC = Forma Normal de Boyce-Codd = todas as DF vm do fato chave p tudo Formalmente, R est na FNBC se em toda DF no trivial para R, na forma X p A, X uma superchave

174

Normalizao
Porque ?
Garante a falta de redundncia decorrente das DF Garante a falta da anomalia de atualizao
uma ocorrncia de um fato atualizada, e no todas

Garante a falta da anomalia de retirada


um fato vlido permitido quando a tupla deletada

175

Exemplo de problemas
Bebedores(Nome, Endereo, CervBoas,Fabr,CervFavorita)
Nome Jane Jane Flavio Endereo CervBoas Fabr Papicu ??? Centro CervFavorita A.B. Cerpa ??? Cerpa Extra ??? Bud Bud Cerpa Extra Bud

DFs
Nome p Endereo Nome p CervFavorita CervBoas p Fabr ??? So redundantes, pois pode-se descobr-los a partir das DF Quais anomalias de atualizao de retirada ?
176

Exemplo de Problemas
Bebedores(Nome, Endereo, CervBoas, Fabr, CervFavorita) DFs
Nome p Endereo Nome p CervFavorita CervBoas p Fabr

Cada uma das DF dadas viola a FNBC


a chave = {Nome, CervBoas} o lado esquerdo das DF dadas subconjunto prprio da chave Nem nome, nem CervBoas superchave 177

Outro exemplo
Cervejas(Nome, Fabr, EndFabr) DFs
Nome p Fabr Fabr p EndFabr, logo Nome p EndFabr

a nica chave nome


Fabr p EndFabr viola a FNBC, pois o lado esquerdo no nenhuma superchave
178

Exemplo
Bebedores(Nome, Endereo, CervBoas, Fabr, CervFavorita) DFs
Nome p Endereo Nome p CervFavorita CervBoas p Fabr

relaes decompostas
Bebedores1(Nome, Endereo,CervFavorita) Bebedores2(Nome,CervBoas,Fabr)

DF projetadas (aps muito trabalho)


Para Bebedores1(Nome,Endereo,CervFavorita)
Nome p Endereo Nome p CervFavorita

Para Bebedores2(Nome,CervBoas,Fabr))
CervBoas p Fabr
179

Exemplo
Bebedores1(Nome, Endereo, CervBoas, Fabr, CervFavorita) DFs Nome p Endereo Nome p CervFavorita Bebedores2(Nome,CervBoas,Fabr) CervBoas p Fabr

Alguma violao da FNBC ?


Em Bebedores 2 a chave {Nome,CervBoas}e CervBoas p Fabr viola a FNBC

Decompor Bebedores2

180

Exemplo
Bebedores2(Nome, CervBoas, Fabr) DFs CervBoas p Fabr

Decompor Bebedores 2
Expandir lado direito: nada Decompor
Bebedores3(CervBoas,Fabr) Bebedores4(Nome,CervBoas)

Relaes resultantes esto todas na FNBC


Bebedores1(Nome, Endereo,CervFavorita) Bebedores3(CervBoas,Fabr) Bebedores4(Nome,CervBoas)
181

1 FN
Fora a organizao dos dados como estruturas planas sem grupos repetidos
Todo componente de toda tupla um valor atmico

2 FN
Fora a decomposio dos esquemas na !FN de maneira que a chave primria inteira necessria para identificar todos os atributos da relao
no pode haver uma DF no-trivial cujo lado esquerdo seja um subconjunto prprio de uma chave
182

3r Forma Normal
Uma situao que causa problemas
Se fizer uma decomposio, no poder verificar as DF nas relaes decompostas Se no fizer a decomposio, violar a FNBC

De forma abstrata: AB p C e C p B
Ex: Pea Cidade p Teatro e Teatro p Cidade Ex: Rua Cidade p CEP e CEP p Cidade

Chaves: {A,B} e {A,C} mas C p B tem o lado esquerdo uma no-superchave (violando FNBC)
sugere a decomposio em AC e BC Mas no poder checar a DF AB p C nessas relaes 183

3r FN
Exemplo: R(Rua, Cidade,CEP)
Rua Cidade p CEP e CEP p Cidade
Rua Washinton Soares Washinton Soares CEP 60810 60811 Cidade Fortaleza Fortaleza CEP 60810 60811

Juno

Cidade
Fortaleza Fortaleza

Rua

CEP

Washinton Soares 60810 Washinton Soares 60811


184

3r FN - Definio
Uma relao R est na 3FN se e somente se para toda DF no trivial da forma X p A
X uma superchave

ou
A membro de alguma chave

185

FNBC
Elimina redundncias e anomalias de atualizao e retirada
O lado esquerdo de toda DF uma superchave para a relao

186

4 FN
Reconhece e separa atributos multivalorados constituindo uma chave primria composta Provavelmente, voc ir realizar isso intuitivamente reconhecendo grupos independentes que se repetem. Contudo, as formas normais anteriores no estabelecem explicitamente esta regra.
O lado esquerdo de toda dependncia multivalorada uma superchave para a relao Exemplo do problema: Nome p Rua Cidade
187

4 FN
Como decompor uma relao para relaes na 4FN ?
Seja a DM X p Y, onde X no uma superchave para a relao R As relaes decompostas so:
R1(X,Y) R2(X, outros atributos)

188

Outras Formas Normais


So complexas e no-intuitivas No so teis na prtica para o projeto relacional

189

Scripts Oracle

190

Tabela
Unidade bsica de armazenamento da base de dados, formada por colunas e linhas (tuplas)

191

Criando Tabelas
Criando a tabela depto.
SQL> CREATE TABLE depto 2 (depto_num NUMBER(2), 3 depto_nom VARCHAR2(14), 4 depto_loc VARCHAR2(13)); Table created.

Listando a estrutura da tabela criada.


SQL> DESCRIBE depto Name Null? --------------------------- -------DEPTO_NUM NOT NULL DEPTO_NOME DEPTO_LOC Type --------NUMBER(2) VARCHAR2(14) VARCHAR2(13)
192

Descartando uma Tabela


Todos os dados e a estrutura da tabela so destrudos. Qualquer transao pendente encerrada. Todos os ndices so descartados.
SQL> DROP TABLE depto30; Table dropped.

Essa operao no pode ser desfeita.

193

Truncando uma Tabela


Remove todas as linhas da tabela liberando o espao ocupado
SQL> TRUNCATE TABLE departamento; Table truncated.

Essa operao no pode ser desfeita

194

Alterando uma Tabela


Altera a estrutura de uma tabela
SQL> Alter TABLE departamento alter column nome varchar(20); Table altered. SQL> Alter TABLE departamento drop column nome; Table altered. SQL> Alter TABLE departamento add nome varchar(20); Table altered.

Essa operao no pode ser desfeita

195

O Comando INSERT
Adicione linhas a uma tabela utilizando o comando INSERT.
INSERT INTO VALUES table [(column [, column...])] (value [, value...]);

O comando INSERT insere apenas uma linha por vez.

No esquea o COMMIT

Inserindo Novas Linhas


Insira uma nova linha informando os valores para cada coluna da tabela. Liste os valores na mesma ordem das colunas na tabela. Opcionalmente, liste as colunas na clusula do INSERT.
SQL> INSERT INTO depto (depto_num, depto_nome, depto_loc) 2 VALUES (50, 'DESENVOLVIMENO', RECIFE'); 1 row created.

Strings e datas devem ser informando entre aspas simples.

Inserindo Linhas com Nulls


Implicitamente: omita o nome da coluna da lista de colunas.
SQL> INSERT INTO 2 VALUES 1 row created. depto (depto_num, depto_nome ) (60, REC HUMANOS');

Explicitamente: especifique o valor NULL.


SQL> INSERT INTO 2 VALUES 1 row created. depto (70, JURIDICO', NULL);

O Comando UPDATE
Modificando linhas existentes com o comando UPDATE.
UPDATE SET [WHERE table column = value [, column = value] condition];

Modifique mais de uma linha por vez especificando uma condio na clusula WHERE. No esquea o COMMIT

Atualizando linhas em uma tabela


Linhas especficas podem ser modificadas utilizando a clusula WHERE.
SQL> UPDATE emp 2 SET depto_num = 20 3 WHERE enum = 7782; 1 row updated.

Todas as linhas da tabela so modificadas se a clusula WHERE for omitida.


SQL> UPDATE emp 2 SET depto_num = 20; 14 rows updated.

Eliminando Linhas de uma Tabela


Linhas especficas podem ser eliminadas utilizando a clusula WHERE.
SQL> DELETE FROM 2 WHERE 1 row deleted. depto depto_nome = 'DESENVOLVIMENTO';

Todas as linhas da tabela so eliminadas se a clusula WHERE for omitida.


SQL> DELETE FROM 4 rows deleted. depto;

O Comando SELECT
SELECT FROM [DISTINCT] {*, column [alias],...} table;

SELECT identifica as colunas FROM identifica as tabelas

202

Selecionando linhas
SQL> SELECT * 2 FROM depto;

SQL> SELECT depto_num, depto_loc 2 FROM depto; SQL> SELECT enome, sal, sal+300 2 FROM emp;

SQL> SELECT enome, sal, 12*sal+100 2 FROM emp;


203

Definindo Alias para Colunas


SQL> SELECT enome AS nome, sal AS salario 2 FROM emp; NOME SALARIO ------------- --------... SQL> SELECT enome "Nome", 2 sal*12 Salario Anual" 3 FROM emp; Nome Salario Anual ------------- ------------...
204

Eliminando Linhas Duplicadas


DISTINCT
SQL> SELECT DISTINCT depto_num 2 FROM emp;

DEPTO_NUM --------10 20 30

205

Utilizando a Clusula WHERE


SQL> SELECT enome, cargo, depto_num 2 FROM emp 3 WHERE cargo='CAIXA';

ENOME ---------RONALDO MANUEL PAULO LUCIANO

CARGO DEPTO_NUM --------- --------CAIXA 30 CAIXA 20 CAIXA 20 CAIXA 10

Operadores de Comparao
Operador = > >= < <= <> Significado Igual a Maior que Maior ou igual a Menor que Menor ou igual a Diferente de

Outros Operadores
Operador BETWEEN ...AND... IN(lista) LIKE IS NULL Significado Entre dois valores (inclusive) Satisfaz uma lista de valores Satisfaz um padro de caracteres um valor nulo (null)

Operador BETWEEN
SQL> SELECT 2 FROM 3 WHERE enome, sal emp sal BETWEEN 1000 AND 1500; limite inferior limite superior

ENOME SAL ---------- --------MARIA 1250 SERGIO 1500 MATHEUS 1250 PAULO 1100 LUCIANO 1300

Operador IN
SQL> SELECT 2 FROM 3 WHERE enum, enome, sal, ger emp ger IN (7902, 7566, 7788);

ENUM --------7902 7369 7788 7876

ENOME SAL GER ---------- --------- --------JOSE 3000 7566 MANUEL 800 7902 FABIO 3000 7566 PAULO 1100 7788

Operador LIKE
Utilize o operador LIKE para realizar pesquisas por padres (wildcards).
% substitui zero ou mais caracteres _ substitui um nico caracter

SQL> SELECT 2 FROM 3 WHERE

enome emp enome LIKE M%';

Operador IS NULL
Testando valores nulos (null)
SQL> SELECT 2 FROM 3 WHERE enome, ger emp ger IS NULL;

ENOME GER ---------- --------CARLOS

Operadores Lgicos
Operador AND OR Significado Retorna TRUE se a condio de ambos os componentes for TRUE Retorna TRUE se a condio de um dos componentes for TRUE Retorna TRUE se a condio for FALSE (vise-versa)

NOT

Operador NOT
SQL> SELECT enome, cargo 2 FROM emp 3 WHERE cargo NOT IN('CAIXA','GERENTE','ANALISTA');

ENOME ---------CARLOS MARIA CELSO SERGIO MATHEUS

CARGO --------PRESIDENTE VENDEDOR VENDEDOR VENDEDOR VENDEDOR

Clusula ORDER BY
SQL> SELECT enome, cargo, depto_num, dtinicio 2 FROM emp 3 ORDER BY dtinicio DESC; ENOME CARGO DEPTO_NUM ---------- --------- --------PAULO CAIXA 20 FABIO ANALISTA 20 LUCIANO CAIXA 10 RONALDO CAIXA 30 JOSE ANALISTA 20 CARLOS PRESIDENTE 10 MARIA VENDEDOR 30 ... 14 rows selected. DTINICIO --------12-JAN-83 09-DEC-82 23-JAN-82 03-DEC-81 03-DEC-81 17-NOV-81 28-SEP-81

Joins
Utilize uma juno para consultar dados de mais de uma tabela.
SELECT FROM WHERE table1.column, table2.column table1, table2 table1.column1 = table2.column2;

Especifique a condio de juno na clusula WHERE. Informe o nome da tabela junto com o nome da coluna, se tabelas diferentes possurem colunas com os mesmos nomes.

Criando Alias para Tabelas


SQL> SELECT emp.enum, emp.enome, emp.depto_num, 2 depto.depto_num, depto.depto_loc 3 FROM emp, depto 4 WHERE emp.depto_num = depto.depto_num;

SQL> SELECT e.enum, e.enome, e.depto_num, 2 d.depto_num, d.depto_loc 3 FROM emp e, depto d 4 WHERE e.depto_num = d.depto_num;

O que so Funes de Grupo?


Funes de grupo operam em conjuntos de linhas, produzindo um resultado por grupo.
EMP
DEPTO_NUM SAL --------- --------10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250

o maior salrio da tabela EMP

MAX(SAL) --------5000

Tipos de Funes de Grupo


AVG (mdia) COUNT (contagem) MAX (mximo) MIN (mnimo) STDDEV SUM (soma) VARIANCE (variao)

Utilizando Funes de Grupo


SELECT FROM [WHERE [ORDER BY column, group_function(column) table condition] column];

Funes AVG e SUM


Utilize o AVG e SUM apenas para dados numricos
SQL> SELECT 2 3 FROM 4 WHERE AVG(sal), MAX(sal), MIN(sal), SUM(sal) emp cargo LIKE VEND%';

AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) -------- --------- --------- --------1400 1600 1250 5600

Funes MIN e MAX


Utilize MIN e MAX para qualquer tipo de dado
SQL> SELECT 2 FROM MIN(dtinicio), MAX(dtinicio) emp;

MIN(DTINI MAX(DTINI --------- --------17-DEZ-80 12-JAN-83

Funo COUNT
COUNT(*) retorna o nmero de linhas na tabela
SQL> SELECT 2 FROM 3 WHERE COUNT(*) --------6 COUNT(*) emp depto_num = 30;

Funo COUNT
COUNT(coluna) retorna o nmero de linhas no nulas da tabela
SQL> SELECT 2 FROM 3 WHERE COUNT(COMIS) -----------4 COUNT(comis) emp depto_num = 30;

Criando Grupos de Dados


EMP
DEPTO_NUM SAL --------- --------10 2450 10 5000 2916.6667 10 1300 DEPTO_NUM AVG(SAL) 20 800 20 1100 mdia salarial --------- --------20 3000 2175 por 10 2916.6667 20 3000 departamento 20 2175 20 2975 30 1600 30 1566.6667 30 2850 30 1250 1566.6667 30 950 30 1500 30 1250

Criando Grupos de Dados: A Clusula GROUP BY


Divida as linhas de uma tabela em pequenos grupos usando a clusula GROUP BY.
SELECT FROM [WHERE [GROUP BY [ORDER BY column, group_function(column) table condition] group_by_expression] column];

A Clusula GROUP BY
Colunas utilizadas em funes de grupo no precisam estar listadas no GROUP BY.
SQL> SELECT AVG(sal) 2 FROM emp 3 GROUP BY depto_num;

AVG(SAL) --------2916.6667 2175 1566.6667

Utilizando GROUP BY em Mltiplas Colunas


SQL> SELECT depto_num, cargo, sum(sal) 2 FROM emp 3 GROUP BY depto_num, cargo;

DEPTO_NUM CARGO SUM(SAL) --------- --------- --------10 CAIXA 1300 10 GERENTE 2450 10 PRESIDENTE 5000 20 ANALISTA 6000 20 CAIXA 1900 ... 9 rows selected.

Subqueries
SELECT FROM WHERE select_list table expr operator (SELECT FROM select_list table);

A subquery (inner query) geralmente executada antes da consulta principal. O resultado da subquery , ento, avaliado pelo da query principal (outer query).

Utilizando uma Subquery


SQL> SELECT enome 2 FROM emp 2975 3 WHERE sal > 4 (SELECT sal 5 FROM emp 6 WHERE enum=7566); ENOME ---------CARLOS JOSE FABIO

Regras para Subqueries


Utilize subqueries entre parnteses. As subqueries vem sempre direita do operador de comparao. No utiliza a clusula ORDER BY em subqueries. Uma subquery retorna uam tabela sobre a qual pode-se realizar qualquer uma das operaes vista anteriormente.

Stored Procedures
Procedimantos que permanecem armazenados no banco, de forma compilada. Servem para executar alguma computao quando invocados

232

Sintaxe
CREATE OR REPLACE PROCEDURE NOME ( NOME TIPO[,NOME TIPO] ) IS BEGIN [DECLARE] <CORPO> COMMIT; EXCEPTION WHEN OTHERS THEN <CORPO> END NOME; /

233

Sintaxe (exemplo)
CREATE OR REPLACE PROCEDURE AJUSTE (VALOR REAL, CAD INTEGER) IS BEGIN UPDATE acf_EMPREGADO SET salario=salario + salario*VALOR WHERE cadastro=CAD; COMMIT; EXCEPTION WHEN OTHERS THEN INSERT INTO acf_ERROS values(SYSDATE,'Erro na execucao de ajuste'); END AJUSTE; /

234

Execuo
EXECUTE AJUSTE(0.1, 21); O procedimento executado. Caso algum erro ocorra, ento a tabela de erros ser atualizada.

235

Exemplo
CREATE OR REPLACE PROCEDURE Lista_Func (codDepto llma_funcionarios.depto_func%TYPE) IS BEGIN DECLARE --cursor para guardar os funcionarios CURSOR c_diario_func is SELECT llma_funcionarios.cod_func, llma_funcionarios.nome_func, FROM llma_funcionarios WHERE depto_func = codDepto; --declaracao das variaveis do cursor v_cod_func llma_funcionarios.cod_func%TYPE; v_nome_func llma_funcionarios.nome_func%TYPE;
236

Exemplo (cont)
--inicio da procedure BEGIN open c_diario_func; dbms_output.put_line('** Lista do Diario dos Funcionarios **'); loop fetch c_diario_func into v_cod_func, v_nome_func; dbms_output.put_line('Codigo do Funcionario : ' || v_cod_func); dbms_output.put_line('Nome Funcionario : ' || v_nome_func); dbms_output.put_line(''); dbms_output.put_line('---------------------------------'); dbms_output.put_line(''); exit when c_diario_func%NOTFOUND; end loop; close c_diario_func; END; --excecoes exception when no_data_found then dbms_output.put_line('Nenhuma registro foi encontrado'); when others then dbms_output.put_line('Erro desconhecido: ' || to_char(sqlcode)); END Lista_Func; /

Procedures
Prodecures no retornam valores A partir de uma procedure pode-se chamar outras procedures Procedures so salvas em um arquivo .sql e compiladas no Oracle com o comando @caminho_completo do SQL Plus Caso ocorra algum erro de compilao a procedure no funciona corretamente Erros de compilao podem ser vistos com o comando show_errors do SQL Plus.
238

Triggers
Procedimantos especiais guardados no banco de forma compilada Acionados automaticamente pelo banco quando sua condio de ativao for veradeira

239

Sintaxe
CREATE OR REPLACE TRIGGER NOME CONDICAO DE ATIVACAO BEGIN <CORPO> END; / A CONDICAO DE ATIVACAO pode ser montada a partir de expresses lgicas: BEFORE DELETE ON NOME_TABELA ou AFTER DELETE OR INSERT OR UPDATE ON NOME_TABELA
240

Sintaxe (exemplo)
CREATE OR REPLACE TRIGGER LOG_FUNCIONARIO BEFORE DELETE OR INSERT OR UPDATE ON acf_EMPREGADO BEGIN INSERT INTO acf_LOG_funcionario VALUES(SYSDATE,'Tabela modificada'); END; /

241

Sintaxe (exemplo)
CREATE OR REPLACE TRIGGER t_verifica_data_contratos BEFORE insert on llma_diario for each row DECLARE datainicial llma_contratos.dataini%TYPE; BEGIN SELECT to_char(dataini,'dd/mm/yyyy') FROM llma_contratos WHERE cod_con = :new.cod_con;

into

datainicial

--faz a condicao se a data ta no periodo IF ((:new.datahoraini < datainicial) or (:new.datahoraini > datafinal)) then raise_application_error(-20500, 'Data Inicio tem que esta no periodo de: '|| to_char(datainicial,'dd/mm/yyyy') || ' a ' || to_char(datafinal,'dd/mm/yyyy')); END IF; END; /

Sintaxe (exemplo)

CREATE or REPLACE TRIGGER TG_DataColetaInvalida BEFORE INSERT ON xcoleta FOR EACH ROW BEGIN IF :NEW.data < sysdate THEN RAISE_APPLICATION_ERROR ('-20000', 'Data j passou'); END IF; END; /

Sintaxe (exemplo) CREATE or REPLACE TRIGGER TG_AlteraItemColeta


AFTER insert or update or delete on xitemcoleta FOR EACH ROW BEGIN IF DELETING THEN UPDATE XCOLETA SET PESO = (PESO - :OLD.PESO), QUANTIDADE = (QUANTIDADE - :OLD.QUANTIDADE), VOLUME = (VOLUME - :OLD.VOLUME) WHERE COLETA = :OLD.COLETA; ELSIF INSERTING THEN UPDATE XCOLETA SET PESO = (PESO + :NEW.PESO), QUANTIDADE = (QUANTIDADE + :NEW.QUANTIDADE), VOLUME = (VOLUME + :NEW.VOLUME) WHERE COLETA = :NEW.COLETA; ELSIF UPDATING THEN UPDATE XCOLETA SET PESO = (PESO + :NEW.PESO - :OLD.PESO), QUANTIDADE=(QUANTIDADE+ :NEW.QUANTIDADE- :OLD.QUANTIDADE), VOLUME = (VOLUME + :NEW.VOLUME - :OLD.VOLUME) WHERE COLETA = :OLD.COLETA; END IF; END; /

Triggers
Triggers so salvos em um arquivo .sql e compiladas no Oracle com o comando @caminho_completo do SQL Plus Caso ocorra algum erro de compilao o trigger no funciona corretamente Erros de compilao podem ser vistos com o comando show_errors do SQL Plus. Gatilhos podem ser utilizados para implementar regras de negcio
245