You are on page 1of 164

Disciplina: Banco de Dados

Cincia da Computao - 4 Perodo


Profa. Rossana de Paula Junqueira Almeida

Banco de Dados

Prof. Rossana Junqueira

Captulo 1: Conceitos Bsicos

Banco de Dados

Prof. Rossana Junqueira

Como Informtica adotada em organizaes


z z

Informtica implementada gradativamente; Exemplo: uma empresa


z

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.

Onde ficam os dados dos produtos?


z z

Banco de Dados

Prof. Rossana Junqueira

Sistemas isolados Dados no compartilhados

z z

Problema: redundncia de dados Tipos de redundncia da dados:


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

Prof. Rossana Junqueira

Sistemas isolados Dados no compartilhados


z

Redundncia no controlada de dados z O usurio gerencia a redundncia z Dever ser evitado z Problemas:
z

Entrada repetida da mesma informao Inconsistncia de dados

Como evitar: Compartilhamento dos dados Cada informao armazenada uma nica vez Usar o conceito de Banco de Dados

Banco de Dados

Prof. Rossana Junqueira

Banco de Dados
z

Conjunto de arquivos integrados que atendem a um conjunto de sistemas

O compartilhamento de dados tem reflexos na estrutura do software:


z 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

Sistema de gerncia de banco de dados


z

Incio da programao de aplicaes


z

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

Comunicao com processos remotos

Manuteno de grandes repositrios compartilhados de dados

Banco de Dados

Sistema de gerncia de banco de dados


z

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

Manuteno de programas torna-se mais simples Produtividade de programadores aumenta

Banco de Dados

Prof. Rossana Junqueira

Sistema de gerncia de banco de dados


z

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

Prof. Rossana Junqueira

Sistema de gerncia de banco de dados


z

Sistema de Banco de Dados:


z

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

Prof. Rossana Junqueira

10

Sistema de gerncia de banco de dados


z

Sistema de Banco de Dados:


z

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

Modelo de (banco) 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

Modelo de dados no informa:

Banco de Dados

Prof. Rossana Junqueira

12

Esquema de banco de dados


z

Para construir um modelo de dados usa-se:


z

Linguagem de modelagem de dados: z Textual z Grfica

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)

Tcnica mais difundida na modelagem conceitual


z

Modelo conceitual representado atravs de diagrama entidade-relacionamento (DER)

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

Contm detalhes de armazenamento interno de informaes Detalhes que:


z z

No tm influencia sobre a programao de aplicaes no SGBD Influenciam na performance das aplicaes

Usados por profissionais que fazem sintonia de performance em banco de dados, procurando otimizar o desempenho.

Banco de Dados

Prof. Rossana Junqueira

16

Modelo conceitual como modelo de organizao


z

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

Idia fundamental do projeto de banco de dados:


z

Banco de Dados

Modelo conceitual como modelo de organizao


z

Modelo conceitual tem dupla interpretao:


z

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

Projeto de banco de dados


z

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

Prof. Rossana Junqueira

19

Captulo 2: Abordagem entidade relacionamento

Banco de Dados

Prof. Rossana Junqueira

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

modelo entidade-relacionamento (modelo ER) diagrama entidade-relacionamento (DER)


Prof. Rossana Junqueira 21

Modelo ER representado graficamente


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

Representada atravs de um retngulo Retngulo contem o nome da entidade


Pessoa
Departamento

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

Relacionamento entre entidades diferentes no necessrio indicar os papis das entidades

25

Cardinalidade de relacionamentos
z

Propriedade importante de um relacionamento


z

Quantas ocorrncias de uma entidade podem estar associadas a uma determinada ocorrncia de entidade atravs do relacionamento

Chamada de cardinalidade relacionamento Cardinalidade mxima:

de

uma

entidade

em

um

Banco de Dados

Prof. Rossana Junqueira

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

Prof. Rossana Junqueira

28

Exemplos de entidades e relacionamentos

Banco de Dados

Prof. Rossana Junqueira

29

Atributo
z

Dado ou informao que associado a cada ocorrncia de uma entidade ou de um relacionamento

Banco de Dados

Prof. Rossana Junqueira

30

Atributo
z

Cada entidade deve possuir um identificador


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

