You are on page 1of 34

Contedo

Banco de Dados
Curso de Ps-Graduao Professor Walter Cunha

Conceitos bsicos de Banco de Dados. Sua organizao lgica. Sistema de gerenciamento de bancos de dados. Modelo conceitual Modelagem de dados. Normalizao.

Introduo
Com a integrao econmica mundial, o aumento da competitividade de mercado vem provocando uma revoluo em diversos setores administrativos. Neste processo de globalizao imprescindvel a qualidade de informaes. A internet fez com que a facilidade de obteno de dados exija cada vez um tratamento elaborado dos mesmos.

Introduo
iBanco de Dados uma coleo de dados inter-relacionados. iSistema de Gerenciamento de Banco de dados (SGBD) uma coleo de dados inter-relacionados e um conjunto de programas para acess-los permitindo ao usurio criar e manter o banco de dados.

Sistema

Introduo
Um sistema de banco de dados um sistema que facilita o processo de definio, construo e manipulao de banco de dados para diversas aplicaes. Definio envolve especificar os tipos e estruturas dos dados que sero armazenados no banco de dados. Construo o armazenamento propriamente dito. Manipulao so funes de acesso, tais como: consultas, atualizao e insero.

SGBD

Sistemas de Bancos de Dados


Manuteno de registros por computador Incluso, Excluso, Recuperao, etc. Componentes do Sistema Usurios Dados Hardware Software Dados

Processamento de arquivos
Redundncia e inconsistncia de dados
DBA

Dificuldades no acesso a dados independentes Isolamento de dados Acesso concorrente Problemas de segurana Problemas de integridade em arquivos distintos

Programas de Aplicao

Usurios Finais
7 8

Banco de Dados

Banco de Dados

Definio do banco:O sistema de banco de dados no s contm o banco como tambm sua definio e descrio envolvendo os tipos de dados, etc. Abstrao de dados:Os programas so escritos independentemente da estrutura de dados de forma que uma mudana nos dados no implica na mudana da aplicao.
9

Mltiplas vises de dados:Como um banco de dados possui diversos usurios muitas vezes necessrio ter diferentes vises dos dados armazenados para diferentes propsitos. Compartilhamento de dados e processamento de mltiplas transaes:Permite que mltiplos usurios acessem os dados ao mesmo tempo.
10

Porque usar um SGBD


Integridade Evitar redundncia Maior visibilidade Compactos Mais rpidos Permitem crescimento controlado Maior segurana Menos trabalho braal
11

Vantagens

Independncia de Dados
Maior objetivo dos Bancos de Dados
As aplicaes so imunes estrutura dos dados e estratgia de acesso
Aplicaes diferentes possuem vises diferentes O DBA deve ter liberdade para manipular estruturas
12

Software - SGBD Suporte s solicitaes dos usurios Isolar dos recursos do hardware Gerenciar recursos do sistema Compartilhamento Segurana Integridade
13

Usurios

Administrador do Banco de Dados (DBA)


Padronizao, autorizao, integridade, desempenho, ligao com usurios. Responsvel pela autorizao de acesso ao banco de dados sua coordenao e monitoramento. Alm disto, tarefa do DBA analisar tpicos referentes segurana bem como a compra de software e hardware necessrios.

14

Usurios
Projetistas de BD
responsvel por identificar os dados a serem armazenados no banco para que sejam escolhidas as estruturas apropriadas na representao e armazenamento dos dados. Esta tarefa geralmente realizada no momento da implantao do banco.

Usurios
Programadores de Aplicao / Analistas Usurio Final

So responsveis pela elaborao e implantao de programas especficos para os usurios finais.

Casuais, Paramtricos, Sofisticados ou Stand-alone Usa programas de aplicao, LMD(Linguagem de manipulao de dados), QBE(Query By Example), Oracle, Sybase ...
So aqueles que utilizam de fato as informaes contida no banco de dados.

15

16

Arquitetura para Sistemas de BD Arquitetura para Sistemas de BD


Nvel Externo
Nvel
Usurio A1 Linguagem principal + DSL Usurio A2 Linguagem principal + DSL Usurio B1 Linguagem principal + DSL Usurio B2 Linguagem principal + DSL Usurio B3 Linguagem principal + DSL

Viso do usurio individual Viso do conjunto de usurios (Tabelas) Registros internos, ndices, listas invertidas

Esquema Viso externa A externo A

Esquema Viso externa B externo B

Mapeamentos

Conceitual
Nvel

Mapeamento A externo/conceitual

Mapeamento B externo/conceitual

Interno

Esquema conceitual

Viso Conceitual Mapeamento conceitual/interno Banco de dados armazenado

Sistema de Gerenciamento de banco de dados (SGBD)

Cada usurio tem uma linguagem sua disposio


DDL (Data definition language) DML (Data manipulation language - SQL, QMF, QBE)
17

Esquema interno Viso Interna

18

Nveis de Abstrao
Mundo real Seres, objetos, organismos, fatos

Nveis de Abstrao
Mundo real

Modelo descritivo Modelo conceitual Modelo operacional Modelo interno

Informaes informais Informaes formais Dados Cadeias de bits e bytes


19

Definio imprecisa. Vrias questes filosficas e percepes ligadas a esse conceito. Materialistas: apenas o fisicamente material real Idealistas: apenas o no fsico real Monistas: ambos so realidades em planos diferentes
20

Nveis de Abstrao
Modelo descritivo

Nveis de Abstrao
Modelo conceitual Preparao para o nvel computacional ( mquina ).

Relatrios escritos em linguagem natural. Descompromisso com formalismo. O mais inteligvel possvel.

formalismo da matemtica. Aspectos: Estrutura das informaes. Fornecedor -> endereo -> local, cep, cidade Manipulao das informaes.
21

Atualizao de endereos, confeco de um relatrio, ...

22

Nveis de Abstrao
Modelo operacional Compromisso com a linguagem da mquina. Linguagem de programao x expresso matemtica. Dgito de um CPF Modelo conceitual x Modelo operacional. Tendncias das linguagens de alto nvel.

Nveis de Abstrao
Modelo interno Linguagem de mquina propriamente dita. Cadeias com especificaes estruturais. Cadeias correspondentes aos dados.

23

24

Nveis de Abstrao
Modelo descritivo Modelo conceitual
xxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxx

Modelo Entidade-Relacionamento
Conceitos: Percepo do mundo real representada por entidades e relacionamentos. Objetivos: Simplicidade de representao. Ferramenta para os projetistas. Criar uma viso unificada dos dados.

Diagrama de fluxo de dados

Modelo operacional

Linguagem de programao

Aplicaes executveis
25 26

Modelo Entidade-Relacionamento M E R - modelo de entidades e relacionamentos

Modelo Entidade-Relacionamento
Entidade qualquer objeto distinto a ser representado pelo Banco de dados. Concretas: aluno, carro, casa, filme, produto, etc.. Abstratas: jogo, cargo, show, etc.. Conjunto de entidades grupo de entidades com a mesma caractersticas. Aluno {(cod,A32),(nome,Patrcia),(curso,INF)} Aluno {(cod,A33),(nome,Maria),(curso,INF)} Aluno {(cod,B44),(nome,Jos),(curso,ENG)}
27 28

Simples Abrangente Base para conceitos fundamentais do banco de dados

Modelo Entidade-Relacionamento
Todo conjunto de entidades representado no MER por um retngulo:

Modelo Entidade-Relacionamento
Redundncia:
Cada entidade representada por um ponto em um conjunto de entidades e deve ser nico em todo o esquema do banco. Se o Sr. Jos da Silva um objeto de Funcionrios, ele no pode estar presente no conjunto de entidades Clientes por exemplo.

Funcionrios

Alunos

Setores

Datas

Por conveno usamos palavras no plural A primeira letra em maisculo para distinguir de palavras iguais no texto. Cada conjunto de entidade corresponde a todas as instncias desta entidade com as mesmas caractersticas.
29

