Escolar Documentos
Profissional Documentos
Cultura Documentos
Banco de Dados
Banco de Dados
Implementa gradativamente sistemas para: z Vendas z Produo z Compras Usados em vrias funes Pode ocorrer que, para casa uma das funes, seja criado um arquivo separado de produtos.
Banco de Dados
z z
Redundncia controlada de dados z Quando o software tem conhecimento da mltipla representao da informao e garante a sincronia entre as diversas representaes.
Banco de Dados
Redundncia no controlada de dados z O usurio gerencia a redundncia z Dever ser evitado z Problemas:
z
Como evitar: Compartilhamento dos dados Cada informao armazenada uma nica vez Usar o conceito de Banco de Dados
Banco de Dados
Banco de Dados
z
A estrutura interna dos arquivos para a ser mais complexa Devem atender s necessidades dos diferentes sistemas Usar sistema de gerncia de banco de dados
Prof. Rossana Junqueira 6
Soluo:
z
Banco de Dados
Programa continha todas operaes z Interface de usurio z Transformao de dados e clculos z Operaes de armazenamento de dados z Tarefas de comunicao com outros sistemas e programas Foram identificadas funcionalidades comuns a muitos programas z Exibio dos dados na interface
z
Evoluo da programao:
z
Gerenciadores de interface do usurio Gerenciadores de comunicao Sistemas de Gerncia de Banco de Dados (SGBD)
Prof. Rossana Junqueira 7
Banco de Dados
Software que incorpora as funes de definio, recuperao e alterao de dados em um banco de dados Facilita o desenvolvimento de aplicaes de BD
z z
Banco de Dados
Sistema Dados:
z
de
Banco
de
Apenas um sistema computadorizado de manuteno de registros Sistema computadorizado cuja finalidade geral armazenar informaes e permitir que os usurios busquem e atualizem essas informaes quando as solicitar.
ou
z
Tal sistema envolve quatro componentes principais: Dados, Hardware, Software e Usurios.
9
Banco de Dados
Dados:
Sistema Monousurio: sistema em que no mximo um usurio pode acessar o banco de dados em determinado momento; Sistema Multiusurio: aquele em que muitos usurios podem acessar o banco de dados ao mesmo tempo. Dados Integrados: BD pode ser considerado como uma unificao de vrios arquivos que, de outro modo, seriam distintos, com a eliminao de qualquer redundncia parcial ou total entre esses arquivos. Dados Compartilhados: BD pode ser compartilhado entre diferentes usurios, no sentido de que diferentes usurios podem ter acesso aos mesmos dados, possivelmente ao mesmo tempo.
Banco de Dados
10
Hardware:
Volumes de armazenamento, processadores de hardware e memria. SGBD: Trata todas as requisies de acesso ao BD (acrescentar novos arquivos, inserir , buscar, excluir, alterar dados em arquivos existentes e remover arquivos existentes do banco de dados); SGBD BD Programadores de aplicaes: responsveis pela escrita de programas de aplicaes de banco de dados em alguma linguagem de programao; Usurios finais: que acessam o banco de dados atravs de uma aplicao; Administrador de banco de dados (DBA).
Prof. Rossana Junqueira 11
Software:
Usurios:
Banco de Dados
Modelo de Dados
z
Descrio dos tipos de informaes que esto armazenadas em um banco de dados Exemplo da indstria: z Modelo de dados informa:
z
So armazenadas informaes sobre produtos Para cada produto, so armazenados seu cdigo, preo e descrio Quais os produtos que esto armazenados no banco de dados
Banco de Dados
12
Nveis de Abstrao:
Um modelo de dados pode ser apresentado de vrias formas (texto, figura, ...) Cada apresentao do modelo recebe a denominao esquema de banco de dados
Banco de Dados Prof. Rossana Junqueira 13
Modelo Conceitual
z z
Independente do tipo de SGBD Registra: z Que dados podem aparecer no banco de dados No registra:
z
Como estes dados esto armazenados a nvel de SGBD Abordagem entidade-relacionamento (ER)
Banco de Dados
14
Modelo Lgico
z z z
Nvel de abstrao visto pelo usurio do SGBD Depende do tipo particular de SGBD que est sendo usado Em um SGBD relacional, os dados esto organizados na forma de tabelas
Banco de Dados
Modelo Fsico
z z
Usados por profissionais que fazem sintonia de performance em banco de dados, procurando otimizar o desempenho.
Banco de Dados
16
Constatao
z
Um arquivo em computador contm informaes sobre um conjunto de objetos ou entidades da organizao que atendida pelo sistema em computador Um arquivo para armazenar dados de produtos, outro para armazenar dados de vendas, outro para dados de ordem de servio e assim por diante Atravs da identificao das entidades que tero informaes representadas no banco de dados, possvel identificar os arquivos que comporo o banco de dados
Prof. Rossana Junqueira 17
Exemplo da indstria
z
Banco de Dados
Modelo da organizao z Define as entidades da organizao que tem informaes armazenadas no banco de dados z Exemplificando:
O diagrama nos informa que na organizao h produtos e tipos de produtos, que associado a cada tipo de produto h um cdigo do tipo e uma descrio e assim por diante.
Modelo do banco de dados z Define que arquivos (tabelas) faro parte do banco de dados z Exemplificando:
O diagrama nos informa que o banco de dados contm um arquivo com dados de produtos e tipos de produtos, que para cada tipo de produto so armazenados seu cdigo e sua descrio e assim por diante.
Prof. Rossana Junqueira 18
Banco de Dados
3 fases:
z
Modelagem conceitual z Construdo um modelo conceitual, na forma de um diagrama entidade-relacionamento. Modelo lgico z Objetiva transformar o modelo conceitual obtido na primeira faze em um modelo lgico. Projeto fsico z O modelo enriquecido com detalhes que influenciam no desempenho do banco de dados, mas no interferem em sua funcionalidade
Banco de Dados
19
Banco de Dados
20
Abordagem entidaderelacionamento
z z z z z
Tcnica para construir modelos conceituais de bases de dados Tcnica de modelagem de dados mais difundida e utilizada Criada em 1976 por Peter Chen Padro de fato para modelagem conceitual No nica:
z z
NIAM/ORM (tcnica europia da dcada de 70) UML (Tcnica para modelos Orientados a Objetos)
z z
Tcnicas de modelagem orientada a objetos (UML) baseiam-se nos conceitos da abordagem ER Modelo de dados representado atravs de um
z
Banco de Dados
Entidade
z
Conjunto de objetos da realidade modelada sobre os quais deseja-se manter informaes no banco de dados Exemplos:
z
Sistema de informaes industrial: z Produtos z Tipos de produtos z Vendas z Compras Sistemas de contas correntes: z Clientes z Conta correntes z Cheques z Agncias
Prof. Rossana Junqueira 22
Banco de Dados
Entidade
z z
z z
Entidade = conjunto de objetos Para se referir a um objeto em particular fala-se em instncia ou ocorrncia da entidade Entidade isoladamente no informa nada, necessrio saber quais as informaes que devem ser mantidas para cada objeto, ou seja, atribuir propriedades s entidades Propriedades so especificadas na forma de: relacionamentos, atributos e generalizaes/especializaes
Prof. Rossana Junqueira 23
Banco de Dados
Relacionamento
z
Conjunto de associaes entre entidades sobre as quais deseja-se manter informaes na base de dados
Relacionamento um conjunto de associaes entre instncias de entidades Uma instncia (ocorrncia) uma associao especfica entre determinadas instncias de entidade Exemplo (relacionamento LOTAO)
z
ocorrncia = par especfico formado por uma ocorrncia de PESSOA e uma ocorrncia de DEPARTAMENTO
Prof. Rossana Junqueira 24
Banco de Dados
Relacionamento
z
Auto-relacionamento:
z
Relacionamento de casamento z Uma ocorrncia de pessoa exerce o papel de marido z Uma ocorrncia de pessoa exerce o papel de esposa
25
Cardinalidade de relacionamentos
z
Quantas ocorrncias de uma entidade podem estar associadas a uma determinada ocorrncia de entidade atravs do relacionamento
de
uma
entidade
em
um
Banco de Dados
26
Cardinalidade de relacionamentos
z
Relacionamento de 1:1
Relacionamento de 1:n
Relacionamento de n:n
27
Cardinalidade de relacionamentos
z
Cardinalidade mnima:
z
Nmero mnimo de ocorrncias de entidade que so associadas a uma ocorrncia de uma entidade atravs de um relacionamento Para fins de projeto de BD, consideram-se apenas duas cardinalidades mnimas z cardinalidade mnima 0 z cardinalidade mnima 1 Denominao alternativa: z cardinalidade mnima 1 = associao obrigatria z cardinalidade mnima 0 = associao opcional
Banco de Dados
28
Banco de Dados
29
Atributo
z
Banco de Dados
30
Atributo
z
Identificador = conjunto propriedades de uma entidade (atributos e relacionamentos) cujos valores servem para distinguir uma ocorrncia da entidade das demais ocorrncias da mesma entidade
Banco de Dados
31
Generalizao e Especializao
Este conceito permite atribuir propriedades particulares a um subconjunto das ocorrncias (especializadas) de uma entidade genrica. z Associada ao conceito de generalizao/ Especializao est a idia de herana de propriedades. z Herdar propriedades significa que cada ocorrncia da entidade especializada possui:
z
z z
Alm de suas prprias propriedades Tambm as propriedades da ocorrncia da entidade genrica Prof. Rossana Junqueira 32 correspondente
Generalizao e Especializao
z
Banco de Dados
Entidade associativa
necessrio saber que medicamentos foram prescritos em cada consulta. z Uma entidade associativa nada mais que a redefinio de um relacionamento, que passa a ser tratado como se fosse tambm uma entidade.
z
Banco de Dados
34
Entidade associativa
Banco de Dados
35
Banco de Dados
36
Propriedades de modelos ER
z
z z
Isto significa que diferentes leitores de um mesmo modelo ER devem sempre entender exatamente o mesmo. DER pode ser usado como entrada a uma ferramenta CASE. Fundamental: todos os envolvidos devem estar treinados na sua perfeita compreenso. Risco: sub-utilizao Modelo ER apresenta apenas algumas propriedades de um banco de dados Foi concebido para o projeto da estrutura de um BD relacional Pouco poderoso para expressar restries de integridade (regras de negcio)
Prof. Rossana Junqueira 37
z z
Banco de Dados
Para fins de projeto de banco de dados, dois modelos ER so equivalentes, quando ambos geram o mesmo esquema de banco de dados Para analisar se dois modelos so equivalentes, necessrio considerar um conjunto de regras de traduo de modelos ER para modelos lgicos de banco de dados
Banco de Dados
38
Banco de Dados
39
A determinao de que construo da abordagem ER (entidade, relacionamento, atributo,...) ser usada para modelar um objeto de uma realidade
z z
no pode ser feita atravs da observao do objeto isoladamente necessrio conhecer o contexto (modelo dentro do qual o objeto aparece)
z z z z
Deciso por uma construo para a modelagem de um objeto est sujeita a alterao durante a modelagem No despender um tempo excessivo em longas discusses sobre como modelar um objeto O prprio desenvolvimento do modelo e o aprendizado sobre a realidade iro refinando e aperfeioando o modelo Existem critrios alguns critrios para escolha de construes de modelagem
Prof. Rossana Junqueira 40
Banco de Dados
Banco de Dados
41
Questo:
z
Modelar um determinado objeto (por exemplo, a categoria funcional de cada empregado de uma empresa) como atributo ou como especializao? z Especializao deve ser usada quando as classes especializadas de entidades possuem propriedades particulares
Banco de Dados
42
Verificao do modelo
z z
Uma vez construdo, um modelo ER dever ser validado e verificado. A verificao o controle de qualidade que procura garantir que o modelo usado para a construo do banco de dados gerar um bom produto. Um modelo para ser considerado bom, deve preencher uma srie de requisitos, como ser completo, ser correto e no conter redundncia. Modelo CORRETO
z
Dois tipos de erros: sintticos e semnticos z Sintticos ocorrem quando o modelo no respeita as regras de construo de um modelo ER z Semnticos ocorrem quando o modelo, apesar de estar sintaticamente correto, reflete a realidade de forma inconsistente.
Estabelecer associaes incorretas Usar uma entidade do modelo como atributo de outra entidade
43
Verificao do modelo
z
Modelo COMPLETO
z z z
Deve fixar todas as propriedades desejveis do banco de dados. Somente pode ser verificado por algum que conhece profundamente o sistema a ser implementado. Forma de verificar: z Todos os dados que devem ser obtidos do banco de dados esto presentes? z Todas as transaes de modificao do banco de dados podem ser executadas sobre o modelo? Este requisito aparentemente conflitante com a falta de poder de expresso de modelos ER.
Banco de Dados
44
Verificao do modelo
z
Modelo deve ser mnimo, isto no deve conter conceitos redundantes Tipos de redundncia: z Relacionamentos redundantes so relacionamentos que so resultados da combinao de outros relacionamentos entre as mesmas entidades.
Um relacionamento redundante, quando possvel elimin-lo do modelo ER, sem que haja perda de informaes no banco de dados.
Banco de Dados
45
Verificao do modelo
z
Atributos redundantes so atributos derivveis a partir da execuo de procedimentos de busca de dados e/ou clculos sobre o banco de dados.
Banco de Dados
46
Verificao do modelo
z
Dados temporais z Dados que mudam ao longo do tempo e para as quais o BD mantm histrico Tipos de dados temporais: z Atributos cujos valores modificam ao longo do tempo z Relacionamentos que modificam ao longo do tempo
Banco de Dados
47
Verificao do modelo
z
Consultas a dados referentes ao passado z Muitas vezes, informaes referentes ao passado so eliminadas da base de dados (arquivamento) z Podem ser necessrias no futuro:
Dados referentes ao passado planejar arquivamento z Soluo que poderia ser considerada
Reincluir as informaes no banco de dados, quando elas forem necessrias Problema: restries de integridade referencial Quando informaes antigas so necessrias apenas para tomada de decises Pode ser conveniente manter no banco de dados informaes 48 compiladas e eliminar as informaes usadas na compilao
Verificao do modelo
z
Caso raro, mas no incorreto Entidade que muitas vezes aparece isolada Caso tpico: z Entidade que modela a organizao na qual o sistema implementado pelo BD est embutida Exemplo: BD de uma universidade z A entidade UNIVERSIDADE pode ser necessria, caso se deseje manter no BD alguns atributos da universidade z O modelo no deveria conter o relacionamento desta entidade com outras, como ALUNO ou CURSO
BD modela uma nica universidade No necessrio informar no BD em que universidade o aluno est inscrito ou a qual universidade o curso pertence
Prof. Rossana Junqueira 49
Banco de Dados
Estabelecimento de padres
z
Pessoas da organizao (usurios, analistas, programadores, ...) Programas (ferramentas CASE, geradores de cdigo, ...)
z z
necessrio estabelecer padres de confeco de modelos Na prtica e na literatura aparecem muitas verses, que distinguem-se umas das outras no s na representao grfica, isto em sua sintaxe, mas tambm na semntica Variantes de abordagem ER
z z z z
Banco de Dados
Estratgias de modelagem
z
Uma seqncia de passos (uma receita de bolo) de transformao de modelos desde o modelo inicial de modelagem at o final Diferentes estratgias:
z z
Bottom-up Parti de conceitos mais detalhados e abstrai gradativamente. Inicia com a identificao de atributos Top-down Parti de conceitos mais abstratos e vai gradativamente refinando estes conceitos em conceitos mais detalhados. Inicia com a identificao de entidades genricas Inside-out De dentro pra fora. Parti de conceitos considerados importantes e vai gradativamente adicionando conceitos perifricos a eles relacionados
Banco de Dados
51
Na prtica
z
Nenhuma das estratgias propostas na literatura universalmente aceita Combinao das diversas estratgias de modelagem Processo de modelagem um processo de aprendizagem
Normal
z
Compreensvel
z
Banco de Dados
52
Banco de Dados
53
Abordagem Relacional
z
Abordagem de modelagem de dados usada nos sistemas de gerncia de banco de dados do tipo relacional; Composio de um banco de dados relacional:
z
Tabelas
z
Terminologias:
Acadmica
Relao Tupla Atributo Valor de atributo
54
Banco de Dados
Abordagem Relacional
Banco de Dados
55
Abordagem Relacional
z
Atmicos o campo no pode ser composto de outros Monovalorados o campo possui um nico valor
Programadores escrevem consultas sem considerar a existncia de caminhos de acesso Caminho de acesso:
estrutura auxiliar (ndice, cadeia de ponteiros,...) acelera a recuperao de registros por determinados critrios evita a leitura exaustiva de todos registros de um arquivo
Prof. Rossana Junqueira 56
Banco de Dados
Abordagem Relacional
z
Chave conceito usado para identificar e estabelecer relaes entre linhas de tabelas de um banco de dados relacional.
z
Trs tipos:
z z z
Chave Primria uma coluna ou uma combinao de colunas cujos valores distinguem uma linha das demais dentro de uma tabela.
Banco de Dados
57
Abordagem Relacional
z
Chave Estrangeira Uma coluna ou uma combinao de colunas, cujos valores aparecem necessariamente na chave primria de uma tabela
z
Banco de Dados
58
Abordagem Relacional
z
Restries que devem ser garantidas ao executar diversas operaes de alterao do banco de dados:
z
Quando da incluso de uma linha na tabela que contm a chave estrangeira: o valor da chave estrangeira deve aparecer na coluna da chave primria referenciada
Ex: Um novo empregado deve atuar em um departamento j existente no banco de dados.
Quando da alterao do valor da chave estrangeira: o novo valor de uma chave estrangeira deve aparecer na coluna da chave primria referenciada Quando da excluso de uma linha da tabela que contm a chave primria referenciada pela chave estrangeira: na coluna chave estrangeira no deve aparecer o valor da chave primria que est sendo excluda
Ex: Um departamento no pode ser excludo, caso nele ainda existirem empregados
Quando da alterao do valor da chave primria referenciada pela chave estrangeira: na coluna chave estrangeira, no aparea o antigo valor da chave primria que est sendo alterada
Ex: Caso um departamento possua empregados, seu cdigo no pode ser modificado
Abordagem Relacional
z z z
A palavra estrangeira pode levar a crer que a chave estrangeira sempre referencia uma chave primria de outra tabela. Esta restrio no existe. Um chave primria pode referenciar a chave primria da prpria tabela.
Banco de Dados
60
Abordagem Relacional
z
Chave Alternativa Mais de uma coluna ou combinaes de colunas podem servir para distinguir uma linha das demais
z
Uma das colunas (ou combinao de colunas) escolhida como chave primria As demais colunas ou combinaes so denominadas chaves alternativas
61
Abordagem Relacional
z
Domnio de coluna conjunto de valores que podem aparecer em uma coluna (atributo) Valor vazio:
z
Um valor de campo pode assumir o valor especial vazio (null em ingls) Colunas nas quais no so admitidos valores vazios so chamadas de colunas obrigatrias Colunas nas quais podem aparecer campos vazios so chamadas de colunas opcionais Abordagem relacional:
z
z
Banco de Dados
62
Abordagem Relacional
z
Restries de Integridade:
z
Dados refletem corretamente a realidade representada pelo bando de dados e que so consistentes entre si
Para garantir a integridade de um banco de dados, SGBD oferecem o mecanismo de restries de integridade Uma restrio de integridade uma regra de consistncia de dados que garantida pelo prprio SGBD So classificadas nas seguintes categorias:
z
Integridade de domnio o valor de um campo deve obedecer a definio de valores admitidos para a coluna Integridade de vazio especificado se os campos de uma coluna podem ou no ser vazios.
Banco de Dados
63
Abordagem Relacional
z z
Integridade de chave define que os valores da chave primria e alternativa devem ser nicos Integridade referencial define que os valores que aparecem em uma chave estrangeira devem aparecer na chave primria da tabela referenciada
z z
Restries acima so garantidas automaticamente por um SGBD relacional No exigido que o programador escreva procedimentos para garanti-las explicitamente Restries de integridade que no se encaixam nas categorias bsicas Exemplos de restries semnticas:
z
Banco de Dados
Abordagem Relacional
z
A especificao de um banco de dados relacional, ou seja um modelo de banco de dados relacional (chamada de esquema do banco de dados) deve conter no mnimo a definio do seguinte:
z z z
Tabelas que formam o banco de dados Colunas que as tabelas possuem Restries de integridade
Banco de Dados
65
Abordagem Relacional
z
Banco de Dados
66
Abordagem Relacional
z
Banco de Dados
67
Abordagem Relacional
z
Na instruo SQL, o programador no faz referncia a nenhum tipo de caminho de acesso. Quem decide que caminhos de acesso sero eventualmente usados quando da execuo da instruo o SGBD.
Banco de Dados
68
Banco de Dados
69
Banco de Dados
70
Objetivos bsicos:
z z z z
Boa performance; Simplificar o desenvolvimento; Ocupar pouco espao em disco; Evitar junes :
Operao para buscar dados de diversas linhas associadas pela igualdade de campos Exemplo: buscar os dados de um empregado e os dados de seu departamento (duas tabelas diferentes) SGBD relacional normalmente armazena os dados de uma linha contiguamente em disco Juno envolve diversos acessos a disco Prefervel: ter os dados necessrios a uma consulta em uma nica linha
Prof. Rossana Junqueira 71
Banco de Dados
Chave e ndice:
Implementao eficiente do controle de chaves: SGBD usa um ndice ndices tendem a ocupar espao considervel em disco Insero e remoo de entradas em um ndice Podem exigir diversos acesso a disco Usar implementaes com menos chaves Exemplo: Cliente (CodCliente,Nome,NomeContato,Endereo,Telefone) ou Cliente (CodCliente,Nome,NomeContato) ClienteEnder (CodCliente,Endereo,Telefone) CodCliente referencia Cliente
Banco de Dados
72
Campos Opcionais:
Campo opcional = campo que podem assumir o valor VAZIO (NULL em SQL). SGBD relacional no desperdia espao pelo fato de campos de uma linha estarem vazios Campo opcional no tem influncia na performance Controle de campo opcional pode complicar programao Verificar quais campos podem estar vazios, quando isto depende do tipo de linha
Traduo inicial de entidades e respectivos atributos Traduo de relacionamentos e respectivos atributos Traduo de generalizaes/especializaes
Banco de Dados
73
Cada entidade traduzida para uma tabela. Cada atributo da entidade define uma coluna desta tabela. Atributos identificadores da entidade correspondem a chave primria da tabela. Traduo inicial Regras que seguem, as tabelas definidas nessa etapa ainda podero ser fundidas. Ex:
Data admisso Data nascimento
Pessoa
z z z
z
Banco de Dados
Referenciados freqentemente em programas e outras formas de texto em computador Para diminuir o trabalho de programadores manter os nomes de colunas curtos. SGBD relacional nome de uma coluna no pode conter brancos No transcrever os nomes de atributos para nomes de colunas Nomes de atributos compostos de diversas palavras devem ser abreviados Nomes de colunas no necessitam conter o nome da tabela Prefervel usar o nome de coluna Nome a usar os nomes de coluna NomePess ou NomePessoa SQL j exige muitas vezes formar - Pessoa.Nome Chave primria pode aparecer em outras tabelas na forma de chave estrangeira Recomendvel nomes das colunas que compem a chave primria sufixados ou prefixados com o nome ou sigla da tabela na qual aparecem como chave primria Exemplo: CodigoPess
Prof. Rossana Junqueira 75
Implementao de relacionamento
z
Alternativas:
Tabela prpria z Adio de colunas a uma das tabelas z Fuso de tabelas Alternativa depende da cardinalidade (mxima e mnima do relacionamento)
z
Tabela prpria
n
Engenheiro
nome cdigo
Atuao
funo
Projeto
ttulo cdigo
Engenheiro (CodEng, Nome) Projeto (CodProj, Ttulo) Atuao (CodEng, CodProj, Funo) CodEng referencia Engenheiro CodProj referencia Projeto
Banco de Dados
76
Adio de colunas
1
Departamento
nome cdigo
z
Lotao
data lotao
Empregado
nome cdigo
Departamento (CodDept, Nome) Empregado (CodEmp, Nome, CodDept, DataLota) CodDept referencia Departamento
Fuso de tabelas
1
Organizao
Conferncia
nome cdigo
Comisso
ender
Data instalao
Banco de Dados
77
Banco de Dados
78
(0,1)
Casamento
regime data
(0,1)
Mulher
ttulo
identidade
identidade
Adio de colunas: Tabela prpria: Mulher (IdentM, Nome, IdentH, Data, Regime)Mulher (IdentM, Nome) IdentH referencia Homem Homem (IdentH, Nome) Homem (IdentH, Nome) Casamento (IdentM, IdentH, Data, Regime) IdentM referencia Mulher IdentH referencia Homem Fuso de Tabelas: (NO USAR) Casamento (IdentM, IdentH, NomeM, NomeH, Data, Regime)
Banco de Dados Prof. Rossana Junqueira 79
Soluo por fuso de tabelas invivel Chave primria artificial Soluo por adio de colunas: melhor opo
z
z z
Banco de Dados
80
Correntista
nome cdigo
Carto Magntico
Data expedio cdigo
Tabela prpria: (NO USAR) Correntista (CodCorrent, Nome) Carto (CodCarto, DataExp) CartoCorrentista (CodCarto, CodCorrent) CodCorrent referencia Correntista Fuso de Tabelas: Correntista (CodCorrent, Nome, CodCarto, DataExp) CodCarto referencia Carto
Banco de Dados Prof. Rossana Junqueira 81
Adio de colunas: Correntista (CodCorrent, Nome) Carto (CodCarto, DataExp, CodCorrent) CodCorrent referencia Correntista
Soluo por tabela prpria pior que a soluo por adio de colunas
z
z z z
z z
aceitvel
Banco de Dados
82
Conferncia
nome cdigo
(1,1)
Comisso
ender
Data instalao
z z
Banco de Dados
Entidades que participam do relacionamento seriam representadas atravs de duas tabelas distintas Estas tabelas teriam a mesma chave primria e relao um-para-um entre suas linhas Maior nmero de junes Maior nmero de chaves primrias
Prof. Rossana Junqueira 83
Implementao de relacionamentos 1: n
Banco de Dados
84
(1,1)
Lotao
(0,n)
Empregado
nome
Adio de Colunas: Departamento (CodDept, Nome) Empregado (CodEmp, Nome, CodDept, DataLota) CodDept referencia Departamento Tabela prpria: Departamento (CodDept, Nome) Empregado (CodEmp, Nome) Lotao (CodEmp, CodDept, DataLota) CodDept referencia Departamento CodEmp referencia Empregado Banco de Dados
85
Fuso de tabelas
z z
redundncia de dados de departamento, ou tabela aninhada Menor nmero de chaves Menor nmero de junes No h o problema de campos opcionais
Banco de Dados
86
(0,1)
Financiam
(0,n)
Venda
data id
Adio de Colunas: z Financeira (CodFin, Nome) Venda (IdVend, Data, CodFin, NoParc, TxJuros) CodFin referencia Financeira Tabela prpria: Financeira (CodFin, Nome) Venda (IdVend, Data) Financiam (IdVend, CodFin, NoParc, TxJuros) IdVend referencia Venda CodFin referencia Financeira Banco de Dados
Implementao de relacionamentos n : n
Banco de Dados
88
n:n
Engenheiro
nome cdigo
(0,n)
Atuao
funo
(0,n)
Projeto
ttulo
cdigo
Tabela prpria: Engenheiro (CodEng, Nome) Projeto (CodProj, Ttulo) Atuao (CodEng, CodProj, Funo) CodEng referencia Engenheiro CodProj referencia Projeto
Banco de Dados
89
Produto (CodProd, Nome) Cidade (CodCid, Nome) Distribuidor (CodDistr, Nome) Distribuio (CodProd, CodDistr, DataInicio) CodProd referencia Produto CodDistr referencia Distribuidor CodCid referencia Cidade
CodCid,
Banco de Dados
90
Outra
alternativa
(extica):
Banco de Dados
91
Todas as tabelas referentes s especializaes so fundidas em uma nica tabela Tabela contm:
Banco de Dados
Chave primria correspondente ao identificador da entidade mais genrica Caso no exista, adicionar uma coluna Tipo Uma coluna para cada atributo da entidade genrica Colunas referentes aos relacionamentos dos quais participa a entidade genrica e que sejam implementados atravs da alternativa de adicionar colunas tabela da entidade genrica Uma coluna para cada atributo de cada entidade especializada (opcional) Colunas referentes aos relacionamentos dos quais participa cada entidade especializada e que sejam implementados atravs da alternativa de adicionar colunas tabela da entidade (campo opcional)
92
Emp (CdigoEmp, Tipo, Nome, CIC, CodigoDept, CartHabil, CREA, CdigoRamo) CdigoDept referencia Depto CdigoRamo referencia Ramo Depto (CdigoDept, Nome) Ramo (CdigoRamo, Nome) ProcessTexto (CdigoProc, Nome) Domnio (CdigoEmp, CdigoProc) CdigoEmp referencia Emp CdigoProc referencia ProcessTexto Projeto (CdigoProj, Nome) Participao (CdigoEmp, CodigoProj) CdigoEmp referencia Emp CdigoProj referencia Projeto Banco de Dados
93
Implementao de generalizao/especializa o
z
Criar uma tabela para cada entidade que compe a hierarquia Incluir a chave primria da tabela correspondente entidade genrica, em cada tabela correspondente a uma entidade especializada
Banco de Dados
Emp (CdigoEmp, Tipo, Nome, CIC, CdigoDept) CdigoDept referencia Depto Motorista (CdigoEmp, CartHabil) CdigoEmp referencia Emp Engenheiro (CdigoEmp, CREA, CdigoRamo) CdigoEmp referencia Emp CdigoRamo referencia Ramo Depto (CdigoDept, Nome) Ramo (CdigoRamo, Nome) ProcessTexto (CdigoProc, Nome) Domnio (CdigoEmp, CdigoProc) CdigoEmp referencia Emp Cdigo Proc referencia ProcessTexto Projeto (CdigoProj, Nome) Participao (CdigoEmp, CdigoProj) 94 CdigoEmp referencia Engenheiro CdigoProj referencia Projeto
z z
Dados referentes entidade genrica + dados referentes s especializaes em uma nica linha Minimiza junes Menor nmero de chaves
Colunas opcionais apenas aquelas referentes a atributos que podem ser vazios do ponto de vista da aplicao
Banco de Dados
95
Projeto (engenharia) em geral compromisso entre o ideal e o realizvel dentro das restries de recursos impostas pelas prtica Projeto de banco de dados compromisso entre o ideal (regras de implementao) e o alcanvel frente a limitaes de performance Algumas vezes esquema de BD criado atravs do uso das regras acima no atende requisitos de performance impostos ao sistema Necessrio buscar alternativa que resulte em melhor performance do sistema Alternativas somente devem ser tentadas em ltimo caso - do ponto de vista da programao so sempre piores Exemplos: Relacionamentos mutuamente exclusivos e Simulao de atributos multivalorados
Prof. Rossana Junqueira 96
Banco de Dados
Implementao pelas regras colunas CIC e CGC em Venda so especificadas como opcionais
PessFis (CIC, Nome) PessJur (CGC, RazSoc) Venda (No, data, CIC, CGC) CIC referencia PessFis CGC referencia PessJur
z
Banco de Dados
Implementao alternativa - criar uma nica coluna na qual aparece o CIC ou o CGC do comprador
PessFis (CIC, Nome) PessJur (CGC, RazSoc) Venda (No, data, CIC/CGC, TipoCompr)
z
Desvantagem:
No possvel especificar ao SGBD que o campo CIC/CGC chave estrangeira No referencia uma nica tabela
Banco de Dados
98
Tratamento multivalorados:
de
atributos
Condies de contorno:
Raros clientes possuem mais que dois telefones. Quando isso ocorrer: suficiente armazenarmos apenas dois nmeros No h consultas ao banco de dados usando o nmero de telefone como critrio de seleo Nmeros de telefone so apenas exibidos ou impressos juntos s demais informaes de cliente
Prof. Rossana Junqueira 99
Banco de Dados
Implementao desnormalizada
Cliente (CodCli,Nome,NumTel1,NumTel2)
z
Simular uma coluna multi-valorada atravs da criao de diversas colunas NumTel sufixadas por um nmero Permite que os telefones de um cliente sejam obtidos mais rapidamente Implica em menos espao ocupado no necessria chave primria da tabela Telefone Inconveniente
z
Banco de Dados
Consulta usando o nmero de telefone como critrio de busca torna-se mais complicada Manter os telefones "alinhados esquerda" exige rotina complexa
Prof. Rossana Junqueira 100
Identificao da construo ER correspondente a cada tabela Definio de relacionamentos 1:n e 1:1 Definio de atributos Definio de identificadores de entidades e relacionamentos
Banco de Dados
101
Ex:
Disciplina (CodDisc, NomeDisc) Curso (CodCr, NomeCr) Curric (CodCr, CodDisc, Obr/Opc) CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr, CodSl, Capacidade) CodPr referencia Prdio Prdio (CodPr, Endereo) Turma (Anosem, CodDisc, SiglaTur, Capacidade, CodPr, CodSl) CodDisc referencia Disciplina (CodPr, CodSl) referencia Sala Laboratrio ( CodPr, CodSl, Equipam) (CodPr, CodSl) referencia Sala
Banco de Dados
102
uma entidade um relacionamento n:n uma entidade especializada composio de sua chave primria
Fator determinante
z
Banco de Dados
103
Ex:
Disciplina (CodDisc, NomeDisc) entidade Curso (CodCr, NomeCr) entidade Curric (CodCr, CodDisc, Obr/Opc) relacionamento n:n CodCr referencia Curso CodDisc referencia Disciplina Sala (CodPr, CodSl, Capacidade) entidade CodPr referencia Prdio Prdio (CodPr, Endereo) entidade Turma (Anosem, CodDisc, SiglaTur, Capacidade, CodPr, CodSl) entidade CodDisc referencia Disciplina (CodPr, CodSl) referencia Sala Laboratrio ( CodPr, CodSl, Equipam) especializao (CodPr, CodSl) referencia Sala
Banco de Dados
104
Sala
Currculo
n
z z
Chave estrangeira que no se enquadra nas regras acima representa relacionamento 1:n ou relacionamento 1:1 Esquema no informa se 1:1 ou 1:n Chave estrangeira parte de uma chave primria trata-se de um relacionamento 1:n Nos demais casos, para definir a cardinalidade, necessrio verificar os possveis contedos do banco de dados
Banco de Dados
106
Currculo
Disciplina
n
Currculo
1
Currculo
n
Sala
n
Curso
Currculo
1
Banco de Dados
Prdio
Laboratrio
107
Definio de atributos:
z
Cada coluna no chave estrangeira um atributo na entidade/relacionamento correspondente tabela As colunas chave estrangeira no correspondem a atributos correspondem a relacionamentos
Coluna da chave primria que no chave estrangeira corresponde a um atributo identificador da entidade ou relacionamento. Coluna da chave primria que chave estrangeira corresponde a um relacionamento identificador da entidade
108
Captulo 6: Normalizao
Banco de Dados
109
Normalizao
z
z z
Sistemas de informao hoje usados no utilizam bancos de dados relacionais Sistemas legados (dados armazenados em arquivos de linguagens de 3 gerao). Raramente documentados. Necessidade de modelo ER:
z z z
Banco de Dados
110
Normalizao
Banco de Dados
111
Normalizao
z
Objetivo:
z z
Reagrupar informaes para eliminar redundncias de dados Reagrupar informaes para eliminar estruturas inexistentes no modelo ER (atributos multivalorados)
Passos:
Banco de Dados
112
Normalizao
z
Documento exemplo:
Tipo: Novo desenvolvimento Categoria Funcional A1 A2 B1 A2 A1 4 4 9 4 4 Tipo: Manuteno Categoria Funcional A1 A2 B1 Salrio 4 4 9 Data incio no projeto 01/05/93 04/01/91 01/11/92 Tempo alocado ao projeto 12 24 12
113
Cdigo do Projeto: LSC001 Descrio: Sistema de Estoque Cdigo do Empregado 2146 3145 6126 1214 8191 Nome
Salrio
Cdigo do Projeto: PAG02 Descrio: Sistema de RH Cdigo do Empregado 8191 4112 6126 Nome Mrio Joo Jos
Normalizao
z
z z
possui uma ou mais tabelas aninhadas tabela aninhada ( ou grupo repetido ou coluna multivalorada ou coluna no atmica) - coluna que ao invs de conter valores atmicos, contm tabelas aninhadas Abreviatura: N Exemplo:
Banco de Dados
114
Normalizao
z
Forma Normal:
z
Regra que uma tabela deve obedecer para ser considerada bem projetada H diversas formas normais, cada vez mais rgidas, para verificar tabelas relacionais Aqui tratadas:
z z z
primeira forma normal (1FN) segunda forma normal (2FN) terceira forma normal (3FN)
Banco de Dados
115
Normalizao
z
Alternativas:
z
Banco de Dados
Uma tabela na qual os dados das linhas externas tabela aninhada so repetidos para cada linha da tabela aninhada Exemplo: ProjEmp (CodProj, Tipo, Descr, CodEmp, Nome, Cat, Sal, DataIni, TempAl) Dados do projeto aparecem repetidos para cada empregado do projeto
Prof. Rossana Junqueira 116
Normalizao
z
Cria-se uma tabela referente a prpria tabela que est sendo normalizada e uma tabela para cada tabela aninhada Exemplo: Proj (CodProj, Tipo, Descr) ProjEmp (CodProj,CodEmp, Nome, Cat, Sal, DataIni, TempAl)
z z
Primeira alternativa (tabela nica) mais correta Decompor uma tabela em vrias tabelas (segunda alternativa) podem ser perdidas relaes entre informaes Para fins prticos preferimos a segunda alternativa (decomposio de tabelas) Quando houver diversas tabelas aninhadas, eventualmente com diversos nveis de aninhamento, fica difcil visualizar a tabela na 1FN na alternativa de tabela nica
Prof. Rossana Junqueira 117
Banco de Dados
Normalizao
z
Passo 1:
z z
Criar uma tabela na 1FN referente a tabela no normalizada A chave primria da tabela na 1FN idntica a chave da tabela N
Banco de Dados
118
Normalizao
z
Passo 2:
z
Para cada tabela aninhada criar uma tabela na 1FN composta pelas seguintes colunas:
a chave primria de cada uma das tabelas na qual a tabela em questo est aninhada as colunas da prpria tabela aninhada
Banco de Dados
119
Normalizao
z
Passo 3:
z
Definir as chaves primrias das tabelas na 1FN que correspondem a tabelas aninhadas.
Banco de Dados
120
Normalizao
Banco de Dados
121
Normalizao
z
Exemplo na 1FN:
Tipo Novo Desenvol. Manuteno Descr Sistema Sistema de RH
Proj CodProj LSC001 PAG02 ProjEmp CodProj LSC001 LSC001 LSC001 LSC001 LSC001 PAG02 PAG02 PAG02 CodEmp 2146 3145 6126 1214 8191 8191 4112 6126 Nome Joo Slvio Jos Carlos Mrio Mrio Joo Jos Cat A1 A2 B1 A2 A1 A1 A2 B1 4 4 9 4 4 4 4 9 Sal DataIni 01/11/91 02/10/91 03/10/92 04/10/92 01/11/92 01/05/93 04/01/91 01/11/92 24 24 18 18 12 12 24 12 TempAl
Normalizao
z
Dependncia Funcional:
z
Para entender 2FN e 3FN necessrio compreender o conceito de dependncia funcional. Em uma tabela relacional, diz-se que uma coluna C2 depende funcionalmente de uma coluna C1 (ou que a coluna C1 determina a coluna C2) quando, em todas linhas da tabela, para cada valor de C1 que aparece na tabela, aparece o mesmo valor de C2.
Banco de Dados
123
Normalizao
z
ProjEmp
Cat A1 A2 B1 A2 A1 A1 A2 B1 4 4 9 4 4 4 4 9
Sal
TempAl 24 24 18 18 12 12 24 12
124
Normalizao
z
Dependncias parciais
Dependncias no parciais
125
Normalizao
z
Tabela 1FN e que possui apenas uma coluna como chave primria no contm dependncias parciais impossvel uma coluna depender de uma parte da chave primria, quando a chave primria no composta por partes Concluso Toda tabela 1FN que possui apenas uma coluna como chave primria j est na 2FN
126
Normalizao
z
Tabela que contenha apenas colunas chave primria Impossvel atributo no chave depender de parte da chave (tabela no tem colunas no chave) Tabela sem colunas no chave j est na 2FN
127
Normalizao
z
128
Normalizao
z
Banco de Dados
129
Normalizao
z
Trata de um outro tipo de redundncia Exemplo: Emp (CodEmp, Nome, Cat, Sal) Considerar: salrio (coluna Sal) determinado pela categoria funcional (coluna Cat) Salrio que pago a uma categoria funcional armazenado tantas vezes quantos empregados possui a categoria funcional
130
Normalizao
z
Trata de um outro tipo de redundncia Exemplo: Emp (CodEmp, Nome, Cat, Sal) Considerar: salrio (coluna Sal) determinado pela categoria funcional (coluna Cat) Salrio que pago a uma categoria funcional armazenado tantas vezes quantos empregados possui a categoria funcional
131
Normalizao
z
Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat) Cat (Cat, Sal)
Banco de Dados
132
Normalizao
z
Normalizao do exemplo:
N Proj (CodProj,Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl)) z 1FN Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) z 2FN Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat, Sal) z 3FN Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat) Cat (Cat, Sal)
z
Banco de Dados
133
Normalizao
z
Tabelas na 3FN:
Banco de Dados
134
Normalizao
z
Problemas de normalizao:
z
Arquivos convencionais:
o conceito de chave primria no obrigatrio possvel encontrar arquivos que no possuem chave primria
Quando um arquivo convencional no possui chave primria ou quando a chave primria nele usada difere da usual na organizao:
deve-se proceder como se a chave primria aparecesse no arquivo deve-se inseri-la na forma N
Arquivo com dados sobre empregados de uma organizao enviado para fins de fiscalizao a um rgo governamental Identificador de empregado usado na organizao omitido, j que este irrelevante para o rgo fiscalizador Outra situao: uso de uma chave alternativa, ao invs da chave primria usual do arquivo No caso mencionado acima: Se o rgo governamental fosse a receita federal, arquivo poderia ter como chave primria o CIC do empregado, ao invs da chave primria normalmente usada na organizao.
Normalizao
z
Problemas de normalizao:
z
Atributos relevantes implicitamente representados z Arquivos convencionais podem conter atributos de forma implcita
z
arquivo contm registros referentes a cursos em um concurso vestibular para cada curso, h um grupo repetido aninhado, com as informaes dos candidatos ao curso em questo informaes dos candidatos ordenadas por classificao no concurso
Banco de Dados
136
Normalizao
z
Problemas de normalizao:
z
Banco de Dados
137
Captulo 7: SQL
Banco de Dados
138
Conjunto de objetos que armazenam e manipulam dados. Como nomear arquivos e objetos: z Regras para nomeao dos objetos:
z z z z
Caracteres A...Z, a...z, 0...9, $ e _ Nomes devem comear com A...Z ou a...z. Nomes limitados a 31 caracteres. Nomes dos objetos devem ser nicos.
Banco de Dados
139
Criao de Tabelas
z
Regras que governam os relacionamentos e validam entradas de dados. Atuam em todas as transaes que acessam o banco de dados e so automaticamente mantidas pelo sistema. Restrio UNIQUE e PRIMARY KEY:
z z
Asseguram que os valores inseridos em uma ou mais colunas so nicos para cada linha da tabela. Uma ou mais colunas definidas com essas restries devem tambm ser definidas com o atributo NOT NULL. Chave estrangeira uma ou mais colunas em uma tabela que corresponde exatamente a uma ou mais colunas definida(s) como chave primria em outra tabela. Estabelece uma condio que deve ser verdadeira durante uma entrada ou atualizao de dados na tabela.
Restrio CHECK:
z
Alm dessas restries, uma coluna pode ser definida com o atributo NOT NULL. Esse atributo no permite valores nulos na coluna onde definida e obrigatrio em colunas com restries PRIMARY KEY ou UNIQUE.
Criao de Tabelas
z
CREATE TABLE cria uma nova tabela, suas colunas e restries de integridade em um banco de dados.
z
Tabela Fabrica
CREATE TABLE FABRICA ( ID_FABRICA INTEGER NOT NULL, NOME VARCHAR(40) NOT NULL, ENDERECO VARCHAR(40), CIDADE VARCHAR(30), UF CHAR(2), TELEFONE VARCHAR(20), CONSTRAINT PK_FABRICA PRIMARY KEY (ID_FABRICA));
Banco de Dados
141
Criao de Tabelas
z
Tabela Produto
CREATE TABLE Produto (Id_Produto INTEGER NOT NULL, Referencia VARCHAR(15), Descricao VARCHAR(40) NOT NULL, Unidade CHAR(2) DEFAULT 'UN' NOT NULL, Id_Fabrica INTEGER NOT NULL, Id_ProdutoC INTEGER NOT NULL, CONSTRAINT PK_PRODUTO PRIMARY KEY (ID_PRODUTO), CONSTRAINT FK_PRODUTO_FABRICA FOREIGN KEY (ID_FABRICA) REFERENCES Fabrica (Id_Fabrica), CONSTRAINT FK_PRODUTO_PRODUTO FOREIGN KEY (ID_PRODUTOC) REFERENCES Produto (Id_Produto));
Banco de Dados
142
Alterao de Tabelas
z
ALTER TABLE modifica uma tabela adicionando, modificando ou eliminando colunas ou restries. Para alterar uma tabela, deve-se observar o seguinte:
z
Uma tabela pode ser alterada por seu criador ou qualquer usurio com direitos de superusurio do sistema operacional. ALTER TABLE provoca erro se os novos dados em uma tabela violam as definies de restrio PRIMARY KEY ou UNIQUE. Eliminar uma coluna provoca falha se:
z
z z z
Banco de Dados
A coluna parte de uma restrio UNIQUE, PRIMARY KEY ou FOREING KEY. A coluna usada em uma restrio CHECK. A coluna utilizada em uma expresso value de uma coluna calculada. A coluna referenciada por outros objetos, tais como uma viso.
Prof. Rossana Junqueira 143
Alterao de Tabelas
z
Banco de Dados
Alterao de Tabelas
z
ALTER TABLE Fabrica ALTER Email TYPE VARCHAR(40); Obs: Tamanhos de tipos no podem ser reduzidos e o novo tipo de dado deve ser capaz de manter os dados originais.
Banco de Dados
145
Excluso de Tabelas
z z
A instruo DROP TABLE remove dados de tabela. No se pode eliminar uma tabela que referenciada em uma coluna calculada, uma viso, restrio de chave estrangeira ou procedimento armazenado. DROP TABLE [nome da tabela]
Banco de Dados
146
Povoamento de Tabelas
z z
z z
INSERT armazena uma ou mais linhas de dados em uma tabela. Os valores inseridos devem estar na mesma ordem das colunas da tabela. Se o nmero de colunas informadas no comando for menor que o nmero de colunas da tabela, valores padres ou NULL so armazenados nas colunas no informadas. Para inserir uma nica linha de dados na tabela, deve-se especificar uma lista de valores na clusula VALUES. Inseres de dados nas tabelas no podem violar as restries. importante inserir dados primeiramente nas tabelas referenciadas por chaves estrangeiras.
Banco de Dados
147
Povoamento de Tabelas
z
Exemplos:
z
INSERT INTO Vendedor VALUES (1, Joo Dias); A instruo seguinte insere uma linha na mesma tabela, mas informa explicitamente as colunas para as quais sero informados:
z
INSERT INTO Cliente VALUES (1, Francisco de Assis, Av. Principal, 500, Santarm, PA, 3522-0101, Francisco);
Banco de Dados
148
Povoamento de Tabelas
z
INSERT INTO Transportadora VALUES (1, Transpedroso, Av. Getlio Vargas, 500, So Paulo, SP); INSERT INTO Pedido VALUES (1, 06/15/2005, 500, 1, 1, 1);
z
INSERT INTO Produto VALUES (1, null, 'Microcomputador', 'UN', null, 1);
z
As colunas Referencia e Id_ProdutoC da tabela Produto permitem valores nulos e esta uma maneira de inserir nulos. A outra a maneira como foi inserida a linha na tabela Fabrica. Omitiramse as colunas que recebero valores nulos.
Alterao de dados
z
A instruo UPDATE modifica os dados em toda ou parte de uma linha de uma tabela. Em caso de atualizaes seletivas, a clusula opcional WHERE pode ser usada para restringir as atualizaes a um subconjunto de linhas na tabela. Se a clusula WHERE no for utilizada, todas as linhas da tabela sero atualizadas. O seguinte comando modifica as linhas da tabela. Esse comando calcula um novo preo para todos os produtos, reajustando-os em 5%:
z
Banco de Dados
150
Alterao de dados
z
O comando a seguir modifica apenas uma linha da tabela. Modifica a descrio do produto que tem chave primria igual a 2:
z
WHERE Id_Produto = 2;
z
Quando for necessrio alterar os dados de uma nica linha aconselhvel selecion-la pela chave primria. Este a garantia de que a atualizao ocorrer em uma nica linha, no mximo.
O comando acima modifica dados de duas colunas dos pedidos efetuados em 15/06/2005.
Banco de Dados
151
Excluso de linhas
z z z
z z z z z
O comando DELETE elimina linhas de uma tabela. Especifica uma ou mais linhas a serem eliminadas de uma tabela. No caso de delees seletivas, a clusula WHERE deve ser utilizada para restringir as excluses a um subconjunto de linhas de uma tabela. Se a clusula WHERE no for especificada, todas as linhas da tabela so eliminadas. O comando a seguir deleta todas as linhas da tabela:
z
A excluso de linhas de uma tabela no pode violar as restries de chave estrangeira. Se no, devem ser excludas inicialmente as linhas da tabela filha (a tabela que tem a chave estrangeira). O comando seguinte elimina linhas especficas de uma tabela:
z
Banco de Dados
Uma das funes mais importantes de um SGBD permitir que os dados armazenados em um banco de dados sejam recuperados das formas mais diversas que se possa imaginar. O comando SELECT o comando SQL utilizado para recuperar informaes de bancos de dados. Operadores:
z
A clusula WHERE utiliza expresses que limitam as linhas da tabela a serem recuperadas. Dessas expresses fazem parte os operadores que podem ser classificados em quatro categorias:
z
153
Aritmticos:
+ * / Adio Subtrao Multiplicao Diviso
De comparao:
< Menor que > Maior que <= Menor ou igual a >= Maior ou igual a = Igual <> Diferente BETWEEN Entre IN Em IS LIKE Igual a
Lgicos:
AND OR NOT E Ou No
De concatenao:
|| Concatenao de strings
Prof. Rossana Junqueira 154
Banco de Dados
Consultas simples:
z
Esse comando recupera todas as linhas e colunas da tabela CLIENTE. O asterisco (*) indica que todas as colunas so mostradas.
possvel tambm, nas consultas, que os nomes originais das colunas sejam modificados.
z
z
Banco de Dados
SELECT ID_FABRICA AS ID, RAZAOSOCIAL AS "RAZO SOCIAL FROM FABRICA; A clusula AS permite que as colunas recebam um apelido.
Prof. Rossana Junqueira 155
A clusula AS permite que as colunas recebam um apelido. Se o apelido possuir espaos deve-se defini-lo entre aspas. A clusula AS opcional. O comando no formato a seguir produz o mesmo resultado:
SELECT ID_PRODUTO, ID_CONDICAO, PRECO * 1.05 FROM PRODUTOCOND; Esta consulta mostra os preos dos produtos com seus valores reajustados em 5%. No resultado da consulta, essa coluna no estar identificada. Assim, fortemente aconselhvel utilizar sempre os apelidos.
Banco de Dados
156
SELECT NOME, ENDERECO, CIDADE || '-' || UF "CIDADE-ESTADO" FROM CLIENTE; A terceira coluna da consulta resultante da concatenao de trs strings: as colunas da tabela, CIDADE e UF, e o literal hfen (-). Foi atribudo um apelido coluna resultante do clculo.
A clusula DISTINCT utilizada para suprimir linhas duplicadas do resultado de uma coluna.
z z z
SELECT CIDADE FROM CLIENTE; O comando acima poderia retornar linhas duplicadas. Para eliminar as duplicaes utiliza-se DISTINCT:
Banco de Dados
O uso de WHERE juntamente com as expresses envolvendo os operadores ir permitir que seja obtido o resultado de uma consulta seletiva, onde apenas as linhas que atendem s restries estabelecidas so mostradas. Com operadores de Comparao:
z
Retornam da tabela CLIENTE as linhas que atendem a condio de que a coluna UF seja igual a PA.
SELECT ID_PEDIDO, VALOR, ID_CLIENTE FROM PEDIDO WHERE DATA > '06/15/2005';
Essa consulta mostra os pedidos cuja DATA seja maior que 15/06/2005.
Prof. Rossana Junqueira 158
Banco de Dados
O operador LIKE recupera da tabela os clientes que tm o nome iniciando com a letra A.
Essa consulta retorna todos os pedidos, tais que a coluna VALOR esteja no intervalo entre 200 e 700 reais. Se houver linhas cujos valores sejam iguais a 200 ou 700, elas sero retornadas.
SELECT ID_FABRICA, RAZAOSOCIAL FROM FABRICA WHERE UF IN ('PA', 'AM', 'AC', 'AP');
Essa consulta retorna as linhas onde a coluna UF seja igual a qualquer dos elementos relacionados entre parnteses.
Prof. Rossana Junqueira 159
Banco de Dados
SELECT * FROM PEDIDO WHERE VALOR NOT BETWEEN 200 AND 700;
Mostra os produtos que fazem parte da composio de outro produto, ou seja, aqueles em que a coluna ID_COMPOSTOC no nula.
Banco de Dados
160
SELECT * FROM PEDIDO WHERE VALOR > 200 AND VALOR < 700;
AND e OR so utilizados para criar condies complexas resultantes de duas ou mais condies que usam operadores de comparao.
Como padro, uma consulta recupera linhas na mesma ordem em que ela as encontra na tabela. Para especificar uma ordem na qual as linhas devem ser retornadas por uma consulta, usa-se a clusula ORDER BY no fim do comando SELECT.
z
SELECT ID_FABRICA, RAZAOSOCIAL, CIDADE FROM FABRICA ORDER BY CIDADE; SELECT ID_FABRICA, RAZAOSOCIAL, CIDADE FROM FABRICA ORDER BY CIDADE DESC, RAZAOSOCIAL;
Prof. Rossana Junqueira 161
Banco de Dados
Uso de funes:
z
AVG
z
COUNT
z
Calcula o nmero de linhas que satisfazem uma condio de seleo de uma consulta.
MAX
z
MIN
z
Banco de Dados
Habilita uma consulta retornar um resumo sobre grupos de linhas que compartilham valores de coluna. SELECT ID_CLIENTE, AVG(VALOR) FROM PEDIDO GROUP BY ID_CLIENTE;
z z
O exemplo retorna o valor mdio dos pedidos de cada cliente. A clusula GROUP BY garante que o valor mdio dos pedidos seja calculado e recuperado com base no identificados de cada cliente.
Banco de Dados
163
Devido ao Firebird se tratar de um banco de dados relacional, s vezes pode ser necessrio construir consultas a dados que esto em tabelas diferentes. A recuperao de dados de duas ou mais tabelas usando um nico comando SELECT denominada juno (join). select a.ID_PEDIDO, a.DATA, a.VALOR, b.NOME from PEDIDO a, CLIENTE b where a.ID_CLIENTE = b.ID_CLIENTE and a.DATA >= '06/25/2006';
z z
Observa-se neste exemplo o uso do alias de uma tabela. Um alias, ou apelido, uma varivel temporria que representa o nome da tabela.
Prof. Rossana Junqueira 164
Banco de Dados