Prof. Rossana Junqueira

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

Especializao total ou parcial

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

Prof. Rossana Junqueira

35

Captulo 3: Construindo modelos entidaderelacionamento

Banco de Dados

Prof. Rossana Junqueira

36

Propriedades de modelos ER
z

um modelo formal, preciso, no ambguo.


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

Modelos ER tm poder de expresso limitado


z

z z

Banco de Dados

Equivalncia entre modelos


z z

Dois modelos diferentes podem se equivalentes Modelos equivalentes:


z z

expressam o mesmo modelam a mesma realidade

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

Prof. Rossana Junqueira

38

Exemplo de equivalncia entre modelos


z

CONSULTA como relacionamento n:n

CONSULTA como entidade

Banco de Dados

Prof. Rossana Junqueira

39

Exemplo de equivalncia entre modelos


z

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

Atributo versus entidade relacionada


z

Alguns critrios para esta deciso so:


Objeto est vinculado a outros objetos deve ser modelado como entidade z Caso contrrio pode ser modelado como atributo z Conjunto de valores de um determinado objeto fixo, pode ser modelado como atributo z Existem transaes no sistema que alteram o conjunto de valores do objeto, no deve ser modelado como atributo
z

Banco de Dados

Prof. Rossana Junqueira

41

Atributo versus generalizao/especializao


z

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

Prof. Rossana Junqueira

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

Prof. Rossana Junqueira

44

Verificao do modelo
z

Modelo deve ser livre de REDUNDNCIAS


z 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

Prof. Rossana Junqueira

46

Verificao do modelo
z

Modelo deve refletir o aspecto temporal


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

Prof. Rossana Junqueira

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:

Por motivos legais Para realizao de auditorias Para tomada de decises

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

Planejar informaes estatsticas


Verificao do modelo
z

Entidade isolada e entidade sem atributos


z z 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

Modelos de dados so usados para comunicao com:


z 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

Peter Chen (acadmica) Engenharia de informaes UML Merise (notao Europia)


50

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

Prof. Rossana Junqueira

51

Definio da estratgia de modelagem


z

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

Prof. Rossana Junqueira

52

Captulo 4: Abordagem relacional

Banco de Dados

Prof. Rossana Junqueira

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

Compostas de: linhas, colunas e chaves primrias

Relacionadas atravs de chaves estrangeiras Profissional


Tabela Linha Coluna Valor de campo

Terminologias:
Acadmica
Relao Tupla Atributo Valor de atributo
54

Banco de Dados

Prof. Rossana Junqueira

Abordagem Relacional

Banco de Dados

Prof. Rossana Junqueira

55

Abordagem Relacional
z

Caractersticas das tabelas:


z z

As linhas de ma tabela no tm ordenao Valores de campo:


z z

Atmicos o campo no pode ser composto de outros Monovalorados o campo possui um nico valor

Acesso por quaisquer critrios envolvendo os campos de uma ou mais linhas


z

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 Chave Alternativa Chave Estrangeira

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

Mecanismo que permite a implementao de relacionamentos em um banco de dados relacional

Banco de Dados

Prof. Rossana Junqueira

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

Prof. Rossana Junqueira

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

todas colunas que compem a chave primria devem ser obrigatrias


demais chaves podem conter colunas opcionais

Banco de Dados

Prof. Rossana Junqueira

62

Abordagem Relacional
z

Restries de Integridade:
z

Objetivo primordial de um SGBD garantir a integridade de dados


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

Prof. Rossana Junqueira

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

Restries de integridade semnticas:


z z

Um empregado do departamento denominado Finanas no pode ter a categoria funcional Engenheiro.

Um empregado no pode ter um salrio maior que seu superior imediato.


Prof. Rossana Junqueira 64

Banco de Dados

Abordagem Relacional
z

Modelo de banco de dados 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

Prof. Rossana Junqueira

65

Abordagem Relacional
z

Esquema textual de BD relacional

Banco de Dados

Prof. Rossana Junqueira

66

Abordagem Relacional
z

Esquema diagramtico de BD relacional

Banco de Dados

Prof. Rossana Junqueira

67

Abordagem Relacional
z

Consulta sobre o banco de dados:


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

Prof. Rossana Junqueira

68