30

Modelo Entidade-Relacionamento
Atributos:
No faz sentido definir um objeto se no identificarmos um conjunto de valores para ele. Ao conjuntos de valores de um objeto chamamos de atributos.

Sub-atributos ( atributo composto )


Funcionrios
endereo cidade local cep rua nmero Struct linguagem C Record linguagem Pascal

Funcionrios

endereo

nome
31 32

Modelo conceitual

Atributos Multivalorados
Livros
Valor multivalorado no um vetor e sim um subconjunto do conjunto de valores Set do pascal Ttulo Autores * ( plural ) Editora Assuntos * ( plural ) Nome
33

Representao nica

Poderia ser definido 2 valores monovalorados? cidade


34

Atributos Multivalorados
Funcionrios

Chaves

Chave Primria: Identifica uma nica entidade num conjunto de entidades e um relacionamento num conjunto de relacionamentos. nome Telefones * ( plural ) Chave Estrangeira:Atributo da entidade que representa a chave primria da entidade da outra entidade da relao

Vazio ?
cpf

Diferente de Nulo

CPF ? Conotao operacional!


Chave Candidata: Atributo da entidade passvel de se tornar uma chave primria.

Atributo determinante ( sublinhado )

Restrio de integridade
35

36

Regras de Integridade Relacional Integridade de Entidade


Nenhum atributo da chave primria pode ter valor nulo.

Exemplo de Banco de Dados


Aluno Matria

Integridade Referencial
Se uma relao inclui uma chave Externa K equivalente a uma chave primria de outra relao R, ento K deve sempre corresponder a um valor da chave primria em alguma tupla de R ou ser totalmente nulo.
37

Boletim

38

Notao
Entidade Entidade Fraca Relacionamento Atributo
39

Relacionamento
Jos da silva est lotado no departamento de Vendas. Atributo? Vendas um elemento do conjunto de entidades Departamento. No pode ser atributo de Funcionrios. Estrutura abstrata Relacionamento

Departamentos

Lotao

Funcionrios
40

Relacionamento

Relacionamento 1 para N
Classe de um relacionamento ?

Relacionamento uma associao entre as diversas entidades.

Um relacionamento um par ordenado ( e1, e2 ) onde e1 e e2 so elementos do conjunto de entidades E1 e E2 respectivamente. Conjunto dos relacionamentos: o conjunto dos pares ordenados que caracterizam um relacionamento.
41

Departamentos

(0,1)

Lotaes

(1,N)

Funcionrio

Integridade Classe Pode haver um departamento sem funcionrios lotados Um departamento pode ter vrios funcionrios. Um funcionrio s pode estar lotado adepartamento. Um funcionrio precisa estar em um um departamento Estrutura x Semntica
42

Cardinalidades
Um-para-um Um-para-muitos Muitos-para-um Muitos-para-muitos
a1 a2 a3 a4 b1 b2 b3 b4

Relacionamento 1 para N
Se ( e1, e2 ) um par ordenado de Lotaes, a quem pertence e1 e e2 ? Departamento
b1 b2 b3 b4 b5

Um-para-um
a1
b1 a1 a2 a3 b2 b3 b4 b5
a1 a2 a3 a4 b1 b2

Lotaes ( e1, e2 )

Funcionrio

a2 a3 a4 a5

Por conveno a ordem dos termos do par ordenado indica a sua pertinncia. Cima para baixo e esquerda para direita.

Um-para-muitos

Muitos-para-um

Muitos-para-muitos
43 44

Relacionamento 1 para 1

Restrio de integridade

E ( e1, e2 ) em Gerenciamentos E
Departamento
(1,1) Gerenciamentos (0,1)

( e1, e2 ) em Lotaes

Funcionrio Departamento
Gerenciamentos ( e1, e2 )

Funcionrio

Integridade Classe No departamento s possui uma gerncia Um pode haver um departamento sem gerncia Um funcionrio pode no gerenciar um departamento Um funcionrio s pode gerenciar um departamento
45

Departamento

Lotaes ( e1, e2 )

Funcionrio
46

Relacionamento M para N

Exemplos
Locadora: Filmes x clientes Nadadores x modalidades Professor X Alunos Carros x Fabricantes Carros x Placa Motoristas x carros

Funcionrio

(1,M)

Participa

(0,N)

Natao: Projeto Universidade: Automobilismo:

Integridade Classe Pode haver pode ter vrios sem funcionrios participando Um projeto um projeto aindafuncionrios participando Um funcionrio pode estar participando de de pelo projetos Um funcionrio precisa estar participando vrios menos um projeto
47

48

Relacionamento x para N

Relacionamento x para N
Totalidade mnima

Cursos

(0,5)

Inscries

(1,N)

Candidatos

Departamentos

(10,1)

Lotaes

(1,N)

Funcionrios

Classe Integridade Um Curso pode ter vrios candidatos inscritos Um Curso pode no ter candidatos inscritos Um candidato pode se inscrever em no mximo 5 Um candidato esta inscrito em pelo menos 1 cursocursos
49

Integridade Um Departamento s existe com pelo menos 10 funcionrios


50

Relacionamento x para N

Restrio de integridade
Relacionamento 1 : 1 ( apenas 1 )

Time

(10,1)

Defende

(0,22)

Relacionamento 1 : N ou N : 1 ( apenas 1 ) Jogador Relacionamento X : N ou N : X ( no mximo X ou no mnimo X)

Integridade Classe Um jogador pode no estar defendendo um time Um jogador s pode estar defendendo um time Um time s pode existir qdo no mximo mnimo 10 Um time pode pode possuir possui no 22 jogadores jogadoressua camisa vestindo vestindo sua camisa
51

Time

(10,1)

Defende

(0,22)

Jogador
52

Restrio de integridade
Relacionamentos Parciais ou Totais Total: Dado um conjunto de entidades E e um relacionamento R em que E participa, todo elemento de E tem de estar em R. Parcial: Dado um conjunto de entidades E e um relacionamento R em que E participa, todo elemento de E pode no estar em R. Toda entidade que no apresenta um relacionamento total dita: ENTIDADE FRACA
53

Restrio de integridade Relacionamento Lotao Lotao Gerenciamento Participao Participao restrio Total Parcial Total Parcial Total Em relao a Funcionrios Departamentos Departamento Projetos Funcionrios
54

Outra abstrao
N

Projeto
Lotaes
N

Funcionrios

Departamentos
N N N

Lotaes
1

Neste caso considera-se que no pode existir Departamentos sem funcionrios. E na criao de um novo Departamento quem vem primeiro? No nvel conceitual no teremos problemas. Assumimos que as incluses sero simultneas No nvel operacional teremos duas transaes diferentes que sero executadas em seqncia.
55

Projetos

Participaes

Funcionrios
1

Departamentos Gerenciamentos
1

56

Atributos de um relacionamento

Determinao de atributo de relacionamento

Materiais

Fornecimento
Prazo entrega?

Preo ?

Fornecedor

Materiais

Preo ? Prazo entrega?

Fornecedor

Cdigo

Nome Descriao

Data Nota Fiscal Preo

CGC Condio

Nome

Cdigo

Nome Descriao

Endereo Prazo de entrega Quantidade


57

Fixa cada uma das entidades e verifica a variao do atributo.

CGC

Nome

Endereo

58

Determinao de atributo de relacionamento

Determinao de atributo de relacionamento


Caso N : 1 Como fixar Funcionrios?
N 1

Materiais
Observar a maneira com que o atributo referido:

Fornecedor

Funcionrios
Data da lotao

Lotaes

Departamentos

Cdigo

Nome Descriao

CGC

Data da lotao

Nome

O preo que o fornecedor cobra por um material. O preo de um material. O preo de um fornecedor.

Endereo

Sendo uma relao 1 : N, o atributo do relacionamento pode ser movido para o conjunto de entidades do lado N. O atributo Data da locao no prprio do funcionrio.

Simples mas inseguro


