Beruflich Dokumente
Kultur Dokumente
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
10
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
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
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
Dependentes Possui
FunPro Tem
Projetos
Departamentos
26
28
Conta Corrente
Fundos de Investimentos
30
Conta Corrente
Fundos de Investimentos
num_atual_cotas, dt_nasc
32
SGBD
DATE - 1985
Um banco de dados uma coleo de dados operacionais armazenados usados pelos sistemas de aplicao de uma determinada organizao.
35
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
Programador de Aplicao
codifica programas batch ou on-line para manter o DB
39
41
44
45
46
47
Mltiplas Interfaces
Acesso via menu, linguagem natural, query language, linguagem de programao
48
Restries de integridade
Armazenadas no BD enxugam os programas de aplicao
49
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)
...
53
Arquiteturas de SGBD
Arquitetura de 3 nveis (ANSI/SPARC 75)
(American. Nacional Standart Institute / System Planning and Requirements Commitee)
...
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
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
67
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)
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
...
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
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
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
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
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
113
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
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
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
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
131
MER
Anlise Sentencial
Entidade tem atributos Ex: nota fiscal tem srie, data, nmero
carro tem marca, cor, modelo
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)
Cursa
Nota
Perodo
Extenses do MER
Generalizao x Especializao
Ender Tipo Clientes Cod Nome
Cod
PF
PJ
Cod CGC
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
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
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
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
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
MER X DER
des Peas Cod Componentes Compostos m Qtd n Compe
MER X ...
1 Mat Nom Gerencia 1 Cdd 1 Des Dt_posse Aloca n Dt_aloc n Cursa
Funcionrios 1 Chefia n
Departamentos
151
... X DER
Dt_aloc Mat Nom Cdd Cdd Des
MER X DER
Mundo Real MER...................................... Modelo Conceitual
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
160
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
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
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
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
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
Outro exemplo
Cervejas(Nome, Fabr, EndFabr) DFs
Nome p Fabr Fabr p EndFabr, logo Nome p EndFabr
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)
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
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)
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
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
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.
193
194
195
O Comando INSERT
Adicione linhas a uma tabela utilizando o comando INSERT.
INSERT INTO VALUES table [(column [, column...])] (value [, value...]);
No esquea o COMMIT
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
O Comando SELECT
SELECT FROM [DISTINCT] {*, column [alias],...} table;
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;
DEPTO_NUM --------10 20 30
205
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);
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
Operador IS NULL
Testando valores nulos (null)
SQL> SELECT 2 FROM 3 WHERE enome, ger emp ger IS NULL;
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');
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.
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;
MAX(SAL) --------5000
AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) -------- --------- --------- --------1400 1600 1250 5600
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;
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;
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).
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; /
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