Captulo 5: Transformao entre modelos

Banco de Dados

Prof. Rossana Junqueira

69

Transformao entre modelos


z

Dois processos de transformao de modelos:

Viso geral do projeto lgico:

Banco de Dados

70

Transformao entre modelos


z

Transformao ER para relacional:


z

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

Transformao entre modelos


z

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

Prof. Rossana Junqueira

72

Transformao entre modelos


z

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

Passos da transformao ER para relacional:


z z z

Traduo inicial de entidades e respectivos atributos Traduo de relacionamentos e respectivos atributos Traduo de generalizaes/especializaes

Banco de Dados

Prof. Rossana Junqueira

73

Transformao entre modelos


z

Implementao inicial de entidades


z z z

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

cdigo nome endereo

Pessoa (CodPess, Nome, Endereo, Data Nasc, DataAdm)


Banco de Dados Prof. Rossana Junqueira 74

Transformao entre modelos


z

Nome de atributos e Nomes de Colunas:


z z z z z z

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

Transformao entre modelos


z

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

Prof. Rossana Junqueira

76

Transformao entre modelos


z

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

Conferncia (CodConf, Nome, DataInstComOrg, EnderComOrg)

Data instalao

Banco de Dados

Prof. Rossana Junqueira

77

Transformao entre modelos


z

Implementao de relacionamentos 1:1

Banco de Dados

Prof. Rossana Junqueira

78

Transformao entre modelos


z

1:1 Ambas entidades opcionais


Homem
nome