59

E no ponto de vista da empresa?

60

Repetio de pares em um conjunto de relacionamento


N N

Auto-Relacionamento

Faculdades

Matrculas

Alunos

Caso um aluno faa vestibular para a mesma faculdade em dois anos diferentes, para cursos diferentes. Neste caso, um atributo do relacionamento vai distinguir os pares, e que o conjunto agora no s dos pares, mas de elementos que contm os atributos dos relacionamentos. (ano da matrcula)
61

Funcionrio

Chefia

Relao da entidade E com a Prpria entidade E

Matrcula 3377.2 4987.1 5689.0 7493.7

Nome Luiz souza Barbara Paula Souza Julia Martins

Mat-Chefe 5689.0 5689.0 5689.0


62

Auto-Relacionamento - Papel
Funcionrios
1 N

Relacionamento 1 para N - papel


lotado em

( Jos, Carlos ) Quem quem? Depende do papel no relacionamento

Gerencia

Gerenciado

Departamento

Lotaes

Funcionrio
Os papeis modelam:

Gerenciamentos

tem como lotao


63

hierarquias ou insubordinaes
64

Decomposio de relacionamento N:N


A ttulo de reduzir a complexidade de uma relao, devemos decompor os relacionamentos N:N da seguinte forma: Seja a relao de requisio,

Materiais

Materiais dos Itens

Itens de requisio
N

Cdigo

descrio

Quantidade requisitada

Requisio dos Itens


N

Materiais

Itens de requisio

Requisies

Cdigo

descrio

Quantidade requisitada

Requisies data nmero


65

Vamos decompor em duas relaes N:1

data nmero

66

Auto-Relacionamento - Papel
m1

Arvores de composio
m3 m6 m8

Materiais
N N

componente de

Tem como componente Um projeto com um autorelacionamento sem papeis diferenciados deve conter falhas!

m2 m4

m3 m6

m4 m5

m6 m7

m7

m9

m10

Composies

m5

m7

Seja o par ( mi, mj ) onde mi tem papel de tem-como-componente e mj o papel de -componente-de

Quantidade contida
67

Os elementos de composio seriam: [(mi, mj),q] ([(m1,m2),4], [(m1,m3),3], [(m3,m5),6], [(m6,m7),2], ... )
68

Relacionamentos Triplos

Relacionamentos Triplos
N

Materiais Uma empresa constri equipamentos a partir de seus desenhos de projetos. Estes desenhos geram requisies de materiais que iro dar origem a pedidos de compra. Queremos modelar esta estrutura mostrando quais materiais de que requisies geram quais pedidos de compra.

MRP
N

Requisies

Pedidos de compra

Cada par Requisio-Pedido associa-se com um nmero de materiais Essa tripla informao gera um relacionamento triplo.
69

Um material de uma requisio pode dar origem a vrios pedidos. Um material de um pedido pode originar-se de vrias requisies.
70

Relacionamentos Triplos
1

Relacionamentos Triplos
1

Professores

PAD
N

Alunos

Correntistas

CCC
1

Contas Correntes

Disciplinas

Cartes Magnticos Sempre existe um carto para cada conta de cada correntista.

Dado um aluno em uma disciplina associa-se apenas um professor. Um professor pode ministrar uma disciplina para vrios alunos. Um professor pode dar aulas a um aluno de vrias disciplinas.
71

Que outras relaes esto embutidas dentro desta relao CCC? Correntistas x Contas correntes ? Contas correntes x Cartes magnticos ?
72

Agregao
Para o caso citado anteriormente de pedido de compra, vamos considerar que uma requisio pode ser satisfeita por materiais que estejam em estoque e no ser necessrio a emisso de um pedido de compra.
N N

Agregao
O conjunto de relacionamentos M-R e seu conjuntos de entidades sero AGRAGADOS como uma Entidade e esta se relacionar com Pedidos de compra.

Materiais

M RR M P
N

Materiais Requisies

Itens de requisio N

Requisies

Pedido de compra precisa saber se requisio pendente !

Pedidos Quantidade de compra


requisitada

Estado (pendente, cumprida)


73

Itens de pedido

Pedidos de compra
74

Agregao
Voltando ao caso das contas bancrias, consideremos que um carto s emitido com a solicitao do cliente e esta solicitao s ser aceita caso este no tenha restries. Um outro aspecto importante que, da forma que foi concebido o relacionamento triplo, quando se quiser obter informaes referentes aos correntistas e a conta bancria ter de passar pelos cartes magnticos. Devido a isso, a melhor forma de montar o relacionamento criando uma relao entre Correntistas e Contas correntes independente de quaisquer outros conjuntos.

Agregao
N N Contas correntes Tipo ( indv., conj )

Correntistas

CC

Titular (S / N) 1 Concorda com a localizao dos atributos? Emisses de Cartes

Cartes magnticos

75

76

Agregao
Homem
(0,1) Casar (0,1)

Entidades Fortes / Fracas


Mulher
Entidades FORTES so Entidades de Dados que possuem alto grau de independncia com relao existncia e identificao. Entidades FRACAS so Entidades que possuem dependncia de existncia e ou de identificao.

Homem

(1,1)

Casar (0,1) Gerar

(1,1)

Mulher

Entidade Fraca

(1,N)

Filhos
77 78

Exemplo:Em uma empresa existem os seguintes itens descrevem a funcionalidade de solicitao de materiais:
Projetos emitem documentos que vo definir composio de itens necessrios para efetivao do produto de um projeto. Os documentos devem seguir uma prioridade de atendimento conforme a importncia do mesmo. Os documentos devem conter matrias que existem no cadastros de materiais. Sero geradas requisies de materiais a partir da especificao dos documentos do projeto. Vo existir requisies de materiais que no vo estar com saldo suficiente em estoque para atender. Existe um cadastro dos fornecedores da empresa para os materiais que compem o seu estoque. Quando necessrio, deve ser emitido um pedido de compra para um fornecedor atendendo a demanda dos projetos. O pedido de compra deve usar um critrio de levantamento de preo para escolha do fornecedor para o qual ser emitido o pedido.
79

Fornecimentos

Fornecedores 1 Obteno de preos N

Projetos 1 Emisses N N Documentos De projetos N N 1 Hierarquia Origen Requi. N Itens Docs. N N Materiais N Itens coleta

N Coletas de preos N

Solicita

CONDIES

Origens pedidos N N Pedidos compra

N Requisies

N Itens pedido

80

Agregao de Auto-Relacionamento
Voltemos ao caso das composies: Materiais
N N

Agregao de Auto-Relacionamento
Uma terceira situao que no havendo nem a pea original nem a similar, podemos utilizar uma pea alternativa a depender da composio: Seja: (p0, p1) uma relao original (p0, p2) uma relao alternativa

Considere que existem peas similares de outro fabricante que sempre podem substituir a sua similar em caso de falta. Reflexividade Simetria Transitividade A-A AB BA AC ABeBC

Similaridades

Surge a necessidade de relacionar (p0, p1) com (p0, p2) e relao de relacionamentos no existe portanto teremos que agregar.

81

82

Agregao de Auto-Relacionamento
Materiais
N N N

Agregao de Auto-Relacionamento
Precisamos relacionar p2 ao par (p0, p1) para eliminar a redundncia e unir a soluo a similaridade:

Composies alternativas
N

Composies Alternativa

Similaridades
N

Peas
N N

Composta por

Componente de

Integridade: (p0, p2) dever estar em composies e Composies alternativas por conta de restrio de integridade.
83

Composies
N

Similares seletivos

84

Especializao
Ocorre quando um objeto (entidade) subconjunto de um outro conjunto de objeto, mas possui caractersticas prprias. Rua Pto referncia

Especializao
Voltemos ao caso funcionrios-Departamentos.
1 N

Departamentos

Lotaes

Imveis casas
Cerca eltrica

Funcionrios

apartamentos

Entidades disjuntas.

Dentre os funcionrios, existem caractersticas que diferem entre as entidades. Essas diferenas vo se caracterizar atravs dos seus atributos.

Telhado

Andar

Condminos
85 86

Nome Departa- 1 mentos Lotaes N Funcionrios CPF Sexo Categoria Habilitao Acidentes * Motoristas N Condues N Veculos Lnguas * Tipo Placa Secretrias Engenheiros N
Participaes

Generalizao
Ocorre quando um objeto (entidade) um agrupamento de outros objetos que no apresentam diferenas nos seus atributos mas semanticamente so diferentes. Imaginemos a modelagem de Clientes de uma loja que podem ser pessoas fsicas e jurdicas.

CREA

Em relao as pessoas jurdicas diferenciamos as empresas do grupo e as empresas fora do grupo.

N Projetos
87 88

Endereo Clientes Nome Tipo fiscal Pessoas fsicas Identificao ( CPF ) Empresas do grupo Endereo Telefone * Pessoas jurdicas

Outros modelos
A escolha de um modelo que melhor se ajuste realidade que pretende expressar fator crtico para o sucesso ou fracasso do projeto.

Identificao ( CGC )

Origem

Empresas fora do grupo Endereo Telefone * 89

Modelo de dados uma coleo de ferramentas conceituais para descrio dos dados, relacionamento entre os dados, semntica e restries dos dados Korth e Silberschatz

90

Outros modelos
Modelar os dados uma maneira de expressar uma realidade atravs de um formalismo que requer abstrao por parte do modelador. Existem diversas tcnicas para modelagem de dados, cada uma com ferramentas de abstrao, determinando a classe de problemas mais adequadas ao seu uso.

Viso Macro
Um modelo completo composto por sub-modelos que expressam vises diferentes da mesma realidade. Essas vises esto divididas em trs:

Viso de objetos descreve os objetos que compem o sistema e seus relacionamentos atravs de diagramas de objetos. Viso funcional descreve as transformaes dos valores das instncias dos objetos. Viso dinmica descreve os aspectos do sistema que modificam com o passar do tempo, especificando o controle do sistema.
91 92

Outros modelos
Cada viso descreve um aspecto do sistema, mas contm referncias s outras vises. Funcional

Outros modelos
As metodologias estruturadas sempre abordam as trs perspectivas. Por ter como princpio a decomposio funcional para modelar sistemas, essas metodologias do mais nfase viso funcional; em segundo grau de importncia , vem a viso dinmica e por fim a viso de objetos. A metodologia orientada a objetos abordam as trs perspectivas com nfases diferentes. A viso de objetos a mais enfatizada, depois a dinmica e a funcional.

Dinmica Objetos Esses inter-relacionamentos entre vises inevitvel, compondo um fator delicado na modelagem.
93

94

Outros modelos
A abstrao deve estar associada a um propsito. Desta forma, pode-se ter vrias abstraes de um mesmo problema para propsitos diferentes. A construo de modelos pela abstrao possui o carter de simplificao da realidade a ser modelada, por isso no deve procurar a verdade absoluta, mas sim a adequao ao propsito. Rumbaugh

Tcnica de Modelagem de Objetos TMO


95 96

TMO Tcnica de Modelagem de Objetos


Objeto algo com limites ntidos e significado em relao

TMO Tcnica de Modelagem de Objetos


Os objetos possuem caractersticas prprias que descrevem o seu estado em um determinado momento, e a isso denomina-se atributos ou propriedades de um objeto. Exemplo: A cidade de Salvador possui uma populao de 500.000 habitantes. Neste caso, populao um atributo que descreve o objeto Salvador em um dado momento.

realidade estudada. Facilitam a compreenso do mundo real e oferecem uma base real para a implementao em um sistema de software. Exemplos de instncias de objetos: O rio Amazonas, a cidade de Salvador, a empresa Microsoft, etc.

97

98

TMO Tcnica de Modelagem de Objetos


Os objetos so responsveis por atuar sobre atributos e tambm sobre outros objetos. Essas operaes que descrevem o comportamento de um objeto so chamadas de mtodos. Exemplo: A cidade de Salvador aumentou a populao de 50.000 novos habitantes. O mtodo aumentar faz parte deste objeto.

TMO Tcnica de Modelagem de Objetos


Um grupo de objetos com propriedades semelhantes, os mesmos mtodos e, conseqentemente, a mesma semntica so ditos pertencentes a um classe. Exemplo: Estados brasileiros e Estados Os objetos de uma classe compartilham um objeto semntico comum, alm dos requisitos de atributos e comportamentos: Celeiro e Cavalo possuem um preo e uma idade, porm o celeiro pintado e o cavalo alimentado. A interpretao da semntica depende do propsito de cada aplicao.

99

100

Objetos TMO Tcnica de Modelagem de Objetos

Propriedades TMO Tcnica de Modelagem de Objetos

101

102

Classes TMO Tcnica de Modelagem de Objetos TMO Tcnica de Modelagem de Objetos


Cada metodologia de modelagem utiliza uma notao grfica prpria. Esta e a representao para o diagrama de objetos:

Figura 3.2

103

104

TMO Tcnica de Modelagem de Objetos


Associao: o conjunto de ligaes com estrutura e
semntica comuns. Uma cidade pertence a um estado

TMO Tcnica de Modelagem de Objetos

Multiplicidade: especificao de quantas instncias de uma classe relacionam-se a uma nica instncia de uma classe associada.
Bola cheia significa zero ou muitos Bola vazia significa zero ou um

de objetos. uma instncia de uma associao.

Ligao: a conexo fsica ou conceitual entre instncias


A cidade de Salvador pertence ao estado da Bahia.

105

106

TMO Tcnica de Modelagem de Objetos


Micro Utilizado por Usurio

TMO Tcnica de Modelagem de Objetos


Atributo de Ligao: Assim como um atributo pode ser uma propriedade de um objeto de uma classe, um atributo de ligao uma propriedade de uma associao.

Hotel

Usufrudo por

Usurio Figura 3.4

Disciplina

Cursar

Aluno

Linha

Cruza +2

Ponto
107 108

TMO Tcnica de Modelagem de Objetos


Agregao: um tipo de associao forte onde um objeto
agregado constitudo de componentes. representado por um relacionamento parte-todo ou uma parte de. Figura 3.5

TMO Tcnica de Modelagem de Objetos


Generalizao e Especializao: Ambos referem-se a aspectos da mesma idia e so usados com freqncia de forma intercambivel. So dois diferentes pontos de vista de um mesmo relacionamento, visto a partir da superclasse ou das subclasses.
Generalizao deriva do fato de que a superclasse generaliza as subclasses.

Especializao refere-se ao fato de que as subclasses especializam a superclasse


109 110

TMO Tcnica de Modelagem de Objetos

TMO Tcnica de Modelagem de Objetos


Herana: A herana permite que uma classe herde as caractersticas de seu ancestral. Herana Mltipla: A herana mltipla permite que uma classe possua mais de uma superclasse e herde as caractersticas de todos os seus ancestrais.
Possibilita a mesclagem de informaes de duas ou mais classes. Perda de simplicidade conceitual e de implementao.

111

112

TMO Tcnica de Modelagem de Objetos

TMO Tcnica de Modelagem de Objetos


Uma soluo para a herana mltipla apresentada elevar o veculo anfbio para o mesmo nvel de veculo terrestre e Veculo aqutico, tornando-se uma outra especializao de veculo.

Uma caracterstica proveniente da mesma classe ancestral encontrada em mais de um caminho herdada apenas uma vez. 113

114

TMO Tcnica de Modelagem de Objetos

TMO Mapeamentos
Mapeamento de classes: Cada classe d origem a uma tabela, onde cada atributo da classe corresponde uma coluna, e os valores dos atributos para cada objeto na classe correspondem a uma linha.

Polimorfismo: a possibilidade de uma mesma operao atuar de forma diferentes em classes diferentes.
Mover janela e Mover pea de xadrez