(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

Transformao entre modelos


z

1:1 Ambas entidades opcionais


z z

Soluo por fuso de tabelas invivel Chave primria artificial Soluo por adio de colunas: melhor opo
z

Menor nmero de junes

z z

Menor nmero de chaves

Soluo por tabela prpria: opo aceitvel

Banco de Dados

Prof. Rossana Junqueira

80

Transformao entre modelos


z

1:1 Uma entidade opcional outra obrigatria


(1,1) (0,1)

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

Transformao entre modelos


z

1:1 Uma entidade opcional outra obrigatria


z

Soluo por tabela prpria pior que a soluo por adio de colunas
z

Maior nmero de junes

z z z

Maior nmero de ndices Nenhuma tm problema de campos opcionais


Fuso de tabelas melhor em termos de nmero de junes e nmero de chaves Adio de colunas em melhor em termos de campos opcionais Fuso de tabelas considerada a melhor opo e adio de colunas

Adio de colunas versus fuso de tabelas


z

z z

aceitvel

Banco de Dados

Prof. Rossana Junqueira

82

Transformao entre modelos


z

1:1 Ambas entidades tem participao obrigatria


(1,1)
Organizao

Conferncia
nome cdigo

(1,1)

Comisso
ender

Data instalao

Fuso de Tabelas: Conferncia (CodConf, Nome, DataInstComOrg, EnderComOrg)


z

Nenhuma das demais alternativas atende plenamente


z

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

Transformao entre modelos


z

Implementao de relacionamentos 1: n

Banco de Dados

Prof. Rossana Junqueira

84

Transformao entre modelos


z

1:n A entidade que tem cardinalidade mxima 1 obrigatria


Departamento
nome cdigo data lotao cdigo

(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

Transformao entre modelos


z

1:n A entidade que tem cardinalidade mxima 1 obrigatria


z

Fuso de tabelas
z z

No se aplica Implicaria em:


redundncia de dados de departamento, ou tabela aninhada Menor nmero de chaves Menor nmero de junes No h o problema de campos opcionais

Adio de colunas melhor que tabela prpria:


Banco de Dados

Prof. Rossana Junqueira

86

Transformao entre modelos


z

1:n A entidade que tem cardinalidade mxima 1 opcional


Financeira
nome cdigo

(0,1)

Financiam

(0,n)

Venda
data id

n de parcelas taxa de juros

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 por tabela prpria tambm aceitvel:


z

melhor em relao a campos opcionais Perde em relao a junes e nmero de chaves


87

Transformao entre modelos


z

Implementao de relacionamentos n : n

Banco de Dados

Prof. Rossana Junqueira

88

Transformao entre modelos


z

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

Transformao entre modelos


z

Relacionamentos de grau maior que dois


z z

No so definidas regras especficas O relacionamento transformado em uma entidade

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

Transformao entre modelos


z

Implementao de generalizao / especializao


z

Duas alternativas bsicas:


z

uso de uma tabela para cada entidade

uso de uma nica tabela para toda hierarquia

Outra

alternativa

(extica):

Subdiviso de entidade genrica

Banco de Dados

91

Transformao entre modelos


z

Implementao de generalizao / especializao


z

Uma tabela por hierarquia:


z

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

Transformao entre modelos


z

Implementao de generalizao / especializao


z

Uma tabela por hierarquia:

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

Transformao entre modelos


z

Implementao de generalizao/especializa o
z

Uma tabela por entidade especializada:


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

Transformao entre modelos


z

Implementao de generalizao / especializao


z

Vantagens da implementao com tabela nica:


z

z z

Dados referentes entidade genrica + dados referentes s especializaes em uma nica linha Minimiza junes Menor nmero de chaves

Vantagens da implementao com uma tabela por entidade especializada:


z

Colunas opcionais apenas aquelas referentes a atributos que podem ser vazios do ponto de vista da aplicao

Banco de Dados

Prof. Rossana Junqueira

95

Transformao entre modelos


z

Refinamento do modelo relacional


z

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

Transformao entre modelos


z

Relacionamentos mutuamente exclusivos:


z

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

colunas CIC e CGC em Venda so especificadas como opcionais


Prof. Rossana Junqueira 97

Banco de Dados

Transformao entre modelos


z

Relacionamentos mutuamente exclusivos:


z

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

Prof. Rossana Junqueira

98

Transformao entre modelos


z

Tratamento multivalorados:

de

atributos

Cliente (CodCli, Nome) Telefone (CodCli, Nmero) CodCli referencia Cliente


z

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

Transformao entre modelos


z

Tratamento de atributos multivalorados:


z

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

Transformao entre modelos


z

Engenharia reversa de modelos relacionais:


z z z

Parte de modelo de implementao Obtm modelo de especificao (modelo conceitual) Passos:


z z z z

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

Prof. Rossana Junqueira

101

Transformao entre modelos


z

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

Prof. Rossana Junqueira

102

Transformao entre modelos


z

Identificao da construo ER correspondente a cada tabela


z

Uma tabela pode corresponder a:


z z z

uma entidade um relacionamento n:n uma entidade especializada composio de sua chave primria

Fator determinante
z

Banco de Dados

103

Transformao entre modelos


z

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

Prof. Rossana Junqueira

104

Transformao entre modelos


z

Construes identificadas: Turma Disciplina


n

Sala

Currculo
n

Curso Laboratrio Prdio


Banco de Dados Prof. Rossana Junqueira 105

Transformao entre modelos


z

Identificao de relacionamentos 1:n ou 1:1


z

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

Prof. Rossana Junqueira

106

Transformao entre modelos


z

Construes identificadas: Turma


n

Currculo

Disciplina
n

Currculo
1

Currculo
n

Sala
n

Curso

Currculo
1
Banco de Dados

Prdio

Laboratrio
107

Transformao entre modelos


z

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

Definio de identificadores de entidades:


z

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

Prof. Rossana Junqueira

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

Manuteno Migrao para outro tipo de BD Integrao com outros BD

Banco de Dados

Prof. Rossana Junqueira

110

Normalizao

Banco de Dados

Prof. Rossana Junqueira

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

Prof. Rossana Junqueira

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

Data incio no projeto 01/11/91 02/10/91 03/10/92 04/10/92 01/11/92

Tempo alocado ao projeto 24 24 18 18 12

Joo Slvio Jos Carlos Mrio

Cdigo do Projeto: PAG02 Descrio: Sistema de RH Cdigo do Empregado 8191 4112 6126 Nome Mrio Joo Jos

Normalizao
z

Representao na forma de tabela no normalizada:


z

Tabela no-normalizada ou tabela no-primeira-forma-normal


z 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

Proj (CodProj,Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAl))

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

Prof. Rossana Junqueira

115

Normalizao
z

Passagem primeira forma normal (1FN)

Alternativas:
z

Uma nica tabela


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

Uma tabela para cada tabela aninhada


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

Criar tabela referente a tabela N

Banco de Dados

Prof. Rossana Junqueira

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

Criar tabela referente a tabela aninhada

Banco de Dados

Prof. Rossana Junqueira

119

Normalizao
z

Passo 3:
z

Definir as chaves primrias das tabelas na 1FN que correspondem a tabelas aninhadas.

Definio da chave primria

Banco de Dados

Prof. Rossana Junqueira

120

Normalizao

Banco de Dados

Prof. Rossana Junqueira

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

Prof. Rossana Junqueira

123

Normalizao
z

Segunda forma normal 2FN:


Objetiva eliminar um certo tipo de redundncia de dados z Exemplo: (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl) z Dados referentes a empregados (Nome, Cat e Sal) Redundantes, para os empregados que trabalham em mais de um projeto
z

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

TempAl 24 24 18 18 12 12 24 12
124

Normalizao
z

Segunda forma normal 2FN:

Dependncias parciais

Dependncias no parciais

125

Normalizao
z

Segunda forma normal 2FN:


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

Segunda forma normal 2FN:


z 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

Segunda forma normal 2FN:

128

Normalizao
z

Segunda forma normal 2FN:

Banco de Dados

Prof. Rossana Junqueira

129

Normalizao
z

Terceira forma normal 3FN:


z z 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

Terceira forma normal 3FN:


z z 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

Terceira forma normal 3FN:

Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAl) Emp (CodEmp, Nome, Cat) Cat (Cat, Sal)