115

Deve-se tomar cuidado em definir uma chave primria.

116

TMO Mapeamentos
Figura 3.9

TMO Mapeamentos

Mapeamento de associaes N-M: Cada associao muitos para muitos deve ser mapeada em uma nova tabela . As chaves das tabelas das classes associadas transformase em atributos dessa nova tabela.

117

118

TMO Mapeamentos
Figura 3.10

TMO Mapeamentos
Mapeamento de associaes 1-N: Existem duas
implementaes: Caso 1: Transpe-se a chave primria da tabela correspondente classe 1 para a tabela correspondente classe muitos.

119

120

TMO Mapeamentos

TMO Mapeamentos
Mapeamento de associaes 1-N:
Caso 2: Cria-se uma tabela correspondente a associao, transpondo para ela as chaves das duas classes.

121

122

TMO Mapeamentos

Caso 1 x Caso 2
Mapeamento de associaes 1-N:
O primeiro caso apresenta uma tabela a menos o que significa menos espao ocupado, e maior rapidez no processamento de operaes que envolvam a associao. O segundo caso apresenta uma maior independncia dos dados. Lotes apresenta apenas seus dados prprios. Em caso de mudana estrutural no tipo de da associao, passando de Muitos para um para muitos para muitos, no requer nenhuma alterao estrutural nas tabelas.

123

124

TMO Mapeamentos
Mapeamento de associaes 1-1: Deve-se transpor a chave de uma tabela para a outra levando em considerao o bom senso para definir o sentido da transposio.

TMO Mapeamentos

125

126

TMO Mapeamentos

TMO Mapeamentos
Qual a melhor implementao?
O primeiro caso mais interessante pois todas as ocorrncias de IPTU possui um lote associado e como conseqncia no havero ocorrncias de valores vazios. No segundo caso, lotes da prefeitura por exemplo so isentos de IPTU e conseqentemente ocorrer valores vazios.

127

128

TMO Mapeamentos
Mapeamento de Generalizao e especializao
Existem trs implementaes: Caso 1 A classe de generalizao e as classes de especializao so mapeadas cada uma para uma tabela. A chave da tabela da classe de generalizao reproduzida nas tabelas das classes de especializao.

TMO Mapeamentos
Exemplo:

Utilizao de um ID compartilhado e a criao de uma coluna Tipo para identificao da tabela de especializao:

129

130

TMO Mapeamentos

TMO Mapeamentos
Mapeamento de Generalizao e especializao
Caso 2 Cada classe de especializao mapeada para uma tabela. A classe de generalizao eliminada e seus atributos so reproduzidos em cada tabela de especializao. Ocorre portanto uma redundncia dos dados pertencentes classe de generalizao.

131

132

TMO Mapeamentos

TMO Mapeamentos
Mapeamento de Generalizao e especializao
Caso 3 A classe de generalizao mapeada para uma tabela juntamente com os atributos das classes de especializao. Como existem atributos de uma classe de especializao que no pertence a outra do mesmo nvel, ocorrer incidncia de atributos nulos.

133

134

TMO Mapeamentos

TMO Mapeamentos
Qual a melhor soluo?
O primeiro caso apresenta uma abordagem padro, que a mais correta e extensiva logicamente. Por outro lado, envolve umj apresenta uma abordagem que O segundo caso nmero maior de tabelas, e a navegao das classes de generalizao para deve ser utilizada se as classes de especializao as classes de especializao pode e a classe de generalipossurem muitos atributos ser lenta. O terceiro caso apresenta uma abordagem menos zao tiver poucos atributos. Nestes casos a aplisatisfatria, porm ela pode ser til se existirem cao deve saber qual classe deve ser pesquisada! duas ou trs classes de generalizao com poucos atributos .

135

136

TMH Temporal hierarchische modell

Denominado hierrquico por conter agregaes e generalizaes. No h distino entre conjunto de valores e conjuntos de entidades. Ambos so CLASSES. Agregaes de atributos idntico ao MER. Particionamentos com fator tempo. Tanto conjunto de Entidades quanto conjunto de Valores so representados por ovais.

137

138

Outros modelos
Modelo semntico Modelo funcional Modelo infolgico Modelo de redes Modelo hierrquico

Linguagem de manipulao
(lgebra Relacional)

lgebra Relacional: Conceito: Linguagem procedural com a funo de manipular uma ou mais relaes tendo como resultado um outra relao. Grupos: Operaes de conjunto: Unio, Interseo, Diferena, Produto cartesiano. Operaes para as relaes: Seleo, Projeo, Juno, Diviso.
139

...

Operaes de Conjuntos Unio: O resultado T uma relao que contm todas as tuplas d duas relaes sem repeties
Fornecedor(F)
CF 12 17 12 20 17 NF ar ca ar bu ca CP 19 18 07 18 07

Interseo: O resultado T uma relao que contm apenas as tuplas que aparecem em F e G.
Fornecedor(F)
CF 12 17 12 20 17 NF ar ca ar bu ca CP 19 18 07 18 07

Pea(P)
NP 07 18 19 DP x y z

Fornecimento(G)
CF 12 17 NF ar ca CP 18 07

Pea(P)
NP 07 18 19 DP x y z

Fornecimento(G)
CF 12 17 NF ar ca CP 18 07

CF 12 17 12 20 17 12

NF ar ca ar bu ca ar

CP 19 18 07 18 07 18

T:unio(F&G)->

T:inter(F&G)->

CF 17

NF ca

CP 07

Operaes de Conjuntos
(lgebra Relacional) Diferena: O resultado T uma relao que contm apenas as tuplas que aparecem em F mas no em G.
Fornecedor(F)
CF 12 17 12 20 17 NF ar ca ar bu ca CP 19 18 07 18 07

Operaes de Conjuntos
(lgebra Relacional) Produto Cartesiano (X): O resultado T uma relao que contm todas as tuplas de G concatenadas com todas as tuplas de P.
Fornecedor(F) Pea(P)
NP 07 18 19 DP x y z

Fornecimento(G)
CF 12 17 NF ar ca CP 18 07

Pea(P)
NP 07 18 19 DP x y z

Fornecimento(G)
CF 12 17 NF ar ca CP 18 07

CF 12 17 12 20 17

NF ar ca ar bu ca

CP 19 18 07 18 07

CF

NF ar ar ar ca ca ca

CP 18 18 18 07 07 07

NP 07 18 19 07 18 19

DP x y z x y z

T:dif(F&G)->

CF 12 17 12 20

NF ar ca ar bu

CP 19 18 07 18

12

T:Prod(G&P)->

12 12 17 17 17

Operaes de Relaes
(lgebra Relacional) Selecionar (select ): O resultado T uma relao que contm um conjunto de tuplas que satisfazem uma condio. Sintaxe: <condio> (relao) ex.: cf=12(Fornecedor);
Fornecedor(F)
CF 12 17 12 20 17 NF ar ca ar bu ca CP 19 18 07 18 07

Operaes de Relaes
(lgebra Relacional) Projeo ( ): O resultado T uma relao que contm apenas os domnios indicados (atributos). Sintaxe: <lista de atributos> (relao) ex.: cf,cp(Fornecedor);
Fornecedor(F)
CF 12 17 12 20 17 NF ar ca ar bu ca CP 19 18 07 18 07

Pea(P)
NP 07 18 19 DP x y z

Fornecimento(G)
CF 12 17 NF ar ca CP 18 07

Pea(P)
NP 07 18 19 DP x y z

Fornecimento(G)
CF 12 17 NF ar ca CP 18 07

CF

CP 19 18 07 18 07

T ->

T ->

12 17 12 20 17

Operaes de Relaes
(lgebra Relacional) Juno (Join): O resultado T uma relao que contm concatenadas as tuplas G e P que satisfazem a comparao sobre os domnios indicados (CP e NP).
Fornecedor(F)
CF 12 17 12 20 17 NF ar ca ar bu ca CP 19 18 07 18 07

Operaes de Relaes
(lgebra Relacional) Diviso (divide): Cria uma nova relao atravs da tuplas de uma relao que so exatamente iguais as da outra relao. T=R/S

Pea(P)
NP 07 18 19 DP x y z

Fornecimento(G)
CF 12 17 NF ar ca CP 18 07

R
A a1 a2 a1 a1 a2 a1 a1 a1 B b1 b1 b2 b2 b1 b2 b2 b1 C c1 c1 c1 c2 c2 c3 c4 c5

S
C c1

a1 a2 a1

T
B b1 b1 b2

S
C c1 c2

a1 a2

T
B b2 b1

S
C c1 c2 c3 c4

a1

T
B b2

S
B C c1

T ->

CF 12 17

NF ar ca

CP 18 07

NP 18 07

DP y x

b1

?
A a1 a2

S
B b1 b2 C c1 c1

?
A a1

SQL
SQL (Structured Query Language) Padro de direito - ANSI 1986 (American National Standards Institute) Padro de fato - muito utilizada nos SGBDs

SQL
Oferece uma linguagem para acesso a objetos de dados, usando muito menos cdigo de programa do que uma linguagem de programao convencional.

Acesso Programado X SQL

Programa
Abrir arquivo Enquanto ( no for fim de arquivo )
{

SQL
update nome_da_tabela set nome_da_coluna = novo_valor where valor_da_coluna = valor
A declarao SQL representa muito mais facilmente um acesso do que uma linguagem de terceira gerao. Este nvel de abstrao to superior significa maior confiabilidade, facilidade de manuteno e cdigo muito mais legvel e compreensvel.

Enquanto ( registro em uso )


{

} {

tenta travar registro verifica timeout

Se ( timeout ) avisa ( problema de acesso) encerra

Ler registro Se valor da coluna = valor


{

Fechar arquivo.

Altere registro destravar registro

SQL Vantagens

SQL
Seja qual for a linguagem de programao usada podem ser feitas consultas SQL ao servidor. Ferramentas visuais fazem a interface entre as aplicaes e a base de dados. Muitas vezes o acesso ao banco fica transparente ao usurio do banco. Para elaborar uma consulta e armazena-la como uma stored procedure no SQL Server, necessrio escrever em Transact-SQL Linguagem de Consulta Estruturada.

No h a necessidade de declaraes explicitas de travamento o servidor gerencia o acesso. No h referncias localizao fsica dos dados o servidor traduz um nome lgico para um grupo associado de localizaes fsicas. No h especificaes de indexao ou estratgias de busca o servidor identifica o mtodo mais eficiente para a busca dos dados requisitados.

SQL
Uma declarao SQL quase sempre inclui ao menos um comando: um verbo indicando uma ao select insert update delete ...

SQL
Comandos em SQL usam palavras reservadas que tem um significado especial para o servidor. Ex: from diz ao servidor que segue uma lista de tabelas. where introduz uma lista de condies logicamente conectadas, especificando as linhas afetadas pela declarao. Quando submetido um comando SQL ao servidor, este analisado, otimizado, compilado e ento executado.

nico caso em que um comando no necessrio, na execuo de uma stored procedure

Criando tabelas:
O comando CREATE TABLE cria uma tabela nova, inicialmente vazia, no banco de dados atual. O usurio que executa o comando torna-se o dono da tabela. O nome da tabela deve ser diferente do nome de qualquer outra tabela, seqncia, ndice ou viso no mesmo esquema. Uma tabela no pode possuir mais de 1600 colunas (Na prtica, o limite efetivo menor, devido restrio do comprimento das tuplas). As clusulas opcionais de restrio especificam as restries (ou testes) que as linhas novas ou modificadas devem satisfazer para a operao de incluso ou de alterao ser completada. Uma restrio uma regra com nome: um objeto SQL que ajuda a definir conjuntos vlidos de valores, estabelecendo limites nos resultados das operaes de incluso, excluso e atualizao realizadas na tabela.

Parmetros:
[LOCAL] TEMPORARY ou [LOCAL] TEMP: Se for especificado, a tabela criada como uma tabela temporria. Tabelas temporrias so automaticamente eliminadas no final da sesso. Uma tabela permanente com o mesmo nome, caso exista, no ser visvel na sesso corrente enquanto a tabela temporria existir, a menos que seja referenciada por um nome qualificado pelo esquema. Todo ndice criado em tabela temporria tambm temporrio. NOME_DA_TABELA: O nome (opcionalmente qualificado pelo esquema) da tabela a ser criada. NOME_DA_COLUNA: O nome da coluna a ser criada na nova tabela. TIPO_DE_DADO: O tipo de dado da coluna.

Parmetros:
o dado da coluna em cuja definio est presente. O valor pode ser qualquer expresso (sub-consultas e referncias cruzadas para outras colunas da mesma tabela no so permitidas). O tipo de dado da expresso padro deve corresponder ao tipo de dado da coluna. A expresso utilizada em todas as operaes de incluso que no especificam valor para a coluna. No havendo valor padro para a coluna, ento NULL torna-se o valor padro.

Parmetros:
CONSTRAINT: Especifica restries para uma coluna ou para a tabela. Um nome opcional para a restrio da coluna ou da
tabela pode ser definido. Se no for especificado, o nome ser gerado pelo sistema.

DEFAULT : A clusula DEFAULT atribui um valor padro para

NOT NULL : Valores nulos no so permitidos na coluna. NULL : Valores nulos so permitidos na coluna. Este o padro. UNIQUE : A restrio UNIQUE especifica a regra onde um grupo de uma ou mais colunas distintas de uma tabela podem conter apenas valores nicos. O comportamento da restrio de unicidade para tabelas o mesmo da restrio de unicidade para colunas, porm com a capacidade adicional de abranger vrias colunas. PRIMARY KEY: A restrio de chave primria que a coluna, ou colunas, da tabela pode conter apenas valores nicos e no nulos. Tecnicamente a chave primria simplesmente uma combinao de unicidade (UNIQUE) com no nulo (NOT NULL),

INHERITS: Especifica uma lista de tabelas das quais a nova tabela herda, automaticamente, todas as colunas. Se o mesmo nome de coluna existir em mais de uma tabela ascendente um erro gerado, a menos que o tipo de dado das colunas seja o mesmo em todas as tabelas ascendentes. Se no houver conflito, ento as colunas duplicadas so mescladas para formar uma nica coluna da nova tabela.

Parmetros:
CONSTRAINT: CHECK : A clusula CHECK especifica restries de integridade, ou testes, que as linhas novas ou atualizadas devem atender para que uma operao de insero ou de atualizao complete. Cada restrio deve ser uma expresso que produza um resultado booleano. REFERENCES : A restrio REFERENCES especifica que um grupo de uma ou mais colunas da nova tabela deve conter somente valores correspondentes aos valores das colunas referenciadas coluna_referenciada da tabela referenciada tabela_referenciada. Se a coluna_referenciada for omitida, a chave primria da tabela_referenciada utilizada. As colunas referenciadas devem pertencer a uma restrio de chave primria ou de unicidade da tabela referenciada.

Parmetros:
CONSTRAINT: REFERENCES MATCH :Os valores adicionados a estas colunas so comparados com os valores das colunas referenciadas da tabela referenciada utilizando o tipo de comparao. ON DELETE : Especifica a ao a ser executada quando uma linha referenciada da tabela referenciada excluda. ON UPDATE : Especifica a ao a ser executada quando uma coluna referenciada da tabela referenciada muda de valor.

NO ACTION ; CASCADE ; SET NULL ; SET DEFAULT

Parmetros:
CONSTRAINT: DEFERRABLE ou NOT DEFERRABLE : Estas clusulas controlam se as restries podem ser postergadas. Uma restrio que no pode ser postergada verificada imediatamente aps cada comando. A verificao das restries que so postergveis pode ser adiada para o final da transao INITIALLY IMMEDIATE ou INITIALLY DEFERRED : Se uma restrio postergvel, esta clusula especifica o momento padro para verificar a restrio.

SQL

Definio de dados

Criando tabelas
Create Table nome_tabela (column_name datatype [Not null | null])

create table carro ( placa int not null, nome varchar(30) not null constraint restrio1 primary key(placa) );

default Topic,

create table motorista ( cnh int nome varchar(30) primary key(cnh) );

SQL
not null, not null,

Definio de dados

create table rota ( cod char(6) not null, nome varchar(30) not null, cnh int not null, placa int not null, constraint restrio1 primary key(cod) constraint restrio2 foreign key (cnh) references motorista (cnh) constraint restrio3 foreign key (placa) references carro(placa) );

create table escola ( cod char(6) not null, nome varchar(30) not null, bairro varchar(30), rota char(6), constraint restrio1 primary key(cod), constraint restrio2 foreign key (rota) references rota (cod) constraint restrio3 Unique (nome) );

SQL

Definio de dados

SQL

Definio de dados

create table aluno ( rg char(12) not null, nome varchar(30) not null, escola varchar(30) not null, constraint restrio3 primary key(rg), constraint restrio4 foreign key (escola) references escola (cod) on delete set null [ou set default] on update cascade );

Diagnsticos : CREATE TABLE Mensagem retornada se a tabela for criada com sucesso. ERROR Mensagem retornada se a criao da tabela falhar. Esta mensagem normalmente acompanhada por algum texto descritivo, como: ERROR: Relation 'nome_da_tabela' already exists, que ocorre quando a tabela especificada existe no banco de dados. create

SQL

Consultas (select/from)
Select lista_atributos From tabela O nome e bairro da tabela aluno Select aluno.nome, aluno.bairro From aluno

Definio de dados

aluno:{cod,nome,bairro,rua,cep,tel}
Nome Paula Marta Joao Suzana Bairro Brotas Pituba P. Flamengo Brotas

Alterando tabelas
Alter table nome_tabela add column_name datatype null])

alter table aluno add idade int null alter table aluno drop idade cascade (restrict) alter table carro alter nome drop default alter table carro alter nome set default Kombi alter table aluno drop constraint restrio3

O bairro, cod e nome da tabela aluno Select aluno.bairro, aluno.cod, aluno.nome From aluno

Bairro Brotas Pituba P. Flamengo Brotas

Cod 1 9 3 5

Nome Paula Marta Joao Suzana

O nome de todos os bairros dos alunos cadastrados Select distinct aluno.bairro as bairros From aluno

Bairro Brotas Pituba P. Flamengo

SQL

Manipulao dos dados/consula

SQL

Manipulao dos dados

Consultas (select/from/where)
Qualificaes no comando Where: Operaes de comparao (=,>,<)

Select lista_atributos From tabela Where condio

Consultas

(select/from/where) Operadores de comparao:


= > < >= <= != <> !> !< igual a maior que menor que maior que ou igual a menor que ou igual a diferente diferente no maior que no menor que

Faixas (BETWEEN e NOT BETWEEN) Correspondncia de caracteres (LIKE e Not LIKE) Valores desconhecidos (IS NULL e IS NOT NULL) Listas (IN e NOT IN) Combinaes dos acima (AND, OR) OBS: NOT pode negar qualquer expresso booleana e chaves como LIKE, NULL, BETWEEN e IN

SQL

Consultas (select/from/where) - Faixas


BETWEEN - Chave usada para especificar uma faixa inclusiva; os valores extremos da faixa tambm so includos na busca. NOT BETWEEN - Chave que exclui os valores extremos especificados na faixa. O cod, nome e bairro da tabela aluno com os cod entre 1 e 6 Select aluno.cod,aluno.nome, aluno.bairro From aluno where cod between 1 and 6

Manipulao dos dados

Consultas

(select/from/where) Operadores de comparao:


<> equivalente a != !< equivalente a >= Ao comparar datas, usa-se < para significar antes e > para depois. Usa-se aspas duplas ou simples em torno dos dados do tipo char, varchar e datetime Letras minsculas so maiores que letras maisculas, letras maisculas so maiores que nmeros.

O cod, nome e bairro da tabela aluno com os cod fora do intervalo

entre 1 e 6

Select aluno.cod,aluno.nome, aluno.bairro From aluno where cod not between 1 and 6

SQL
Consultas (select/from/where) - Correspondentes
A chave LIKE Usada para selecionar linhas que contenham campos que correspondem a pores especificadas de uma serie de caracteres (string de caracteres). Utilizada apenas com dados do tipo char, varchar e datetime. Pode usar curingas. a % qualquer string com nenhum ou mais caracteres a _ um nico caracter. a [] um nico caracter na faixa especificada. a [^] um nico caracter fora da faixa especificada. Obs.: Inclua os curingas e a string de caracteres entre aspas simples ou duplas.

Consultas (select/from/where) - A chave LIKE


Nome e bairro da tabela aluno dos nomes comeando com a letra P Select aluno.nome, aluno.bairro From aluno where aluno.nome like P%
Nome Paula Bairro Brotas

Nome e bairro da tabela aluno dos nomes comeando com as letras

Ma e de 3 caracteres.

Select aluno.nome, aluno.bairro From aluno where aluno.cod like Ma_


Nome Mai Bairro Itaigara

Consultas (select/from/where) - A chave LIKE


O nome e bairro da tabela aluno dos nomes comeando com qualquer

Consultas (select/from/where) - Listas

A chave IN - Permite ao usuario selecionar valores que correspondam a qualquer um de uma lista de valores.

letra entre P e M, inclusive.

O cod, nome e bairro da tabela aluno dos alunos com

cdigos 1 e 2

Select aluno.nome, aluno.bairro From aluno where aluno.cod like [M-P] %

Nome Paula Marta Monica

Bairro Brotas Costa Azul Pituba

Select aluno.cod,aluno.nome, aluno.bairro From aluno where aluno.cod in (1,2)


Cod 1 2 Nome Paula Joao Bairro Brotas P. Flamengo

O nome e bairro da tabela aluno dos nomes comeando com qualquer

letra entre P e M, inclusive e com o nome com 5 caracteres.


Select aluno.nome, aluno.bairro From aluno where aluno.cod like [M-P] _ _ _ _

Nome e bairro da tabela aluno dos alunos que no possuem os

cdigos 1 e 2

Select aluno.nome, aluno.bairro From aluno where aluno.cod not in (1,2)


Cod 4 6 Nome Marta Julio Bairro Piata C. Azul

Consultas (select/from/where) - Condicoes de conexao


Condicoes de conexao com operadores logicos (AND/OR)

Consultas (select/from/where) - Condicoes de conexao


Condicoes de conexao com operadores logicos (AND/OR) bOR - Agrupa duas ou mais condicoes - Retorna resultados quando qualquer das condies so verdadeiras. O cod, nome da tabela aluno dos alunos com cdigos 1 ou nome Joao Select aluno.cod,aluno.nome, aluno.bairro From aluno where aluno.cod =1 or aluno.nome = Joao

bAND - Agrupa duas ou mais condicoes - Retorna resultados apenas quando todas as condies so verdadeiras. O cod e nome da tabela aluno dos alunos com cdigos

menor que 5 e nome Paula

Select aluno.cod,aluno.nome, aluno.bairro From aluno where aluno.cod < 5 and aluno.nome = Paula

Cod

Nome Paula Joao

Cod 1

Nome Paula

1 2

Consultas (select/from/where) - Renomeando Colunas


O usurio pode estabelecer um outro nome para ser utilizado na sada da declarao select, ao invs do nome da coluna. Sintaxe select <cabealho_da_coluna as nome_da_coluna> Select aluno.nome as Nome do Aluno From aluno
Nome do Aluno

Expresses numricas
Operadores Aritmticos adio subtrao multiplicao diviso + * / Podem ser utilizados em qualquer coluna numrica. Usados em qualquer comando que permita expresso.

Paula Fabiana

String de caracteres em resultados Select nome do aluno, aluno.nome, bairro, aluno.bairro From aluno
Nome nome do aluno nome do aluno Marta Julio bairro bairro Bairro Piata C. Azul

Adio Select cod, nome, qtd+10 From produto Subtrao Select cod, nome, qtd-10 From produto

Expresses numricas
Operadores Aritmticos Multiplicao Nome, sal da tabela funcionrio com aumento de 10% Select nome, sal*1.1 From funcionario

A funcao CONVERT

Converte expresses de um tipo de dados para outro; Usada na lista_de_seleo e no comando where; No se pode converter um expresso char que contem caracteres para uma inteira. Sintaxe: convert (tipo_de_dado, expresso)

Diviso Nome, horas da tabela funcionrio informando quantos dias de 8 horas de trabalho Select nome, horas/8 as Dias de trabalho From funcionario

Exemplo: Select id * 10 From produtos

erro !!

Exemplo: Select convert(int,id) * 10 From produtos

certo

Select / Order By
O comando Order By classifica os resultados da consulta (em ordem ascendente, caso nada seja especificado). Itens especificados em uma sentena order by no precisam aparecer na lista_de_seleo. Ao usar order by, nulos so listados primeiros. Sintaxe: select [distinct] lista_de_selecao from tabela [where condicoes_de_busca] [order by {coluna | expressao} [asc|desc]] Cod, nome da tabela produtos ordenado por categoria Select cod, nome From produtos order by categoria Cod, nome da tabela produtos ordenado por saldo decrescente Select cod, nome From produtos order by (saldo) desc

Funes de agregao
Funes de agregao, com exceo do count(*), ignoram valores nulos; sum e avg s funcionam com valores numricos; Apenas um linha e retornada (se uma sentena group by no tiver sido usada); No podem ser utilizadas num comando where; Podem ser aplicados a todas as linhas em uma tabela ou num grupo de uma tabela. Sintaxe simplificada: select nome_da_funo_agregada ([distinct] expresso) from nome_da_tabela [where ...condies]

Funcoes de agregacao - Max/Min Funcoes de agregacao - count


Count soma o numero de linhas que pertencem a condio estabelecida. Exemplos Determinar o numero de linhas da tabela Select count (*) From produto Numero de valores no nulos numa coluna Select count (cat ) From produtos Max encontra o maior valor. Maior preo da tabela produtos. select max(preco) from produtos

30,25

18

Min encontra o menor valor Menor preo da tabela produtos select min(preco) from produtos

16

1,00

Funes de agregao - SUM/AVG


Sum calcula a soma total dos valores na coluna especificada. Soma da coluna de horas do departamento inf select sum(horas) from empregados where dep = inf

Funes de agregao - Distinct


Opcional com sum, avg e count; No permitida com min, max e count (*); Permitida com count (nome_da_coluna); Usado apenas com nomes de colunas, no com expresses aritmticas Exemplos: Media dos preos dos produtos

9939

Avg calcula a media dos valores na coluna especificada. Media de preos da categoria 2 da tabela produtos select avg (preo) from produtos where cat = 2

Select avg (distinct preco) From produto Qtd de produtos diferentes Select count (distinct tipo) From produtos

23,40

select / group by
Divide os dados em grupos; Normalmente utilizada com uma funo de agregao na lista_de_seleo; Todos os valores nulos na coluna group by so tratados como um grupo; Sintaxe: select [distinct] lista_de_seleo from nome_da_tabela group by expresso Ex: Select tipo, avg(preco) From produtos ( sem group by ) Select tipo, avg(preco) From produtos group by tipo ( com group by )

SQL

Manipulao dos dados

select / group by / having


A sentena HAVING estabelece condies para a sentena group by; Sintaxe simplificada: select [distinct] lista_de_seleo from nome_da_tabela group by expresso having condies Valor da soma dos preos dos produtos quando ultrapassar R$ 20.000,00 Select tipo, sum(preco) From produtos Group by tipo having sum (preco) > R$20.000

Junes (continuao) Junes


Recupera dados de duas ou mais tabelas; Combina tabelas atravs da correspondncia de valores de linhas em cada tabela; Se o nome da coluna for ambguo, ou seja, se mais de uma coluna nas tabelas especificadas na declarao de origem (from) possurem o mesmo nome, o nome da coluna deve ser precedido por um nome de tabela; produtos fornecedor Pode-se utilizar tabelas do mesmo banco ou de banco diferentes; Colunas comparadas devem ter valores similares; Valores nulos no participam da operao de juno; As colunas na condio de juno no precisam estar na sentena de seleo. Campos nome e preo da tabela produtos, campo nome da tabela fornecedores para os fornecedores da Bahia Select p. nome, p.preo, f.nome From produtos p, fornecedor f Where p.codf = f.cod and f.end = Bahia produtos fornecedor

SQL

Manipulao dos dados

SQL

Manipulao dos dados

Subconsultas
Uma subconsulta uma declarao select, usada como uma expresso, como parte de outra declarao select, update, insert ou delete. A subconsulta (select aninhado) resolvida e depois os resultados so substitudos na consulta mais externa. Se a declarao where da consulta mais externa incluir o nome de uma coluna, esta dever ser compatvel para a juno (join), com a coluna nomeada na lista_de seleo da subconsulta (ou seja: mesmo domnio ).

Subconsultas
No utilize a clusula order by numa subconsulta Sempre que utilizar operadores de uma nica linha a subconsulta deve ser tambm de uma nica linha. Exemplo: Select cod From fornecedor where fornecedor.nome = bahia Select nome From produtos Select nome From produtos p where p.cod = ( select cod from fornecedores f where f.nome =bahia )

Subconsultas
O nome do motorista que passa na escola UFBA

Subconsultas
O nome dos motoristas que no possui rota

motoristas nome cnh

rotas cod cnh

escolas nome rota

motoristas nome cnh

rotas cod cnh

escolas nome rota

select motorista.nome from motorista where motorista.cnh in (select rota.cnh from rota, escola where escola.nome =UFBA" and rota.cod=escola.rota)

Nome Claudio Manoel

select motorista.nome from motorista where motorista.cnh not in (select rota.cnh from rota, escola where rota.cod=escola.rota)

Nome Joaquim Francisco

SQL

Insert
Insert into tabela(campos) values (valores) Insere um novo motorista com cnh e nome na tabela motorista.

Manipulao dos dados

Subconsultas
Escolas que possuem a soma de todas as idades menor que o aluno que possui maior idade. select escola, sum(idade) from aluno group by escola having sum(idade) < (select max(idade) from aluno) Insert into motorsita (cnh,nome) values (9477, Joana Nascimento)

Insere uma nova escola com cod, nome e bairro de uma tabela temporria. Insert into escola (cod,nome,bairro) select cod, nome, bairro from tempdb

possvel utilizar subconsultas dentro do FROM. select a.nome from (select * from aluno) a

Delete/Update
delete from tabela where condio Deleta um aluno. Delete from aluno where cpf=001 Deleta diversos alunos que esto numa determinada escola. Delete from aluno where aluno.escola in ( select cod from escola where nome like Teresa% ) Modifica o nome do aluno de cdigo 003. Update aluno set nome = Barbara Chaves where cod = 003 Aumenta 10% dos salario dos motoristas que esto em uma rota. Update motorista set salario = salario * 1.1 where cod in ( select distinct rota.motorista from rota )

SQL
Vises

Manipulao dos dados

Cria um viso com dados das tabelas aluno Create view dados_aluno as Select aluno.nome, aluno.cpf From aluno Cria um viso com dados das tabelas aluno, escola, rota. Create view dados_aluno_escola as Select aluno.nome, aluno.cpf, escola.nome, rota.nome From aluno, escola, rota Where rota.cod="pit1" and escola.rota=rota.cod and aluno.escola=escola.cod

You might also like