Banco de Dados

Prof. Rossana Junqueira

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

Prof. Rossana Junqueira

133

Normalizao
z

Tabelas na 3FN:

Banco de Dados

Prof. Rossana Junqueira

134

Normalizao
z

Problemas de normalizao:
z

Chaves primrias omitidas ou incorretas


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

ordenao de registros ou de listas ponteiros fsicos, etc

Deve-se proceder como se o atributo aparecesse explicitamente no documento Exemplo:


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

Prof. Rossana Junqueira

136

Normalizao
z

Problemas de normalizao:
z

Atributos irrelevantes, redundantes ou derivados


z

Devem ser eliminados j quando da passagem a forma no normalizada

Banco de Dados

Prof. Rossana Junqueira

137

Captulo 7: SQL

Banco de Dados

Prof. Rossana Junqueira

138

Criao de Banco de Dados


z z

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.

CREATE DATABASE C:\Banco de Dados\empresa.fdb;

Banco de Dados

Prof. Rossana Junqueira

139

Criao de Tabelas
z

Restries a serem especificadas para uma coluna de tabela:


z z 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 FOREIGN KEY:


z

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

Prof. Rossana Junqueira

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

Prof. Rossana Junqueira

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

Exemplos de utilizao de ALTER TABLE:


z

Incluir nova coluna


z

ALTER TABLE Fabrica ADD Email VARCHAR(30); ALTER TABLE Fabrica


ADD Contato VARCHAR(30) NOT NULL, ADD Fax VARCHAR(18);

Eliminar uma coluna existente


z

ALTER TABLE Fabrica DROP Fax;

Alterar a posio de uma coluna


z

ALTER TABLE Produto ALTER Id_ProdutoC POSITION 5;


Prof. Rossana Junqueira 144

Banco de Dados

Alterao de Tabelas
z

Exemplos de utilizao de ALTER TABLE:


z

Alterar o tipo de dado de uma coluna


z 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.

Alterar o nome da coluna


z

ALTER TABLE Fabrica ALTER Nome TO RazaoSocial;

Adicionar uma nova restrio


z

ALTER TABLE Fabrica ADD CONSTRAINT Un_Mail UNIQUE (Email);

Eliminar uma restrio existente


z

Banco de Dados

ALTER TABLE Fabrica DROP CONSTRAINT Un_Mail;


Prof. Rossana Junqueira

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

Prof. Rossana Junqueira

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

Prof. Rossana Junqueira

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 Vendedor (Id_Vendedor, Nome)


VALUES (2, Fbio Almeida);

INSERT INTO Cliente VALUES (1, Francisco de Assis, Av. Principal, 500, Santarm, PA, 3522-0101, Francisco);

Banco de Dados

Prof. Rossana Junqueira

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

O campo data inserido no formato mm/dd/aaaa

INSERT INTO Fabrica (Id_Fabrica, RazaoSocial, UF)

VALUES (1, CAP Computadores Ltda, SP);


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

UPDATE ProdutoCond SET Preco = Preco * 1.05;

Banco de Dados

Prof. Rossana Junqueira

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

UPDATE Produto SET Descricao = Monitor de vdeo 15

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.

UPDATE Pedido SET Id_Transportadora = 1, Id_Vendedor = 2 WHERE Data = 06/15/2005;


z

O comando acima modifica dados de duas colunas dos pedidos efetuados em 15/06/2005.

Banco de Dados

Prof. Rossana Junqueira

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

DELETE FROM ProdutoPedido;

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

DELETE FROM ProdutoPedido WHERE Id_Pedido = 1;


Prof. Rossana Junqueira 152

Banco de Dados

Consultas a dados de uma tabela


z

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

Aritmticos z Lgicos z De comparao z De concatenao Banco de Dados

Prof. Rossana Junqueira

153

Consultas a dados de uma tabela


z

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 a dados de uma tabela


z

Consultas simples:
z

SELECT * FROM CLIENTE;


z z

Esse comando recupera todas as linhas e colunas da tabela CLIENTE. O asterisco (*) indica que todas as colunas so mostradas.

Se for desejado recuperar colunas especficas da tabela, um exemplo seria:


z

SELECT NOME, CONTATO, TELEFONE FROM CLIENTE;

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

Consultas a dados de uma tabela


z z z z

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_FABRICA ID, RAZAOSOCIAL "RAZO SOCIAL FROM FABRICA;

As colunas de consultas podem incluir expresses aritmticas.


z

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

SELECT ID_PRODUTO, ID_CONDICAO, PRECO * 1.05 Novo Preo FROM PRODUTOCOND;


Prof. Rossana Junqueira

156

Consultas a dados de uma tabela


z

A consulta seguinte utiliza o operador de concatenao:


z

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:

SELECT DISTINCT CIDADE FROM CLIENTE;


Prof. Rossana Junqueira 157

Banco de Dados

Consultas a dados de uma tabela


z

Uso da clusula WHERE:


z

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

SELECT ID_CLIENTE, NOME FROM CLIENTE WHERE UF = 'PA';

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

Consultas a dados de uma tabela


z

SELECT ID_CLIENTE, NOME FROM CLIENTE WHERE NOME LIKE 'A%';

O operador LIKE recupera da tabela os clientes que tm o nome iniciando com a letra A.

SELECT * FROM PEDIDO WHERE VALOR BETWEEN 200 AND 700;


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

Consultas a dados de uma tabela


z

Com operadores Lgicos:


z

SELECT * FROM CLIENTE WHERE NOT UF = 'PA';

Mostra os clientes que no so do estado do Par.

SELECT * FROM PEDIDO WHERE VALOR NOT BETWEEN 200 AND 700;

Retorna os pedidos cujos valores no esto entre 200 e 700.

SELECT * FROM CLIENTE WHERE NOME NOT LIKE 'D%';

Recupera os clientes cujos nomes no iniciam com a letra D.

SELECT * FROM PRODUTO WHERE ID_PRODUTOC IS NOT NULL;

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

Prof. Rossana Junqueira

160

Consultas a dados de uma tabela


z

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.

Uso da clusula ORDER BY:


z

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

Consultas a dados de uma tabela


z

Uso de funes:
z

AVG
z

SELECT AVG(VALOR) FROM PEDIDO;

Calcula a mdia dos valores numricos em uma coluna.

COUNT
z

SELECT COUNT(*) FROM CLIENTE;

Calcula o nmero de linhas que satisfazem uma condio de seleo de uma consulta.

MAX
z

SELECT MAX(VALOR) FROM PEDIDO;

Recupera o valor mximo de uma coluna.

MIN
z

SELECT MIN(VALOR) FROM PEDIDO;

Recupera o valor mnimo de uma coluna.


Prof. Rossana Junqueira 162

Banco de Dados

Consultas a dados de uma tabela


z

Agrupamento de linhas com GROUP BY:


z

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

Prof. Rossana Junqueira

163

Relacionamento entre tabelas


z

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

You might also like