Vous êtes sur la page 1sur 195

Banco de Dados I

UNIDADE 1 1.1

INTRODUO AO BANCO DE DADOS ....................................................................................................... 3

INTRODUO ............................................................................................................................................................... 3 CONCEITOS E ARQUITETURAS - SGBD....................................................................................................... 4

UNIDADE 2 2.1 2.2 2.3 2.4 2.5

AS LINGUAGENS PARA MANIPULAO DE DADOS: .............................................................................................................. 4 CLASSIFICAO DOS SGBDS ........................................................................................................................................... 4 O MODELO DE REDE 3-3-1 ............................................................................................................................................ 4 O MODELO HIERRQUICO 3-3-2: ................................................................................................................................... 5 O MODELO RELACIONAL 3-3-3: ..................................................................................................................................... 5 MODELAGEM DE DADOS UTILIZANDO O MODELO ENTIDADE RELACIONAMENTO (ER) ........................... 8

UNIDADE 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8

ELEMENTOS DO MODELO ENTIDADE-RELACIONAMENTO ...................................................................................................... 8 TIPOS E INSTNCIAS DE RELACIONAMENTO: ..................................................................................................................... 10 RESUMO DOS OBJETOS GRFICOS:.................................................................................................................................. 14 MODELO ENTIDADE RELACIONAMENTO ESTENDIDO: ......................................................................................................... 15 ESPECIALIZAO ......................................................................................................................................................... 16 GENERALIZAO:........................................................................................................................................................ 17 LATTICE OU MLTIPLA HERANA: .............................................................................................................................. 19 DICAS PARA A ELABORAO DE UM DIAGRAMA E-R: .......................................................................................................... 20 O MODELO RELACIONAL ........................................................................................................................ 22

UNIDADE 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8

O MODELO RELACIONAL .............................................................................................................................................. 22 DOMNIOS, TUPLAS, ATRIBUTOS E RELAES ................................................................................................................... 22 ATRIBUTO CHAVE DE UMA RELAO .............................................................................................................................. 23 CHAVE PRIMRIA ....................................................................................................................................................... 24 CHAVE CANDIDATA ..................................................................................................................................................... 25 CHAVE ESTRANGEIRA .................................................................................................................................................. 25 MAPEAMENTO DO MODELO ENTIDADE RELACIONAMENTO PARA O MODELO RELACIONAL ....................................................... 25 NORMALIZAO DE DADOS .......................................................................................................................................... 29 SQL (STRUCTURED QUERY LANGUAGE) .................................................................................................. 33

UNIDADE 5 5.1 5.2 5.3 5.4 5.5 5.6

INTRODUO ............................................................................................................................................................. 33 DML (DATA MANIPULATION LANGUAGE): ...................................................................................................................... 33 DCL (DATA CONTROL LANGUAGE): ............................................................................................................................... 33 TIPOS DE DADOS: ....................................................................................................................................................... 34 EXPRESSES E OPERADORES: ........................................................................................................................................ 34 TIPOS DE OPERADORES ................................................................................................................................................ 35 CRIAO DE TABELAS............................................................................................................................. 37

UNIDADE 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10

TUTORIAL:................................................................................................................................................................. 37 CRIANDO TABELAS ...................................................................................................................................................... 37 PARMETROS DE CAMPOS NA CRIAO DE TABELAS: ........................................................................................................ 38 VALORES NULOS ........................................................................................................................................................ 38 CHAVE PRIMRIA ....................................................................................................................................................... 38 CHAVE ESTRANGEIRA: ................................................................................................................................................. 39 INTEGRIDADE REFERENCIAL: ......................................................................................................................................... 39 ON UPDATE: ........................................................................................................................................................... 39 ON DELETE: ............................................................................................................................................................ 40 REMOVENDO TABELAS................................................................................................................................................. 41 COMANDOS PARA ALTERAR TABELAS .................................................................................................... 42

UNIDADE 7 7.1

ALTERAO DE TABELAS CRIADAS .................................................................................................................................. 42

7.2 7.3 7.4 7.5

ADICIONAR COLUNAS A UMA TABELA ADD ................................................................................................................... 42 REMOVER COLUNAS DE UMA TABELA DROP ................................................................................................................. 42 RENOMEANDO COLUNAS DE UMA TABELA RENAME ..................................................................................................... 42 MODIFICANDO COLUNAS DE UMA TABELA MODIFY ...................................................................................................... 43 MODIFICANDO DADOS ........................................................................................................................... 44

UNIDADE 8 8.1 8.2 8.3 8.4

INSERINDO DADOS ...................................................................................................................................................... 44 INSERINDO DADOS POR MEIO DE UM SELECT .................................................................................................................. 44 EXCLUINDO INFORMAES ........................................................................................................................................... 45 ATUALIZANDO DADOS DE UMA TABELA............................................................................................................................ 45 CONSULTA EM UMA NICA TABELA SQL ................................................................................................ 47

UNIDADE 9 9.1 9.2 9.3 9.4 9.5

SINTAXE BSICA DE CONSULTAS SQL ............................................................................................................................. 47 EXEMPLOS DE CONSULTAS SQL ..................................................................................................................................... 47 SELEO DE TODOS OS REGISTROS COM COLUNAS ESPECFICAS ........................................................................................... 47 REDEFININDO O NOME DAS COLUNAS ............................................................................................................................ 48 SELEO DE REGISTROS COM EXIBIO DE STRINGS .......................................................................................................... 49 UNIDADE 10: FUNES COM STRINGS ............................................................................................... 51

UNIDADE 10 10.1 10.2 10.3 10.4

FUNES COM STRINGS ............................................................................................................................................... 51 SINTAXE DA FUNO DE CONCATENAO DE STRINGS ....................................................................................................... 51 CONTROLE DE MAISCULAS E MINSCULAS .................................................................................................................... 51 SEGMENTANDO UMA STRING ........................................................................................................................................ 52 CRITRIOS DE CONSULTA CLUSULA WHERE .................................................................................. 54

UNIDADE 11 11.1 11.2 11.3 11.4

CLUSULA WHERE ...................................................................................................................................................... 54 CONSULTAS SIMPLES COM CLUSULA WHERE .................................................................................................................. 55 SELECIONANDO DADOS NO REPETIDOS ......................................................................................................................... 56 SELECIONANDO ALGUNS DADOS..................................................................................................................................... 57 PREDICADOS ...................................................................................................................................... 60

UNIDADE 12 12.1 12.2 12.3 12.4 12.5

PREDICADOS LIKE E NOT LIKE: .................................................................................................................................... 60 PREDICADOS BETWEEN... AND E NOT BETWEEN... AND ............................................................................................ 61 PREDICADOS IN E NOT IN:......................................................................................................................................... 61 PREDICADO IS NULL E IS NOT NULL ............................................................................................................................ 62 SELEO COM OPERADORES LGICOS ............................................................................................................................ 63 FUNES DE AGRUPAMENTO E ORDENAO .................................................................................... 64

UNIDADE 13 13.1 13.2 13.3 13.4 13.5

OBTENDO INFORMAES ESTATSTICAS .......................................................................................................................... 64 AGRUPAMENTO UTILIZANDO GROUP BY: ...................................................................................................................... 65 UTILIZANDO WHERE E GROUP BY: ............................................................................................................................. 65 SELEO DE REGISTROS COM AGRUPAMENTO PELA CLUSULA GROUP BY E HAVING: .......................................................... 66 ORDENAO DAS CONSULTAS ....................................................................................................................................... 66 CONSULTAS EM MLTIPLAS TABELAS ................................................................................................ 68

UNIDADE 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9

CONSULTAS EM MLTIPLAS TABELAS ............................................................................................................................. 68 JOIN ......................................................................................................................................................................... 68 EQUIJOIN JOIN DE IGUALDADE .................................................................................................................................... 69 EXERCCIOS SUGERIDOS ............................................................................................................................................... 70 EQUIJOINS E OPERADORES LGICOS: .............................................................................................................................. 70 EQUIJOINS ENTRE MAIS DE DUAS TABELAS ........................................................................................................................ 71 REDEFINIO DO NOME DE TABELAS .............................................................................................................................. 71 OUTROS TIPOS DE JOINS - OUTER JOINS.......................................................................................................................... 71 OUTROS TIPOS DE JOINS - SELF JOINS ............................................................................................................................. 72

UNIDADE 15 15.1 15.2

TRABALHANDO COM DATAS .............................................................................................................. 75

DATAS EM MYSQL ..................................................................................................................................................... 75 RECUPERANDO INFORMAES ESPECFICAS DE DATA......................................................................................................... 75 EXERCCIOS EXTRAS ........................................................................................................................... 76 PROJETO FINAL - REVISO ................................................................................................................. 80 PRINCIPAIS BANCOS DE DADOS ......................................................................................................... 81 MICROSOFT ACCESS ........................................................................................................................... 82

UNIDADE 16 UNIDADE 17 UNIDADE 18 UNIDADE 19 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9

INTRODUO ............................................................................................................................................................. 82 ARQUIVOS DE BANCO DE DADOS DO ACCESS ........................................................................................................ 82 INICIANDO O ACCESS ............................................................................................................................................. 86 PRIMEIROS CONTATOS .......................................................................................................................................... 86 MENUS E BARRAS DE FERRAMENTAS .................................................................................................................... 87 JANELA BANCO DE DADOS ..................................................................................................................................... 88 CRIANDO UM NOVO BANCO DE DADOS ................................................................................................................ 91 ABRINDO UM BANCO DE DADOS ........................................................................................................................... 92 FECHANDO UM BANCO DE DADOS ........................................................................................................................ 93 TABELAS ............................................................................................................................................. 95

UNIDADE 20 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8

CRIANDO UMA NOVA TABELA ............................................................................................................................... 98 CRIAR UMA TABELA USANDO O ASSISTENTE DE TABELA ....................................................................................................... 98 CRIAR UMA TABELA INSERINDO DADOS EM UMA FOLHA DE DADOS ........................................................................................ 99 CRIAR UMA TABELA NO MODO DESIGN .......................................................................................................................... 100 TIPOS DE DADOS .................................................................................................................................................. 101 PROPRIEDADES DE CAMPOS ................................................................................................................................ 103 BARRA DE FERRAMENTAS DO MODO DESIGN DE TABELA ................................................................................... 104 EDITANDO DADOS NO MODO FOLHA DE DADOS................................................................................................. 105 RELACIONAMENTOS ........................................................................................................................ 109

UNIDADE 21 21.1 21.2 21.3

BANCO DE DADOS RELACIONAL ........................................................................................................................... 109 TIPOS DE RELACIONAMENTOS ............................................................................................................................. 109 DEFININDO OS RELACIONAMENTOS .................................................................................................................... 111 CONSULTAS...................................................................................................................................... 114

UNIDADE 22 22.1 22.2 22.3 22.4

O QUE SO AS CONSULTAS NO ACCESS ............................................................................................................... 114 CRIAR UMA CONSULTA USANDO O ASSISTENTE DE CONSULTA ............................................................................................ 114 CRIAR UMA CONSULTA USANDO O MODO DESGIN............................................................................................................ 115 TIPOS DE CONSULTAS .......................................................................................................................................... 118 FORMULRIOS ................................................................................................................................. 126

UNIDADE 23 23.1 23.2 23.3 23.4 23.5

O QUE SO FORMULRIOS? ................................................................................................................................ 126 CRIANDO UM NOVO FORMULRIO ..................................................................................................................... 127 CAIXA DE FERRAMENTAS ..................................................................................................................................... 130 SOBRE AS SEES DE UM FORMULRIO .............................................................................................................. 133 SUBFORMULRIOS .............................................................................................................................................. 135 RELATRIOS ..................................................................................................................................... 140

UNIDADE 24 24.1 24.2 24.3

O QUE SO RELATRIOS? .................................................................................................................................... 140 CRIANDO UM NOVO RELATRIO ......................................................................................................................... 141 CAIXA DE FERRAMENTAS ..................................................................................................................................... 144

UNIDADE 25 25.1 25.2

PGINA DE DADOS........................................................................................................................... 146

PARA CRIAR UMA PGINA DE ACESSO A DADOS ................................................................................................. 146 CRIAR UMA PGINA DE ACESSO .......................................................................................................................... 146 PERSONALIZAO E UTILITRIOS..................................................................................................... 152

UNIDADE 26 26.1 26.2 26.3 26.4

CONFIGURAES DE INICIALIZAO ................................................................................................................... 152 COMPACTANDO UM BANCO DE DADOS ......................................................................................................................... 153 REPARANDO UM BANCO DE DADOS .................................................................................................................... 154 PROTEGENDO UM APLICATIVO............................................................................................................................ 154 MYSQL ............................................................................................................................................. 157

UNIDADE 27 27.1

INTRODUO ........................................................................................................................................................... 157 O FRONT-END .................................................................................................................................. 158

UNIDADE 28 28.1

ALGUNS EXEMPLOS................................................................................................................................................... 158 CONECTANDO AO BANCO DE DADOS............................................................................................... 159

UNIDADE 29 29.1 29.2

ATRAVS DE LINGUAGENS DE PROGRAMAO ................................................................................................................ 159 ATRAVS DO FRONT-END ........................................................................................................................................... 160 CONHECENDO A INTERFACE ............................................................................................................. 163

UNIDADE 30 30.1 30.2 30.3

PHPMYADMIN ......................................................................................................................................................... 163

MYSQL QUERY BROWSER ......................................................................................................................................... 163 ACESSANDO UMA BASE DE DADOS ............................................................................................................................... 164 CRIANDO UMA NOVA BASE DE DADOS ............................................................................................ 166

UNIDADE 31 31.1

INTERFACE E COMANDO............................................................................................................................................. 166 CRIANDO TABELAS ........................................................................................................................... 167

UNIDADE 32 32.1

INTERFACE .............................................................................................................................................................. 167 CRIANDO CONSULTAS ...................................................................................................................... 170

UNIDADE 33 33.1

INTERFACE .............................................................................................................................................................. 170 SQL SERVER ...................................................................................................................................... 172

UNIDADE 34 34.1

INTRODUO ........................................................................................................................................................... 172 O FRONT-END .................................................................................................................................. 174

UNIDADE 35 35.1

FERRAMENTA NATIVA ................................................................................................................................................ 174 CONECTANDO AO BANCO DE DADOS............................................................................................... 175

UNIDADE 36 36.1 36.2

ATRAVS DE LINGUAGENS DE PROGRAMAO ................................................................................................................ 175 ATRAVS DO FRONT-END ........................................................................................................................................... 176 CONHECENDO A INTERFACE ............................................................................................................. 177

UNIDADE 37 37.1 37.2

APLICATIVO NATIVO .................................................................................................................................................. 177 ACESSANDO UMA BASE DE DADOS ............................................................................................................................... 177 CRIANDO UMA NOVA BASE DE DADOS ............................................................................................ 178

UNIDADE 38 38.1

INTERFACE E COMANDO............................................................................................................................................. 178 CRIANDO TABELAS ........................................................................................................................... 180

UNIDADE 39 39.1

INTERFACE .............................................................................................................................................................. 180

UNIDADE 40 40.1

CRIANDO CONSULTAS ...................................................................................................................... 181

INTERFACE .............................................................................................................................................................. 181 CONHECENDO XML .......................................................................................................................... 182

UNIDADE 41 41.1

INTRODUO ........................................................................................................................................................... 182 XML NO SQL SERVER ........................................................................................................................ 183

UNIDADE 42 42.1 42.2 42.3 42.4

CRIANDO COLUNAS DO TIPO XML ................................................................................................................................ 183 INSERINDO VALORES .................................................................................................................................................. 184 ATUALIZANDO VALORES ............................................................................................................................................. 185 DELETANDO VALORES ............................................................................................................................................... 189 TRABALHO FINAL ............................................................................................................................. 190

UNIDADE 43 43.1

SITUAO PROBLEMA ................................................................................................................................................ 190

Banco de Dados I

Unidade 1 - Introduo ao Banco de Dados


1.1 Introduo
A tecnologia aplicada aos mtodos de armazenamento de informaes vem crescendo e gerando um impacto cada vez maior no uso de computadores, em qualquer rea em que os mesmos podem ser aplicados. Um Banco de dados pode ser definido como um conjunto de dados devidamente relacionados. Por dados podemos compreender como fatos conhecidos que podem ser armazenados e que possuem um significado implcito. Porm, o significado do termo banco de dados mais restrito que simplesmente a definio dada acima. Um banco de dados possui as seguintes propriedades: Banco de dados uma coleo lgica coerente de dados com um significado inerente; uma disposio desordenada dos dados no pode ser referenciada como um banco de dados; Banco de dados projetado, construdo e populado com dados para um propsito especfico; um banco de dados possui um conjunto pr-definido de usurios e aplicaes; Banco de dados representa algum aspecto do mundo real, o qual chamado de minimundo; qualquer alterao efetuada no minimundo automaticamente refletida no banco de dados. Banco de dados pode ser criado e mantido por um conjunto de aplicaes desenvolvidas especialmente para esta tarefa ou por um Sistema Gerenciador de Banco de Dados (SGBD). Um SGBD permite aos usurios criarem e manipularem bancos de dados de propsito gerais. O conjunto formado por um banco de dados mais as aplicaes que manipulam o mesmo chamado de Sistema de Banco de Dados. Banco de Dados: uma coleo de dados inter-relacionados, representando informaes sobre um domnio especfico. Exemplos: lista telefnica, controle do acervo de uma biblioteca, sistema de controle dos recursos humanos de uma empresa. Sistema de Gerenciamento de Bancos de Dados (SGBD): um software com recursos especficos para facilitar a manipulao das informaes dos bancos de dados e o desenvolvimento de programas aplicativos.

Banco de Dados I

Unidade 2 - Conceitos e Arquiteturas - SGBD


2.1 As Linguagens para Manipulao de Dados:
Para a definio dos esquemas conceituais e internos pode-se utilizar uma linguagem chamada DDL (Data Definition Language - Linguagem de Definio de Dados). O SGBD possui um compilador DDL que permite a execuo das declaraes para identificar as descries dos esquemas e para armazen-las no catlogo do SGBD. A DDL utilizada em SGBDs onde a separao entre os nveis internos e conceituais no muito clara. Em um SGBD em que a separao entre os nveis conceitual e interno so bem claras, utilizado outra linguagem, a SDL (Storage Definition Language - Linguagem de Definio de Armazenamento) para a especificao do esquema interno. A especificao do esquema conceitual fica por conta da DDL. Em um SGBD que utiliza a arquitetura trs esquemas, necessria a utilizao de mais uma linguagem para a definio de vises, a VDL (Vision Definition Language - Linguagem de Definio de Vises). Uma vez que o esquema esteja compilado e o banco de dados esteja populado, usa-se uma linguagem para fazer a manipulao dos dados, a DML (Data Manipulation Language - Linguagem de Manipulao de Dados).

2.2 Classificao dos SGBDs


O principal critrio para se classificar um SGBD o modelo de dados no qual baseado. A grande maioria dos SGBDs contemporneos baseada no modelo relacional, alguns em modelos conceituais e alguns em modelos orientados a objetos. Outras classificaes so: Usurios: um SGBD pode ser monousurio, comumente utilizado em computadores pessoais ou multiusurios, utilizado em estaes de trabalho, minicomputadores e mquinas de grande porte; Localizao: um SGBD pode ser localizado ou distribudo; se ele for localizado, ento todos os dados estaro em uma mquina (ou em um nico disco) ou distribudo, onde os dados estaro distribudos por diversas mquinas (ou diversos discos); Ambiente: ambiente homogneo o ambiente composto por um nico SGBD e um ambiente heterogneo o ambiente composto por diferentes SGBDs.

2.3 O Modelo de Rede 3-3-1

Banco de Dados I

Os dados so representados por colees de registros e os relacionamentos por elos.

2.4 O Modelo Hierrquico 3-3-2:


Os dados e relacionamentos so representados por registros e ligaes, respectivamente. Os registros so organizados como colees arbitrrias de rvores.

2.5 O Modelo Relacional 3-3-3:

Banco de Dados I

Os meta dados so representados por tabelas, contendo linhas e colunas, onde so ligadas por colunas. Cada tabela contm uma ou mais colunas como identificadores.

Laboratrio Definir os seguintes termos: Sistema de bancos de dados: _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ Banco de dados _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ Sistema de gerenciamento de banco de dados _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ Quais as vantagens e desvantagens da utilizao de um sistema de banco de dados? _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________

Banco de Dados I

Descrever o modelo relacional de dados. _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ Definir os seguintes termos: Linguagem de definio de dados; _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ Linguagem de manipulao de dados. _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________

Banco de Dados I

Unidade 3 - Modelagem de Dados Utilizando o Modelo Entidade Relacionamento (ER)


3.1 Elementos do Modelo Entidade-Relacionamento
Este o modelo mais utilizado atualmente, devido principalmente, a sua simplicidade e eficincia. Baseiam-se na percepo do mundo real, que consiste em uma coleo de objetos bsicos, chamados entidades e em relacionamentos entre esses objetos. Para identificar um modelo relacional, utilizamos o Diagrama de Estrutura de Dados. Abaixo identificaremos todas as caractersticas do Modelo E-R Entidade: objeto do mundo real, concreto ou abstrato e que possui existncia independente. O objeto bsico tratado pelo modelo ER a entidade. Uma entidade pode ser concreta, como uma caneta ou uma pessoa, ou abstrata, como um conceito ou uma sensao. No banco de dados de uma empresa, por exemplo, so entidades: Funcionrio, cliente, Departamento, etc. Cada entidade representa objetos com as mesmas caractersticas. Um banco de dados, portanto, compreende uma coleo de conjuntos de entidades do mesmo tipo. O smbolo que representa a entidade no modelo E-R um retngulo como o nome da entidade escrito no seu interior, por exemplo:

FUNCIONARIO

Cada entidade possui um conjunto particular de propriedades que a descreve chamado atributos. Atributos: So propriedades (caractersticas) que identificam as entidades. Cada entidade possui uma coleo de elementos de dados. A cada atributo de uma entidade associado um domnio de valores. Esses domnios podem ser um conjunto de nmeros inteiros, nmeros reais, cadeias de caracteres ou qualquer outro tipo de valor que o atributo pode assumir. Os atributos so representados apenas pelo seu nome ligado entidade por uma linha reta, por exemplo:

FUNCIONRIO

Nome

Banco de Dados I

Podemos ter vrios tipos de atributos: simples, composto, multivalorado e determinante. Vejamos as caractersticas de cada um deles: Simples ou atmico: no possui qualquer caracterstica especial. Por exemplo, o nome Da empresa um atributo sem qualquer caracterstica especial.

EMPRESA

Nome

Composto: o seu contedo formado por itens menores. O contedo de um atributo composto pode ser dividido em vrios atributos simples.

Rua EMPRESA Endereo CEP Bairro

Multivalorado: o seu contedo pode ser formado por mais de uma informao. indicado colocando-se um asterisco procedendo ao nome do atributo, como no caso da empresa que pode possuir mais de um telefone. EMPRESA * Telefone

Determinante: o atributo determinante aquele que define univocamente as instncias de uma entidade, ou seja, nico para as instncias de uma entidade. indicado sublinhando-se o nome do atributo. No exemplo de uma empresa, o CNPJ um atributo determinante, pois no podem existir duas empresas com o mesmo valor nesse atributo. CNPJ

EMPRESA

Vejamos um exemplo no qual se aplicam os conceitos vistos at aqui: Uma empresa necessita armazenar os dados de seus funcionrios, atualmente em um fichrio. Os dados so a Matrcula, o Nome, o Endereo (Rua, CEP e Bairro), o Telefone (o funcionrio pode ter mais de um) e o cargo.

Banco de Dados I

Matrcula

Nome Rua EMPRESA Endereo CEP Bairro

* Telefone

Cargo

Laboratrio Identifique os atributos e o tipo do atributo nas seguintes entidades. CLIENTES - FUNCIONARIOS - EMPRESA - PRODUTOS

3.2 Tipos e Instncias de Relacionamento:


Alm de conhecer detalhadamente os tipos entidade, muito importante conhecer tambm os relacionamentos entre estes tipos entidades. Relacionamento: o tipo de ocorrncia existente entre entidades. O Smbolo que representa o relacionamento no modelo E-R um losango com o nome do relacionamento escrito no seu interior, como no exemplo a seguir:

Pertence

Existem trs tipos de relacionamentos entre entidades: um-para-um, um-para-vrios e vrios-paravrios. Um-Para-Um: quando uma entidade de A se relaciona com uma entidade de B. Como exemplo, podemos citar uma empresa que dividida em departamentos e em cada departamento possui um nico gerente e um funcionrio-gerente s pode chefiar um nico departamento.

10

Banco de Dados I

A
Funcionrio e1 e2 e3 e4 e5 e6 e7

Gerencia

B
Departamento

d1 d2 d3

1:1

Funcionrio

chefia

Departamento

Este um caso particular, pois outra empresa poderia ter o mesmo gerente chefiando vrios departamentos. Vale lembrar que os modelos de dados so utilizados num determinado contexto. Muda-se o contexto, muda-se tambm o modelo de dados. Um-para-Vrios: quando cada entidade de (A) pode se relacionar com uma ou mais entidades de B. Quando se quer dizer uma ou mais de uma entidade, utiliza-se a letra N. No exemplo, uma empresa dividida em departamentos, um funcionrio s pode ser alocado em um nico departamento, porm num departamento podem trabalhar vrios funcionrios. A
Funcionrio Trabalha Para

B
Departamento

e1 e2 e3 e4 e5 e6 e7

d1 d2 d3

N:1

Funcionrio

Trabalha para

Departamento

Esta representao acaba resultando num relacionamento 1: N invertido.

11

Banco de Dados I

Vrios-para-vrios: quando vrias (N) entidade de A se relacionam com vrias(M) entidade de B. Exemplo para esse tipo de relacionamento o que ocorre entre um funcionrio e os projetos de uma empresa. Um funcionrio pode trabalhar em vrios projetos, e um projeto pode ser executado por mais de um funcionrio. A B Trabalha Em
Funcionrio e1 e2 e3 e4 Projeto

p1 p2 p3

N:M

Funcionrio

Trabalha em

M 1

Projeto

Cardinalidade: define o nmero mximo de ocorrncias em um relacionamento Para se determinar a cardinalidade, deve-se fazer a pergunta relativa ao relacionamento em ambas as direes. No exemplo a seguir, temos: 1 Departamento (1:N) N Funcionrio (1:1)

possui

- Um departamento possui quantos funcionrios? No mnimo 1 e no mximo N. - Um funcionrio est alocado em quantos departamentos? Em no mnimo 1 e no mximo 1. No primeiro caso a cardinalidade N, e no segundo 1. Somando-se as cardinalidade, definimos o resultado final do relacionamento, observado nos modelos de dados (no caso 1: N). Dois relacionamentos: uma entidade pode ter mais de um relacionamento com a outra entidade. A entidade departamento, por exemplo, pode ter uma relao de locao e outra de gerncia com a entidade Funcionrio. Nesse caso, existem dois relacionamentos entre as entidades.

12

Banco de Dados I

gerncia 1 Funcionrio 1 locao Traduzindo o diagrama temos: - cada departamento da empresa possui vrios (N) funcionrios lotados nele. - um departamento possui um nico funcionrio que ocupa o cargo de gerente. Grau de um Relacionamento: O grau de um tipo relacionamento o nmero de tipos entidade que participam do tipo relacionamento. O grau de um relacionamento ilimitado, porm, a partir do grau trs (ternrio), a compreenso e a dificuldade de se desenvolver a relao corretamente se tornam extremamente complexas. Relacionamento Ternrio: alguns relacionamentos precisam ligar 3 entidades, como no exemplo que se segue. Numa indstria, um fornecedor pode fornecer vrias peas para vrios projetos. Um projeto pode ter vrios fornecedores para vrias peas. E uma pea pode ter vrios fornecedores para vrios projetos. N Fornecedor M 1 1 N Departamento

PFPj

Pea

Projeto Auto relacionamento: uma entidade pode se relacionar com ela mesma. Observe o exemplo: Numa empresa, um funcionrio pode chefiar vrios funcionrios, porm ele tambm um funcionrio. Chefia N Funcionrio 1

Entidade Dependente: uma entidade pode ter sua existncia vinculada existncia de outra entidade.

13

Banco de Dados I

Uma empresa necessita armazenar os dados dos dependentes menores dos funcionrios. A entidade Dependente s existe porque existe a entidade Funcionrio

1 Funcionrio Possui

N Dependente

O smbolo que representa a entidade dependente um retngulo dentro de outro retngulo, com o nome da entidade escrito no seu interior. Relacionamento -Um (Generalizao/Especializao): ocorre quando uma entidade com seus atributos englobam entidades especializadas com seus atributos especficos. No esquema a seguir, a entidade Cliente engloba seus atributos e tambm os atributos especficos da entidade Pessoa Fsica, assim como os de Pessoa Jurdica.

Cliente

Pessoa Fsica

Pessoa Jurdica

3.3 Resumo dos objetos grficos:


O diagrama Entidade Relacionamento composto por um conjunto de objetos grficos que visa representar todos os objetos do modelo Entidade Relacionamento tais como entidades, atributos, atributos chaves, relacionamentos, restries estruturais, etc. O diagrama ER fornece uma viso lgica do banco de dados, fornecendo um conceito mais generalizado de como esto estruturados os dados de um sistema. Os objetos que compem o diagrama ER esto listados a seguir,
ENTIDADE ATRIBUTO ATRIBUTO CHAVE ENTIDADE FRACA * ATRIBUTO MULTIVALORADO ATRIBUTO COMPOSTO RELACIONAMENT O

14

Banco de Dados I

E1

E2

E1

E2

E1

N 1

E2

Taxa de Cardinalidade 1:1 para E1:E2 em R

Taxa de Cardinalidade 1:N para E1:E2 em R

Taxa de Cardinalidade N:M para E1:E2 em R

Figura - Objetos que Compem o Diagrama ER

3.4 Modelo Entidade Relacionamento Estendido:


Os conceitos do modelo Entidade Relacionamento discutidos anteriormente so suficientes para representar logicamente a maioria das aplicaes de banco de dados. Porm, com o surgimento de novas aplicaes, surgiu tambm a necessidade de novas semnticas para a modelagem de informaes mais complexas. O modelo Entidade Relacionamento Estendido (ERE) visa fornecer esta semntica para permitir a representao de informaes complexas. importante frisar que embora o modelo ERE trate classes e subclasses, ele no possui a mesma semntica de um modelo orientado a objetos. O modelo ERE engloba todos os conceitos do modelo ER mais os conceitos de subclasse, superclasse, generalizao e especializao e o conceito de herana de atributos. Subclasses, Superclasses e Especializaes: O primeiro conceito do modelo ERE que ser abordado o de subclasse de um tipo entidade. Como visto anteriormente, um tipo entidade utilizado para representar um conjunto de entidades do mesmo tipo. Em muitos casos, um tipo entidade possui diversos subgrupos adicionais de entidades que so significativas e precisam ser representadas explicitamente devido ao seu significado aplicao de banco de dados. Leve em considerao o seguinte exemplo: Para um banco de dados de uma empresa temos o tipo entidade empregado, o qual possui as seguintes caractersticas: nome, RG, CIC, nmero funcional, endereo completo (rua, nmero, complemento, CEP, bairro, cidade), sexo, data de nascimento e telefone (DDD e nmero); caso o (a) funcionrio (a) seja um (a) engenheiro (a), ento se deseja armazenar as seguintes informaes: nmero do CREA e especialidade (Civil, Mecnico, Eletro/Eletrnico); caso o (a) funcionrio (a) seja um (a) secretrio (a), ento se deseja armazenar as seguintes informaes: qualificao (bi ou tri lngua) e os idiomas no qual possui fluncia verbal e escrita. Se as informaes nmero do CREA, especialidade, tipo e idiomas forem representadas diretamente no tipo entidade empregado estaremos representando informaes de um conjunto limitados de entidades empregado para os todos os funcionrios da empresa. Neste caso, podemos criar duas subclasses do tipo entidade empregado: engenheiro e secretria, as quais iro conter as informaes acima citadas. Alm disto, engenheiro e secretria podem ter relacionamentos especficos. Uma entidade no pode existir meramente como componente de uma subclasse. Antes de ser componente de uma subclasse, uma entidade deve ser componente de uma superclasse.

15

Banco de Dados I

Isto leva ao conceito de herana de atributos; ou seja, a subclasse herda todos os atributos da superclasse. Isto porque a entidade de subclasse representa as mesmas caractersticas de uma mesma entidade da superclasse. Uma subclasse pode herdar atributos de superclasses diferentes. A figura abaixo mostra a representao diagramtica do exemplo acima.

nome no. funcional

dt. nasc. sexo

rg

Empregado Funo d
qualificao endere o

No registro

especializao

Engenheiro

Secretria

idiomas

Figura - Representao de Superclasse e Subclasses

3.5 Especializao
Especializao o processo de definio de um conjunto de classes de um tipo entidade; este tipo entidade chamado de superclasse da especializao. O conjunto de subclasses formado baseado em alguma caracterstica que distingue as entidades entre si. No exemplo da figura 12, temos uma especializao, a qual pode chamar de funo. Veja agora no exemplo da figura 13, temos a entidade empregado e duas especializaes.

Empregado Funo d

Categoria Salarial d

Engenheiro

Secretria

Horista

Mensalista

16

Banco de Dados I

Figura - Duas Especializaes para Empregado: Funo e Categoria Como visto anteriormente, uma subclasse pode ter relacionamentos especficos com outras entidades ou com a prpria entidade que a sua superclasse. Veja o exemplo da figura 14.

N Projeto liderado desenvolvid o por Funo N 1 lidera d Empregado

N Engenheiro participa Secretria

Figura - Relacionamentos Entre Subclasses e Entidades O processo de especializao nos permite: Definir um conjunto de subclasses de um tipo entidade; Associar atributos especficos adicionais para cada subclasse; Estabelecer tipos relacionamentos especficos entre subclasses e outros tipos entidades.

3.6 Generalizao:
A generalizao pode ser pensada como um processo de abstrao reverso ao da especializao, no qual so suprimidas as diferenas entre diversos tipos entidades, identificando suas caractersticas comuns e generalizando estas entidades em uma superclasse.

no. funcional No registro

no. funcional

qualificao

especializao

Engenheiro

Secretria

idiomas

nome

rg

nome

rg

17

Banco de Dados I

Figura - Tipos Entidades Engenheiro e Secretria

nome no. funcional

rg

Empregado

d
qualificao

n registro

especializao

Engenheiro

Funo

Secretria

idiomas

Figura - Generalizao Empregado para os Tipos Entidades Engenheiro e Secretria importante destacar que existe diferena semntica entre a especializao e a generalizao. Na especializao, podemos notar que a ligao entre a superclasse e as subclasses feita atravs de um trao simples, indicando participao parcial por parte da superclasse. Analisando o exemplo da figura 12, observado que um empregado no obrigado a ser um engenheiro ou uma secretria. Na generalizao, podemos notar que a ligao entre a superclasse e as subclasses feita atravs de um trao duplo, indicando participao total por parte da superclasse. Analisando o exemplo da figura 16, observado que um empregado obrigado a ser um engenheiro ou uma secretria. A letra d dentro do crculo que especifica uma especializao ou uma generalizao significa disjuno. Uma disjuno em uma especializao ou generalizao indica que uma entidade do tipo entidade que representa a superclasse pode assumir apenas um papel dentro da mesma.

18

Banco de Dados I

Analisando o exemplo da figura 13 temos duas especializaes para a superclasse Empregado, as quais so restringidas atravs de uma disjuno. Neste caso, um empregado pode ser um engenheiro ou uma secretria e o mesmo pode ser horista ou mensalista. Alm da disjuno podemos ter um overlap, representado pela letra o. No caso do overlap, uma entidade de uma superclasse pode ser membro de mais que uma subclasse em uma especializao ou generalizao. Analise a generalizao no exemplo da figura 17. Suponha que uma pea fabricada em uma tornearia pode ser manufaturada ou torneada ou ainda, pode ter sido manufaturada e torneada.

no. da pea

Descri o

Pea

o
Data Ordem Servio No. Projeto

Manufaturada

Torneada

Preo

Figura - Uma Generalizao com Overlap

3.7 Lattice ou Mltipla Herana:


Uma subclasse pode ser definida atravs de um lattice, ou mltipla herana, ou seja, ela pode ter diversas superclasses, herdando caractersticas de todas. Leve em considerao o seguinte exemplo: Uma construtora possui diversos funcionrios, os quais podem ser engenheiros ou secretrias. Um funcionrio pode tambm ser assalariado ou horista. Todo gerente de departamento da construtora deve ser um engenheiro e assalariado.

Empregado Funo d Categoria Salarial d

19
Secretaria Engenheiro Mensalista Horista

Banco de Dados I

Figura 18 - Um Lattice com a Subclasse Gerente Compartilhada Neste caso ento, um gerente ser um funcionrio que alm de possuir as caractersticas prprias de Gerente, herdar as caractersticas de Engenheiro e de Mensalista.

3.8 Dicas para a elaborao de um diagrama E-R:


A presena de um substantivo usualmente indica uma entidade; A presena de um verbo uma forte indicao de um relacionamento; Um adjetivo, que uma qualidade, uma forte indicao de um atributo; Um advrbio temporal, qualificando o verbo, uma indicao de um atributo do relacionamento. Laboratrio Etapas 1) Construa um diagrama E-R para um hospital com um conjunto de pacientes e um conjunto de mdicos. Registros de diversos testes realizados so associados a cada paciente. 2) Construa um diagrama E-R para uma companhia de seguros de automveis com um conjunto de clientes, onde cada um possui certo nmero de carros. Cada carro tem um nmero de acidentes associados a ele. 3) Explique a diferena entre uma entidade (conjunto entidade) e uma ocorrncia (instncia) de uma entidade. 4) O que o papel de uma entidade em um relacionamento? Quando necessrio especific-lo? 5) Construa um diagrama ER em que o conceito de entidade associativa seja utilizado. 6) Mostre como o diagrama abaixo pode ser representado apenas por relacionamentos binrios.

20

Banco de Dados I

7) Modifique o diagrama abaixo para especificar o seguinte: a) Um curso no pode estar vazio, isto , deve possuir alguma disciplina em seu currculo. b) Um aluno, mesmo que no inscrito em nenhum curso, deve permanecer por algum tempo no banco de dados. c) Um aluno pode fazer mais de um curso. 8) Esboce o diagrama do exerccio anterior na notao de Peter Chen, especificando as cardinalidades mnimas e mximas (min. Max).

21

Banco de Dados I

Unidade 4 - O Modelo Relacional


4.1 O Modelo Relacional
Nesta unidade apresentado o modelo relacional de forma terica e a forma como o mesmo pode ser derivado do modelo Entidade-Relacionamento apresentado na unidade anterior. Assim, com o contedo visto na unidade anterior podemos modelar os dados de uma aplicao, atravs do modelo ER, e mape-los para o modelo relacional, de forma a implementar no banco de dados.

4.2 Domnios, Tuplas, Atributos e Relaes


Um domnio D um conjunto de valores atmicos, sendo que por atmico, podemos compreender que cada valor do domnio indivisvel. Durante a especificao do domnio importante destacar o tipo, o tamanho e a faixa do atributo que est sendo especificado. Por exemplo:

Coluna RG Nome Salrio

Tipo Numrico Caractere Numrico

Tamanho 10,0 30 5,2

Faixa 0300000025999999 a-z, A-Z 00100,0012999,99

Um esquema de relao R, denotado por R(A1, A2,..., An), onde cada atributo Ai o nome do papel desempenhado por um domnio D no esquema relao R, onde D chamado domnio de Ai e denotado por dom (Ai). O grau de uma relao R o nmero de atributos presentes em seu esquema de relao. A instncia r de um esquema relao denotado por r(R) um conjunto de n-tuplas: r = [t1, t2, ... , tn] onde os valores de [t1, t2, ... , tn] devem estar contidos no domnio D. O valor nulo tambm pode fazer parte do domnio de um atributo e representa um valor no conhecido para uma determinada tupla.

22

Banco de Dados I

4.3 Atributo Chave de uma Relao


Uma relao pode ser definida como um conjunto de tuplas distintas. Isto implica que a combinao dos valores dos atributos em uma tupla no pode se repetir na mesma tabela. Existir sempre um subconjunto de atributos em uma tabela que garantem que no haver valores repetidos para as diversas tuplas da mesma, garantindo que t1[SC] t2[SC]. SC chamada de superchave de um esquema de relao. Toda relao possui ao menos uma superchave - o conjunto de todos os seus atributos. Uma chave C de um esquema de relao R uma superchave de R com a propriedade adicional que removendo qualquer atributo A de K, resta ainda um conjunto de atributos K que no uma superchave de R. Uma chave uma superchave da qual no se pode extrair atributos. Por exemplo, o conjunto: (RA, Nome, Endereo) uma superchave para estudante, porm, no uma chave, pois se tirarmos o campo Endereo continuaremos a ter uma superchave. J o conjunto (Nome da Revista, Volume, No da Revista) uma superchave e uma chave, pois qualquer um dos atributos que retirarmos, deixar de ter uma superchave, ou seja, (Nome da Revista, Volume) no identifica uma nica tupla. Em outras palavras, uma superchave uma chave composta, ou seja, uma chave formada por mais que um atributo. Veja o exemplo abaixo:

Tabela DEPENDENTES RG Responsvel 10101010 10101010 20202020 20202020 Nome Dependente Jorge Luiz Fernanda ngelo Dt. Nascimento 27/12/86 18/11/79 14/02/69 10/02/95 Relao Filho Filho Cnjuge Filho Sexo Masculin o Masculin o Feminin o Masculin o

Quando uma relao possui mais que uma chave (no confundir com chave composta) - como, por exemplo, RG e CIC para empregados - cada uma destas chaves so chamadas de chaves candidatas. Uma destas chaves candidatas deve ser escolhida como chave primria. Uma chave estrangeira CE de uma tabela R1 em R2 ou vice-versa, especifica um relacionamento entre as tabelas R1 e R2.

23

Banco de Dados I

Tabela DEPARTAMENTO Nome Contabilidade Engenharia Civil Engenharia Mecnica Nmer o 1 2 3 RG Gerente 10101010 30303030 20202020

Tabela EMPREGADO Nome Joo Luiz Fernando Ricardo Jorge Renato RG 10101010 20202020 30303030 40404040 50505050 CIC 11111111 22222222 33333333 44444444 55555555 Depto. 1 2 2 2 3 RG Supervisor NULO 10101010 10101010 20202020 20202020 Salrio 3.000,00 2.500,00 2.300,00 4.200,00 1.300,00

4.4 Chave Primria


o atributo ou conjunto de atributos que identifica univocamente as tuplas (linhas) de uma tabela. Normalmente o atributo determinante no modelo E-R e, da mesma forma, sublinhado quando informado. Muitas vezes, precisamos criar um campo chave, mesmo que a tabela tenha atributos determinantes. Na tabela Fornecedor, criamos um campo determinante Cdigo, denominado, portanto, chave primria (PRIMARY KEY).

24

Banco de Dados I

4.5 Chave Candidata


qualquer conjunto de atributos que consegue satisfazer ao critrio de chave primria. Toda tabela tem pelo menos uma chave candidata. Quando existe mais de uma chave candidata, devese escolher para chave primria o campo que tenha a menor possibilidade de ter um valor nulo.

4.6 Chave Estrangeira


o atributo de uma tabela que chave primria de outra tabela. A chave estrangeira (FOREIGN KEY) utilizada sempre que uma entidade se relacionar com outra por meio de um relacionamento. Quando isso ocorre, o campo chave primria da tabela A chave estrangeira na tabela B, ou vice-versa, dependendo o tipo de cardinalidade dos relacionamentos.

4.7 Mapeamento do Modelo Entidade Relacionamento para o Modelo Relacional


O mapeamento do modelo entidade relacionamento para o Modelo Relacional segue oito passos bsicos, a saber: 1. Para cada entidade E no modelo ER criada uma tabela T1 no Modelo Relacional que inclua todos os atributos simples de E; para cada atributo composto, so inseridos apenas os componentes simples de cada um; um dos atributos chaves de E deve ser escolhida como a chave primria de T1;

Funcionrio Cdigo (PK) Nome Rua Numero CEP Bairro Data_nascimento CPF

25

Banco de Dados I

2. Para cada entidade fraca EF com entidade proprietria E no modelo ER, criada uma tabela T1 no Modelo Relacional incluindo todos os atributos simples de EF; para cada atributo composto, so inseridos apenas os componentes simples de cada um; a chave primria desta relao T1 ser composta pela chave parcial da entidade fraca EF mais a chave primria da entidade proprietria E;

Funcionrio Codigo Nome Rua Numero CEP Bairro Data_nascimento CPF

Dependente CodigoFuncionario (PK) CodigoDependente Nome Data_nascimento Tipo_parentesco

3. Para cada relacionamento regular com cardinalidade 1:1 entre entidades E1 e E2 que geraram as tabelas T1 e T2 respectivamente, devemos escolher a chave primria de uma das relaes (T1, T2)e inseri-la como chave estrangeira na outra relao; se um dos lados do relacionamento tiver participao total e outro parcial, ento interessante que a chave do lado com participao parcial seja inserida como chave estrangeira no lado que tem participao total;

Relacionamento Gerncia Funcionario Codigo Nome Rua Numero CEP Bairro Departamento Codigo CodigoFuncionario (PK) Nome

26

Banco de Dados I

4. Para cada relacionamento regular com cardinalidade 1: N entre entidades E1 e E2 respectivamente e que geraram as tabelas T1 e T2 respectivamente, deve-se inserir a chave primria de T1 como chave estrangeira em T2;

Relacionamento Trabalha Funcionario Codigo CodigoDepartamento (PK) Nome Rua Numero CEP Bairro 5. Para cada relacionamento regular com cardinalidade N: N entre entidades E1 e E2, cria-se uma nova tabela T1, contendo todos os atributos do relacionamento mais o atributo chave de E1 e o atributo chave de E2; a chave primria de T1 ser composta pelos atributos chave de E1 e E2; Funcionario Codigo Nome Rua Numero CEP Bairro 6. Para cada atributo multivalorado A1, cria-se uma tabela T1, contendo o atributo multivalorado A1, mais o atributo chave C da tabela que representa a entidade ou relacionamento que contm A1; a chave primria de T1 ser composta por A1 mais C; se A1 for composto, ento a tabela T1 dever conter todos os atributos de A1; Funcionario Codigo Telefone CodigoFuncionario (PK) FuncionarioProjeto CodigoFuncionario (PK) CodigoProjeto (PK) Projeto Codigo Nome Descrio Tempo_previsto Departamento Codigo Nome

27

Banco de Dados I

Nome Rua Numero CEP Bairro Data_nascimento CPF

CodigoTelefone DDD Numero Tipo

7. Para cada relacionamento n-rio, n > 2, cria-se uma tabela T1, contendo todos os atributos do relacionamento; a chave primria de T1 ser composta pelos atributos chaves das entidades participantes do relacionamento; 8. Converta cada especializao com m subclasses {S1, S2, ..., Sm} e superclasse SC, onde os atributos de SC so {c, a1, a2, ..., an} onde c a chave primria de SC, em tabelas utilizando uma das seguintes opes: 8.1. Crie uma tabela T para SC com os atributos A(T) = {c, a1, a2, ..., an} e chave C(T) = c; crie uma tabela Ti para cada subclasse Si , 1 i m, com os atributos A(Ti) = {c} A(Si), onde C(T) = c; 8.2. Crie uma tabela Ti para cada subclasse Si, 1 i m, com os atributos A(Ti) = A(Si) {c, a1, a2, ..., an} e C(Ti) = c; 8.3. Crie uma tabela T com os atributos A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm) {t} e C(T) = c, onde t um atributo tipo que indica a subclasse qual cada tupla pertence, caso isto venha a ocorrer; 8.4. Crie uma tabela T com atributos A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm) {t1, t2, ..., tm} e C(T) = c; esta opo para generalizaes com overlapping, e todos os ti, 1 i m, um atributo booleano indicando se a tupla pertence ou no subclasse Si; embora funcional esta opo possa gerar uma quantidade muito grande de valores nulos; Figura - Mapeamento para o Modelo Relacional
1 Passo - Entidades Normais
o

2 Passo - Entidades Fracas

E c

EF

3 Passo - Relacionamentos 4 Passo - Relacionamentos 1:N 1:1 1 N E E E E o

5 Passo - Relacionamentos N:N N N E E

28

Banco de Dados I

4.8 Normalizao de Dados


Consiste em definir o formato conceitual adequado para as estruturas de dados identificados no projeto lgico do sistema, com o objetivo de minimizar o espao utilizado pelos dados e garantir a integridade e confiabilidade das informaes. A normalizao feita, atravs da anlise dos dados que compem as estruturas utilizando o conceito chamado "Formas Normais (FN)". As FN so conjuntos de restries nos quais os dados devem satisfaz-las. Exemplo pode-se dizer que a estrutura est na primeira forma normal (1FN), se os dados que a compem satisfizerem as restries definidas para esta etapa. A normalizao completa dos dados feita, seguindo as restries das quatro formas normais existentes, sendo que a passagem de uma FN para outra feita tendo como base o resultado obtido na etapa anterior, ou seja, na FN anterior. Para realizar a normalizao dos dados, primordial que seja definido um campo chave para a estrutura, campo este que garanta identificar apenas uma tupla da relao. Primeira Forma Normal (1FN) Uma tabela est na primeira forma normal se no domnio de seus atributos, isto , na interseo de uma linha com uma coluna (clula) da tabela, s existirem valores atmicos. Valor atmico uma unidade indivisvel, simples. Assim, no pode ocorrer um domnio Endereo com subdomnios Cidade, Rua, Nmero, Complemento. Uma tabela normalizada teria estes campos separados. Situao Funcionario Codigo Soluo Funcionario Codigo

29

Banco de Dados I

Nome Endereco

Nome Cidade Rua Numero Complemento Bairro

Segunda Forma Normal (2FN) Uma tabela est na segunda forma normal se ela estiver na primeira forma normal e se cada coluna no-chave depender totalmente da coluna-chave. Consistem em retirar das estruturas que possuem chaves compostas (campo chave sendo formado por mais de um campo), os elementos que so funcionalmente dependentes de parte da chave. Podemos afirmar que uma estrutura est na 2FN, se ela estiver na 1FN e no possuir campos que so funcionalmente dependentes de parte da chave. Exemplo: Situao Venda NumeroNF CodigoMercadoria DescricaoMercadoria QuantidadeVendida PreoVenda TotalVenda Como resultado desta etapa, houve um desdobramento do arquivo de Vendas em duas estruturas, a saber: Primeira estrutura (Arquivo de Vendas): Contm os elementos originais, sendo excludos os dados que so dependentes apenas do campo Cdigo da Mercadoria. Segunda estrutura (Arquivo de Mercadorias): Contm os elementos que so identificados apenas pelo Cdigo da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrio e o preo de venda sero constantes. Soluo Vendas NumNF CodigoMercadoria Quantidade Valor Mercadoria CodigoMercadoria DescricaoMercadoria PrecoVenda

Terceira Forma Normal (3FN) Consistem em retirar das estruturas os campos que so funcionalmente dependentes de outros campos que no so chaves. Podemos afirmar que uma estrutura est na 3FN, se ela estiver na 2FN e no possuir campos dependentes de outros campos no chaves. Exemplo: Situao Soluo

30

Banco de Dados I

NotaFiscal NumeroNF Serie DataEmissao CodigoCliente NomeCliente CGCCliente TotalGeral

NotaFiscal NumeroNF Serie DataEmissao CodigoCliente TotalGeral

Cliente Cdigo NomeCliente CGCCliente

Como resultado desta etapa, houve um desdobramento do arquivo de Notas Fiscais, por ser o nico que possua campos que no eram dependentes da chave principal (Num. NF), uma vez que independente da Nota Fiscal, o Nome e CGC do cliente so inalterados. Este procedimento permite evitar inconsistncia nos dados dos arquivos e economizar espao por eliminar o armazenamento frequente e repetidas vezes destes dados. A cada nota fiscal comprada pelo cliente, haver o armazenamento destes dados e poder ocorrer divergncia entre eles. Depois das alteraes: Primeira estrutura (Arquivo de Notas Fiscais): Contm os elementos originais, sendo excludos os dados que so dependentes apenas do campo Cdigo do Cliente (informaes referentes ao cliente). Segundo estrutura (Arquivo de Clientes): Contm os elementos que so identificados apenas pelo Cdigo do Cliente, ou seja, independente da Nota Fiscal, o Nome, Endereo e CGC dos clientes sero constantes. Aps a normalizao, as estruturas dos dados esto projetadas para eliminar as inconsistncias e redundncias dos dados, eliminando desta forma qualquer problema de atualizao e operacionalizao do sistema. A verso final dos dados poder sofrer alguma alterao, para atender as necessidades especficas do sistema, a critrio do analista de desenvolvimento durante o projeto fsico do sistema.

Resumo da Unidade O modelo relacional foi criado por Codd em 1970 e tem por finalidade representar os dados como uma coleo de relaes, onde cada relao representada por uma tabela, ou falando de uma forma mais direta, um arquivo. Porm, um arquivo mais restrito que uma tabela. Toda tabela pode ser considerada um arquivo, porm, nem todo arquivo pode ser considerado uma tabela. Quando uma relao pensada como uma tabela de valores, cada linha nesta tabela representa uma coleo de dados relacionados. Estes valores podem ser interpretados como fatos descrevendo uma instncia de uma entidade ou de um relacionamento. O nome da tabela e das colunas desta tabela utilizado para facilitar a interpretao dos valores armazenados em cada linha da tabela. Todos os valores em uma coluna so necessariamente do mesmo tipo. Na terminologia do modelo relacional, cada tabela chamada de relao; uma linha de uma tabela chamada de tupla; o nome de cada coluna chamado de atributo; o tipo de dado que descreve cada coluna chamado de domnio.

31

Banco de Dados I

IMPORTANTE Antes de comear o contedo sobre SQL, fazer o exerccio abaixo para servir de exemplo no prximo assunto. * Criar um banco de dados que represente uma empresa. Este banco deve ser capaz de informar: a) Dados sobre os funcionrios; b) Quantos funcionrios trabalham em um determinado setor; c) Qual o salrio mdio dos funcionrios.

32

Banco de Dados I

Unidade 5 -

SQL (structured query language)

5.1 Introduo
Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas sua manipulao. De todas, sem dvida a que mais se popularizou foi a linguagem SQL. A linguagem SQL permite a criao e manipulao de dados do banco de dados sem que o programador precise se preocupar com detalhes internos do banco, como a forma como os dados so armazenados e organizados internamente. Foi criada para definir, modificar e consultar dados armazenados em banco de dados. Os grandes fabricantes de banco de dados criaram extenses prprias para a linguagem. Como exemplo, temos: Transact/SQL, Sysbase, Microsoft, PL/SQL, etc. Para evitar problemas na manipulao do cdigo, devido quantidade plataformas, um comit foi criado para torn-la independente. Este comit o comit da ANSI (american National Standards Institute). A linguagem SQL no procedural, como C, Basic, COBOL, Pascal, entre outras. Nestas linguagens o programador tem que dizer passo-a-passo o que o computador deve fazer. O SQL uma linguagem declarativa. Nesta linguagem o programador diz ao computador o que deve ser feito e este se encarrega de faz-lo. A linguagem SQL pode ser Interativa ou Embutida. A forma Interativa usada diretamente para operar um banco de dados, atravs de uma ferramenta que permite a execuo direta do cdigo SQL. A forma Embutida introduz o cdigo SQL dentro das linhas do programa, que atravs de variveis tratado adequadamente. A linguagem SQL subdividida em trs grupos de comando de forma parecida com a estrutura de um banco de dados: DDL (Data Definition Language): Comandos responsveis pela criao de objetos. Ex.: Create Table, Create View, Create Index.

5.2 DML (Data Manipulation Language):


Comando responsvel pela alterao de dados. Ex.: Select, Update, Delete.

5.3 DCL (Data Control Language):

33

Banco de Dados I

Comandos responsveis pela segurana do banco de dados. Ex.: Grant, Revoke.

5.4 Tipos de Dados:


Na construo de uma tabela necessrio que os dados sejam definidos quanto forma de armazenamento. As variaes do SQL criaram outros tipos de dados, como por exemplo: armazenagem de imagens, filmes, vetores, entre outros. O padro SQL ANSI reconhece apenas os tipos Text e Number. A tabela abaixo demonstra estes dois tipos:

Texto Varchar Char Numrico Dec Numeric Int Smallint Float Real Nmero decimal com casas At 15 dgitos definidas Nmero com especificada preciso At 22 dgitos Caracteres varivel de tamanho At 254 caracteres At 254 caracteres

caracteres de tamanho fixo

Inteiro sem parte decimal idntico a Int com limite de tamanho Nmero de ponto flutuante com base exponencial 10 Idntico a Float exceto que no usado um argumento para especificar o tamanho Idntico a Real, s que com preciso maior.

Double Data e Hora Date Time

Armazena datas Armazena horas

5.5 Expresses e Operadores:

34

Banco de Dados I

Os operadores tm por finalidade permitir uma flexibilidade maior na manipulao dos dados de um banco. Estes seguem precedncias de utilizao conjunta.

5.6 Tipos de Operadores


Multiplicao Diviso Subtrao Adio Mdulo Aritmticos Caracteres Concatenao de campos Comparao Igualdade Desigualdade Maior que Menor que Maior ou Igual a Menor ou Igual a No menor que No maior que No Igual a Lgicos NOT AND OR BETWEEN LIKE IN SOME Inverter o valor Booleano Verdadeiro se ambos forem verdadeiros Verdadeiro se for verdadeiro um dos lados Verdadeiro se estiver dentro da faixa Verdadeiro se operador encontrar um padro Verdadeiro se algum item for verdadeiro Verdadeiro se qualquer item for verdadeiro = <> > < >= <= !< !> != || * / + %

35

Banco de Dados I

ANY ALL Bitwise & ! ^ Unrios + ~

Verdadeiro se algum item for verdadeiro Verdadeiro se todo o conjunto for verdadeiro

Positivo Bitwise NOT Negativo

36

Banco de Dados I

Unidade 6 - Criao de Tabelas


6.1 Tutorial:
Na construo de uma tabela necessrio que os dados sejam definidos quanto forma de armazenamento. As variaes do SQL criaram outros tipos de dados, como por exemplo: armazenagem de imagens, filmes, vetores, entre outros. O padro SQL ANSI reconhece apenas os tipos Text e Number. O tipo char s deve ser utilizado quando todas as entradas ocupam o tamanho definido, pois o banco de dados sempre aloca aquele tamanho. J o tipo Varchar aloca um tamanho diferente no banco de dados para cada entrada, sendo mais recomendado quando cada entrada tem um tamanho diferente.

6.2 Criando Tabelas


Antes mesmo de executar a instruo SQL que ir criar as tabelas fundamental um planejamento e um reconhecimento da estrutura que se prope criar. O comando Create Table tem por finalidade criar uma nova tabela no banco de dados. Sintaxe: Create Table [nome da tabela] ([nome do campo] [tipo de dado] [tamanho]...). Como todas as mquinas esto acessando uma nica base de dados, se todos executarem o comando de criao de uma nica tabela, apenas o primeiro ser bem sucedido, e os outros retornaro um erro de tabela j existente. Assim, para testarmos os comandos, cada aluno deve criar uma tabela diferente, e para tanto iremos utilizar o nome de cada mquina. Sempre que for mencionada nos comandos a palavra "NOME_DE_SUA_MAQUINA", substitua pelo nome da mquina que estiver utilizando. Comando: Create Table NOME_DE_SUA_MAQUINA ( Id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT Nome VARCHAR (20) ) Este comando permitiu a criao de uma tabela que contem dois campos, um inteiro chamado Id e um campo VARCHAR chamado Nome. Se utilizarmos o comando Select, podemos ver os campos e o contedo: Comando:

37

Banco de Dados I

Select * from NOME_DE_SUA_MAQUINA Resultado: Id -----Nome -----------

Observe que, embora a tabela esteja vazia, aparecem os nomes dos dois campos criados, mostrando que a criao da tabela foi bem sucedida.

6.3 Parmetros de Campos na Criao de Tabelas:

6.4 Valores Nulos


Pode-se definir se o campo receber valores NULOS ou no. Quando os valores no so NULOS tornam-se obrigatrios, o que significa que no ser possvel inserir dados na tabela em que tais campos no tenham um valor.

6.5 Chave Primria


Por definio o dado que diferencia uma linha de outra na tabela tornando-as nicas. Pode ser composta, ou seja, utiliza mais de uma coluna para compor um valor nico. Para um campo ser definido como Chave Primria, ele no poder receber um valor NULO. Por exemplo, muitas vezes criamos uma tabela com um campo de identificao (geralmente chamado de Id, Cod, Codigo ou outro nome semelhante). Este campo ser utilizado em consultas para relacionar esta tabela com outras, como vimos nos exerccios com Select. mais eficiente para certas consultas que este campo seja a chave primria, mesmo porque ele necessariamente ser nico. Observe a sintaxe para criarmos a tabela novamente com o Id como sendo obrigatrio e chave primria. No se esquea de remover a tabela, se j no o fez, antes de executar o comando: Comando: Create Table NOME_DE_SUA_MAQUINA( Id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT Nome VARCHAR (20), PRIMARY KEY(Id) )

38

Banco de Dados I

6.6 Chave Estrangeira:


Por definio o campo de outra tabela que recebe os valores do campo da Chave Primria. Esta ligao a um campo de Chave Primria possibilita que os dados mantenham a integridade referencial. Esta integridade significa que os dados de uma tabela s podero ser inseridos de forma vlida e correspondente. Execute o comando select * from pedidos e confira que a tabela contm duas chaves estrangeiras. Veja se consegue descobrir quais so.

6.7 Integridade Referencial:


A Integridade Referencial utilizada para garantir a Integridade dos dados entre as tabelas relacionadas. Por exemplo, considere um relacionamento do tipo Um-para-Vrios entre a tabela Clientes e a tabela Pedidos (um cliente pode fazer vrios pedidos). Com a Integridade Referencial, o banco de dados no permite que seja cadastrado um pedido para um cliente que ainda no foi cadastrado. Em outras palavras, ao cadastrar um pedido, o banco de dados verifica se o cdigo do cliente que foi digitado j existe na tabela Clientes. Se no existir, o cadastro do pedido no ser aceito. Com o uso da Integridade Referencial possvel ter as seguintes garantias (ainda usando o exemplo entre as tabelas Clientes e Pedidos): Quando o Cdigo de um cliente for alterado na Tabela Clientes, podemos configurar para o banco de dados atualizar, automaticamente, todos os Cdigos do Cliente na Tabela Pedidos, de tal maneira que no fiquem Registros rfos, isto , registros de Pedidos com um Cdigo de Cliente para o qual no existe mais um correspondente na Tabela Clientes. Essa ao conhecida como "Propagar atualizao dos campos relacionados". Quando um Cliente for excludo da Tabela Clientes, podemos configurar para que o banco de dados exclua, automaticamente, na tabela Pedidos, todos os Pedidos para o Cliente que est sendo Excludo. Essa opo conhecida como "Propagar excluso dos registros relacionados".

6.8 ON UPDATE:
NO ACTION (RESTRICT) - quando o campo chave primria est para ser atualizado a atualizao abortada caso um registro em uma tabela referenciada tenha um valor mais antigo. Este parmetro o default quando esta clusula no recebe nenhum parmetro. Exemplo: ERRO Ao tentar usar "UPDATE clientes SET cdigo = 5 WHERE cdigo = 2.

39

Banco de Dados I

Ele vai tentar atualizar o cdigo para 5, mas como em pedidos existem registros do cliente 2 haver o erro. CASCADE (Em Cascata) - Quando o campo da chave primria atualizado, registros na tabela referenciada so atualizados. Exemplo: Funciona: Ao tentar usar "UPDATE clientes SET cdigo = 5 WHERE cdigo =2. Ele vai tentar atualizar o cdigo para 5 e vai atualizar esta chave tambm na tabela pedidos. SET NULL - Quando um registro na chave primria atualizado, todos os campos dos registros referenciados a este so setados para NULL. Exemplo: UPDATE clientes SET cdigo = 9 WHERE cdigo = 5; Na clientes o cdigo vai para 5 e em pedidos, todos os campos cod_cliente com valor 5 sero setados para NULL. SET DEFAULT - Quando um registro na chave primria atualizado, todos os campos nos registros relacionados so setados para seu valor DEFAULT. Exemplo: se o valor default do cdigo de clientes 999, ento. UPDATE clientes SET codigo = 10 WHERE codigo = 2. Aps esta consulta o campo cdigo com valor 2 em clientes vai para 999 e tambm todos os campos cod_cliente em pedidos.

6.9 ON DELETE:
NO ACTION (RESTRICT) - Quando um campo de chave primria est para ser deletado, a excluso ser abortada caso o valor de um registro na tabela referenciada seja mais velho. Este parmetro o default quando esta clusula no recebe nenhum parmetro. Exemplo: ERRO em DELETE FROM clientes WHERE cdigo = 2. No funcionar caso o cod_cliente em pedidos contenha um valor mais antigo que cdigo em clientes. CASCADE - Quando um registro com a chave primria excludo, todos os registros relacionados com aquela chave so excludos. SET NULL - Quando um registro com a chave primria excludos, os respectivos campos na tabela relacionada so setados para NULL. SET DEFAULT - Quando um registro com a chave primria excludo, os campos respectivos da tabela relacionada so setados para seu valor DEFAULT.

40

Banco de Dados I

6.10 Removendo Tabelas


Para remover uma tabela de um banco de dados deve-se utilizar o comando Drop Table seguido do nome da tabela: Sintaxe: Drop Table [nome da tabela] Execute o comando para remover a tabela criada anteriormente, para podermos cri-la com novos campos. Comando: Drop Table NOME_DE_SUA_MAQUINA Laboratrio Crie as seguintes Tabelas:

41

Banco de Dados I

Unidade 7 - Comandos para Alterar Tabelas


7.1 Alterao de Tabelas Criadas
Aps a criao das tabelas pode ser necessrio incluir ou remover colunas. Sempre possvel remover a tabela e cri-la novamente com a estrutura nova, mas com isto perderamos todos os dados previamente cadastrados. Por isto da importncia do comando ALTER TABLE. Sintaxe:
ALTER TABLE [nome da tabela] DROP [nome da coluna] ADD [nome da coluna e tipos de dados] RENAME [nome atual] [novo nome] MODIFY [nome da coluna e tipos de dados]

7.2 Adicionar colunas a uma tabela ADD


Este comando adiciona colunas a uma tabela. As colunas sero criadas da mesma forma que no comando CREATE TABLE. Comando:
ALTER TABLE NOME_DE_SUA_MAQUINA ADD Sobrenome VarChar(20)

7.3 Remover colunas de uma tabela DROP


Remove uma coluna de uma tabela. Caso a coluna j possua dados digitados, eles tambm sero perdidos. Comando: ALTER TABLE NOME_DE_SUA_MAQUNIA DROP Sobrenome

7.4 Renomeando colunas de uma tabela RENAME


Renomeia uma coluna de uma tabela. Caso a coluna j possua dados digitados, eles no sero perdidos. Comando: ALTER TABLE NOME_DE_SUA_MAQUNIA RENAME Sobrenome SegundoNome

42

Banco de Dados I

7.5 Modificando colunas de uma tabela MODIFY


Modifica uma coluna de uma tabela. Caso a coluna j possua dados digitados, eles no sero perdidos. Comando: ALTER TABLE NOME_DE_SUA_MAQUNIA MODIFY SegundoNome varchar(30)

Laboratrio Modifique as tabelas do exerccio anterior para que fiquem com o seguinte formato:

43

Banco de Dados I

Unidade 8 - Modificando Dados


8.1 Inserindo Dados
Alm dos comandos de consulta ao banco de dados, uma aplicao geralmente ir tambm inserir novos dados e atualizar os existentes; Ao inserir dados em uma tabela, o administrador do banco de dados dever conhecer qual a estrutura da tabela, bem como o tipo de campo. Sem estas especificaes ele no conseguir fazer a insero, pois os dados sero rejeitados. A sintaxe para inserir dados mostrada abaixo: Sintaxe: Insert into [nome da tabela] (Campo1, Campo2, ...) values (Valor1, Valor2,...); Vamos agora criar uma nova tabela e inserir um dado nela. Comando de Criao de Tabela Create Table NOME_DE_SUA_MAQUINA(Id INT, Nome VARCHAR (20)) Comando de Insero de Dados Insert Into NOME_DE_SUA_MAQUINA (Id, Nome) values(1,'Joo') Com esta instruo SQL obteremos o seguinte resultado: Comando: Select * from NOME_DE_SUA_MAQUINA; Resultado: Id Nome ------- ----------1 Joo

8.2 Inserindo dados por meio de um SELECT


possvel fazer a insero de dados atravs de uma instruo SQL com o comando Select, com todas as suas variaes. Esta possibilidade muito til, pois dependendo do caso no ser necessrio digitar os dados nesta tabela, uma vez que eles podem ser reproduzidos atravs de tabelas existentes no Banco de Dados. Exemplificando: Crie sua tabela com um nico campo 'nome' (no se esquea de dar um DROP TABLE antes): Comando: Create Table NOME_DE_SUA_MAQUINA(Nome VarChar (50))

44

Banco de Dados I

Agora vamos colocar nesta tabela todos os nomes de funcionrios da empresa: Comando: insert into NOME_DE_SUA_MAQUINA(Nome) select Nome from funcionarios Confira executando um comando SELECT * FROM NOME_DE_SUA_MAQUINA. Se tudo ocorrer corretamente, o resultado ser que voc ter uma nova tabela com todos os nomes presentes na tabela funcionrios.

8.3 Excluindo informaes


Este comando remove linhas das tabelas. Podemos remover todo o contedo da tabela, ou definir as linhas a serem removidas utilizando a clusula WHERE. A sintaxe mostrada abaixo: Sintaxe: DELETE FROM [nome da tabela] WHERE [Condio]; Comando: Delete from NOME_DE_SUA_MAQUINA where Nome = Jos Lembre-se que ao excluir uma linha de registro relacionada excluso poder ser bloqueada pelo SQL devido as PRIMARY KEY e FOREIGN KEY existentes. Para remover todos os itens de uma tabela basta no incluir a clusula WHERE.

8.4 Atualizando dados de uma tabela


Atravs deste comando possvel atualizar um ou mais campos de uma tabela. A sintaxe mostrada abaixo: Sintaxe: UPDATE [nome da tabela] SET [nome da coluna] = [novo valor] possvel utilizar as clusulas FROM e WHERE para determinar a atualizao vinda de outras tabelas ou quais os critrios utilizados para a atualizao. Expresses podero ser utilizadas para realizar as alteraes nos campos. Execute o comando select * from produtos antes e depois de rodar o comando abaixo: Comando: update produtos set preco = preco * 2 Observe que os valores podem ser diferentes, pois todos os alunos esto alterando a mesma tabela, neste caso. Esta alterao est permitindo ao usurio aumentar em 100% o preo de todos os produtos. Esta alterao poderia ser feita utilizando-se uma restrio com a clusula Where, para atualizar apenas um produto. Comando: update produtos set preco=20 where id = 2 Este comando define como 20 o preo do produto 2, ou seja, da carne. Laboratrio Baseado nas tabelas criadas e as alteraes realizadas nas tabelas das unidades anteriores realize os seguintes comandos:

45

Banco de Dados I

Insira 3 registros em cada tabela Delete 1 registro da tabela tbfornecedores Atualize o valor da matria prima em 20% Insira 2 registros na tabela tbmateriaprima Remova o ultimo registro da tabela tbestoquemat Atualize a tabela tbestoquemat para um aumento de 50% na quantidade Insira 2 registros na tbfornecedores Delete 1 registro da tabela tbtipomateria Insira 2 registros na tabela tbtipomateria Reduza em 13% o valor da tabela tbmateriaprima

46

Banco de Dados I

Unidade 9 - Consulta em uma nica Tabela SQL


9.1 Sintaxe Bsica de Consultas SQL
Em bancos de dados relacionais, temos a informao armazenada em tabelas, como visto anteriormente. Cada tabela contm um conjunto de informaes armazenadas em linhas da tabela, cada linha representando uma entrada, sendo que as colunas representam os parmetros associados quela informao. Uma das consultas mais simples que podemos realizar em SQL, portanto, a consulta que retorna os parmetros que desejamos de todas as entradas da tabela. Sua sintaxe mostrada abaixo:
SELECT [nome FROM [nome da tabela] do campo1], [nome do campo2], ...

O campo nome da tabela define a tabela que estamos consultando, enquanto os campos nome do campoN representam os parmetros, e, portanto colunas, que desejamos recuperar.

9.2 Exemplos de Consultas SQL


Inicialmente faremos algumas consultas simples a uma nica tabela. Nos exemplos desta unidade estaremos utilizando a tabela transportadoras, cujo contedo mostrado abaixo. O instrutor poder utilizar os mesmos exemplos ou criar junto com os alunos tabelas prprias, utilizando o banco de dados que for mais conveniente. Obs.: Neste e nos demais exemplos de tabelas do banco de dados, a primeira linha especifica o nome do atributo ao qual cada coluna se refere. Tabela transportadoras: Nome Transportadora Fulano Transportes Pedro Expresso Marte Telefone (51) 2111-1666 (51) 0000-0000 (51) 1234-5678

9.3 Seleo de Todos os Registros com Colunas Especficas


Execute a consulta abaixo, ou siga as instrues do instrutor, executando uma consulta equivalente:

47

Banco de Dados I Select Nome from transportadoras

Executando a consulta acima na tabela Transportadoras, contendo os dados mostrados, teremos o seguinte resultado:

Nome ---------------------Transportadora Fulano Transportes Pedro Expresso Marte

Na mesma tabela, tambm podemos consultar mais parmetros, bastando especific-los separados por vrgulas. Confira a consulta a seguir e o resultado correspondente:
Select Nome, Telefone from transportadoras

Resultado:

Nome ------------Transportadora Fulano Transportes Pedro Expresso Marte

Telefone -------------(51) 3346-7300 (51) 0000-0000 (51) 1234-5678

9.4 Redefinindo o Nome das Colunas


Normalmente as colunas retornadas por uma consulta SQL possuem o nome da coluna respectiva na tabela do banco de dados. Algumas vezes, porm, podemos querer definir outros nomes para as colunas. Sintaxe:
SELECT [nome do campo] as nome definido FROM [nome da tabela]

Comando:
select nome as transportadoras from transportadoras

Resultado: Transportadoras ----------------------

48

Banco de Dados I

Transportadora Fulano Transportes Pedro Expresso Marte

9.5 Seleo de Registros com Exibio de Strings


possvel selecionar registros de uma tabela exibindo um texto fixo para cada linha de registro Sintaxe:
SELECT texto, [nome do campo], texto, [nome do campo] FROM [nome da tabela]

Comando:
select nome, ' ocupa o cargo de', cargo from funcionarios

Resultado: ocupa o cargo de Cargo -------------------ocupa o cargo de ocupa o cargo de ocupa o cargo de ocupa o cargo de --------------------Presidente Gerente de Vendas Boy Telefonista

Nome ------Jos Maurcio Lus Lgia

Consulta com Execuo de Clculos: Com o SQL podemos efetuar clculos entre elementos lidos do banco de dados e retorn-los na consulta. Para selecionar registros de uma tabela com a execuo de clculos matemticos necessrio utilizar os operadores '+' ,' -' , '/' , '*' e '^'. Sintaxe:
SELECT [nome do campo]*[nome do campo] as [nome da expresso] FROM [nome da tabela];

Para demonstrarmos este recurso do SQL, utilizaremos uma nova tabela, com dados numricos. Novamente, o instrutor poder utilizar estes mesmos dados ou criar exemplos prprios ao longo da aula:

Nome Leite Carne Po Suco Comando:

Preo 10 20 18.6 20

Estoque 500 330 200 330

49

Banco de Dados I select nome, preco*estoque as total from produtos

Resultado:

Nome --------------------Leite Carne Po Suco Laboratrio

total ----------5000 6600 37200 6600

Baseado nas tabelas criadas e as alteraes realizadas nas tabelas das unidades anteriores exiba os seguintes resultados: O fornecedor x tem a razo social y A matria prima x tem o valor de y e a quantidade z A matria prima x tem um valor total de quantidade * valor A quantidade x no estoque no pode chegar a 20% da quantidade O tipo de matria x tem o valor de y e com desconto fica em 80% do valor A matria x descrita como y 12% do valor so considerados custo da matria prima x Acesse o site x da empresa y 1/3 do valor * quantidade destinado ao pagamento de imposto da matria prima y Aps um aumento de 13% no estoque, a quantidade vai de xpara y

50

Banco de Dados I

Unidade 10 -

Unidade 10: Funes com strings

10.1 Funes com Strings


Funes que tratam de strings permitem fazer uma srie de manipulaes de textos que so recuperadas das tabelas do banco de dados. Nesta unidade apresentamos algumas das funes mais comumente utilizadas em situaes reais, para o aluno se familiarizar com o conceito de funes de manipulao de strings. Na prtica pode ser interessante consultar as funes que o banco de dados que estiver sendo utilizado fornece, quando for necessrio manipular strings.

10.2 Sintaxe da Funo de Concatenao de Strings


Para juntar duas ou mais strings existe uma funo, chamada concat, mostrada a seguir: Sintaxe:
concat( string1, string2,...)

O exemplo a seguir mostra o uso desta funo para juntar o nome e sobrenome dos funcionrios em uma nica coluna. Observem o uso do espao para garantir que o nome e sobrenome vo ter uma separao. Exemplo:
select concat(Nome, ' ', Sobrenome) from funcionarios

10.3 Controle de Maisculas e Minsculas


Duas funes permitem transformar o retorno de uma consulta em letras maisculas e minsculas. Lower Transforma as letras em minsculas na resposta da instruo SQL. Como exemplo:
Select Lower(Nome) from clientes;

Upper Transforma as letras em maisculas na resposta da instruo SQL. Como exemplo:


Select Upper(NomeDoContato) from clientes;

51

Banco de Dados I

10.4 Segmentando uma String


Alguns comandos permitem separar uma string, recuperando apenas determinada parte da informao que se deseja. Substr Separa uma parte da linha baseada na seguinte forma:
SUBSTR(String1, Valor1, Valor2),

Onde: String1 a string da qual vai ser recuperado um segmento Valor1 onde comea a ser feita a separao Valor 2 o nmero de caracteres que sero separados. Exemplo:
Select Substring(Nome, 1, 3) from clientes

Left Separa uma parte da linha baseada na seguinte forma:


LEFT (String1, Valor1)

Onde, String1 a string de origem Valor1 o nmero de caracteres que sero separados a partir da esquerda. Exemplo:
Select Left(Nome, 1) from clientes;

Right Separa uma parte da linha baseada na seguinte forma:


RIGHT (String1, Valor1)

Onde, String1 a string de origem Valor1 o nmero de caracteres que sero separados a partir da direita. Exemplo:
Select Right(Nome, 1) from clientes;

Length(Len) Retorna o tamanho da string:


LENGTH (String1)

Onde, String1 a string de origem

52

Banco de Dados I

Exemplo:
Select LENGTH(Nome) from clientes;

Locate(Charindex) Retorna a posio do texto procurado:


LOCATE (Valor1, String1)

Onde, Valor1 o texto procurado. String1 a string de origem Exemplo:


Select LOCATE(Joo, Nome) from clientes;

Laboratrio Baseado nas tabelas criadas e as alteraes realizadas nas tabelas das unidades anteriores exiba os seguintes resultados: O fornecedor apenas o 1 nome do tipo final da razo social A matria prima em maiscula tem o valor de y e a quantidade z A matria prima iniciadas em 1 letra tem um valor total de quantidade * valor O tipo de matria em minsculo tem o valor de y e com desconto fica em 80% do valor A matria duas letras iniciais descrita como em maisculo 12% do valor so considerados custo da matria prima 1 letra em maisculo,. Acesse o site retirar o WWW da empresa y 1/3 do valor * quantidade destinado ao pagamento de imposto da matria prima em maiscula A matria prima x formada por quantidade de letras letras O fornecedor x tem um fax de quantidade de letras letras

53

Banco de Dados I

Unidade 11 -

Critrios de Consulta Clusula WHERE

11.1 Clusula Where


At o momento todas as consultas apresentadas retornaram todas as entradas das tabelas, restringindo unicamente os atributos que desejvamos recuperar. Em outras palavras, os comandos anteriores recuperavam algumas colunas, mas todas as linhas das tabelas. Em muitos casos, desejaremos recuperar apenas uma ou algumas entradas de uma tabela especfica, por exemplo, quando desejarmos recuperar dados sobre um cliente especfico. Nestes casos, nossa consulta SQL ter uma clusula Where, conforme sintaxe mostrada abaixo: SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] UDPATE [nome da tabela] SET [nome do campo] = [novo valor] WHERE [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] DELETE FROM [nome da tabela] WHERE [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] Uma consulta pode ter uma quantidade infinita de condies ou clusulas, sendo que as mesmas devem ser separadas por um operador lgico (AND ou OR). Veja o exemplo abaixo: SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] AND [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] Ou SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] OR [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] Os campos que so utilizados nos critrios das consultas, no so obrigatoriamente os mesmo utilizados como sada de informao (para consultas de seleo) ou como objetos de alterao. Podendo, por exemplo, exibir o nome de produtos que tenha um preo inferior a um determinado valor. Veja o exemplo, sendo nomeproduto o campo a ser exibido e preco o campo que recebe a condio de exibio: SELECT nomeproduto FROM produtos WHERE preco <= 2.5

54

Banco de Dados I

Observe, tambm, que possvel a utilizao de um mesmo campo, mais de uma vez como critrio de uma consulta. Por exemplo, se desejar exibir os filmes lanados aps o ano 2000 com a exceo do ano de 2005, o comando seria desenhado da seguinte forma. SELECT nomefilame FROM filmes WHERE ano >= 2000 AND ano <> 2005 Estes critrios podem ser utilizados em qualquer tipo de consulta (seleo, excluso ou atualizao). Principalmente em consultas que realizam alteraes, recomenda-se atentar para o uso quase que obrigatrio da clusula where, pois sua omisso resulta na execuo da alterao em todo o conjunto de dados contemplados na sentena. Vejamos a seguinte situao: para os funcionrios com mais de 1 ano de tempo de trabalho a empresa deseja conceder um aumento de 15% em seus salrios. Se executarmos uma consulta conforme exemplo abaixo, todos os funcionrios receberam aumento independente do seu tempo na empresa: UPDATE funcionarios SET salario = salario * 1.15 Para que apenas os funcionrios que possuem o critrio estabelecido pela empresa para receber o aumento, sejam efetivamente beneficiados, necessrio incluir uma clusula. Observe a sintaxe correta abaixo. UPDATE funcionarios SET salario = salario * 1.15 WHERE tempo >= 1 Em consultas de deleo o cuidado deve ser ainda maior, pois uma execuo de uma sentena sem um critrio de forma correta ou mesmo sem a existncia de um, pode acarretar na perda significativa de dados importantes para a instituio. Como regra geral recomenda-se iniciar a escrita de seu script SQL, para consultas de alteraes, pelos critrios que as mesmas devem considerar, reduzindo assim, a chance de cometer qualquer tipo de equivoco, com consequncias mais graves.

11.2 Consultas Simples com Clusula Where


Vamos definir uma consulta bastante simples, restringindo a lista de clientes apenas aqueles cujo pas o Brasil. Utilizaremos a tabela clientes, mostrada a seguir: Tabela Clientes Nome Empresa W Empresa A Empresa B Empresa C Empresa X Comando:
SELECT NOME FROM CLIENTES WHERE PAIS='BRASIL'

Pas Brasil Brasil Brasil Argentina Brasil

Resultado:

55

Banco de Dados I

nome ----------------

Empresa A Empresa B Empresa X

O sinal de igualdade (=) foi utilizado porque o usurio sabia exatamente o que estava procurando. Verifique os operadores de comparao que esto no inicio da apostila. Cabe tambm, ressaltar que devemos sempre atentar para o tipo de dado armazenado nos campos que sero utilizados nos critrios de consulta. Pois esta observao nos mostra que tipos de critrios podem ser utilizados (para datas, por exemplo) e qual a forma correta de montagem do critrio ou seleo. No exemplo da consulta acima, podemos perceber que o critrio foi digitado entre aspas simples, pois o valor do campo do tipo texto, a exemplo do aconteceria com um campo data (apenas devemos atentar para seu formato). Para campos tipados como numricos no h a necessidade, alm de no ser recomendado, do uso de aspas simples. Entretendo, se estiver utilizando um banco de dados que voc no tenha estruturado, utilize comandos (veremos nas prximas unidades) que exibam a estrutura da tabela, pois podemos encontrar campos com valores numricos que tenham sido tipados como texto, o que pode atrapalhar a percepo do resultado final.

11.3 Selecionando Dados No Repetidos


Algumas vezes no queremos recuperar todas as entradas de determinada tabela, mas apenas aquelas no repetidas. Podemos, por exemplo, querer listar todas as cidades em que a empresa tem clientes, ou todas as faixas de salrio dos funcionrios, e nestes casos no faz sentido repetir inmeras vezes a mesma cidade ou faixa salarial apenas por ter mais de um dado com aquela informao. Existe um comando para resolver esta questo, chamado DISTINCT, cuja sintaxe mostrada abaixo:
SELECT DISTINCT [nome do campo] FROM [nome da tabela];

Executando a consulta abaixo, veremos que retornar os pases em que existem clientes armazenados no banco de dados:
select distinct pais from clientes

Resultado:

Pas Argentina

56

Banco de Dados I

Brasil

Case o comando seja executado novamente, porm sem a clusula DISTINCT e observe a teremos a repetio dos pases. O comando DISTINCT realiza um agrupamento dos dados exibidos, portanto devemos sempre estar atentos aos campos que inserimos antes da expresso FROM, pois se os mesmos forem nicos, pode no ocorrer o agrupamento de forma correta. No exemplo aqui citado os pases, aparecero apenas uma vez, pois somente a coluna pas foi exibida, se fosse inserido o campo nome, por exemplo, haveria a duplicao dos mesmos. Vejamos o caso na prtica
select distinct nome, pais from clientes

Resultado:

Nome

Pas Brasil

Empresa A Empresa B Empresa C Empresa X

Brasil Brasil Argentina Brasil

11.4 Selecionando alguns dados


Em determinadas situaes desejamos apenas obter alguns registos de uma consulta, pois apenas uma amostra de dados pode ser suficiente para chegarmos ao resultado esperado da sentena. Esta sintaxe para construo de um limite dos resultados leva em considerao o banco de dados no qual as informaes esto armazenadas, sejamos abaixo a sintaxe para Access/SQL SERVER e para MySQL. Access/SQL SERVER: SELECT TOP [valor] [opcional PERCENT] [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] MySQL

57

Banco de Dados I

SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] LIMIT [valor] Se desejarmos, por exemplo, exibir apenas 5 clientes que sejam do pas Brasil, devemos construir a consulta no SQL SERVER. SELECT TOP 5 nome FROM clientes WHERE pais='brasil' A utilizao da clusula de limite de registros muito utilizada em testes de verificao do contedo de uma tabela. Tambm amplamente aplicada em subconsultas (tema do curso avanado).

Laboratrio. Para a realizao dos exerccios abaixo crie a seguinte tabela e insira os dados listados abaixo dela. Aps execute uma consulta que exiba cada

Cod_Celula r 1 2 3 4 5 6 7

Modelo Star N97 IPhone Corby N95 Jet 2160

Marca Sansung Nokia Apple Sansung Nokia Sansung Nokia

Camera Sim Sim Sim Sim Sim Sim No

MP3 Sim Sim Sim Sim Sim Sim No

Bateria 3.2 4.1 3.4 4.2 2.7 3.3 8.7

Valor 600.00 700.00 1.100 800.00 950.00 650.00 50.00

Lancamento 2009-04-12 2010-01-20 2007-12-30 2008-06-25 2005-05-05 2008-10-09 1997-03-04

Os dados de todos os celulares com mp3. Liste modelo de todos os celulares da Sansung. Liste nome de todos os modelos, junto com seu valor e marca.

58

Banco de Dados I

Liste nome de todos os celulares, junto com seus valores, para todos os celulares que foram lanados h pelo menos de 2 anos. Liste o modelo, marca e bateria do celular cdigo 4. Liste os celulares lanados a mais de 10 anos. Liste todos os celulares com bateria com mais de 4 horas e menos de 6 horas Liste 2 celulares com cmera Liste as marcas de celular existentes Liste celulares da marca Nokia com bateria de mais e 3 horas e com valor inferior a R$ 700,00 Atualize em 10% o valor dos celulares da Nokia Insira mais 4 modelos de celular Delete 2 celulares da Sansung Atualize a informao MP3 para NO em celulares com bateria inferior a 3 horas e valor superior a R$ R$ 500,00 Mude o nome do celular de cdigo 7 para MP15 Atualize o valor dos celulares em 2% para celulares com cmera e valor inferior a R$ 800,00 Atualize 3 celulares para cmera NO Mude o valor dos celulares Samsung para 80% de seu valor atual Insira 2 celulares com nomes novos utilizando os dados de outro celular Delete todos os celulares com valor inferior a R$ 300,00

59

Banco de Dados I

Unidade 12 12.1 Predicados LIKE e NOT LIKE:

Predicados

Na unidade anterior, vimos como selecionar apenas algumas entradas de uma tabela, com o uso da clusula Where. Entretanto, apenas com os operadores de igualdade, que foi mostrado, e outros operadores aritmticos, como <, >, etc., no conseguiremos sempre selecionar o que desejamos. Em particular, quando desejamos selecionar entradas com base em um atributo de texto, precisamos de recursos mais poderosos. Por exemplo, podemos querer procurar por um cliente do qual no temos todo o nome, mas apenas um dos sobrenomes. Utilizar o operador = no ir nos atender neste caso. O predicado LIKE serve para este fim. Funciona como um tipo de pesquisador de sequncias podendo ser auxiliado por um % que significa qualquer caractere. Pode ser precedido por um NOT que expressa negao. Sua sintaxe mostrada abaixo:
Select * from [nome da tabela] WHERE [campo analisado] {NOT LIKE}{LIKE} [valor ou texto];

Para entender a vantagem de utilizar os comandos LIKE e NOT LIKE vamos primeiro executar uma consulta com o operador de igualdade. Nesta apostila utilizaremos uma tabela bastante simples, com fins didticos, sendo possvel que o instrutor opte por construir exemplos mais complexos junto com a turma. Tabela clientes: Nome Joo da Silva Borges Pedro lvaro Joo Augusto Comando:
select nome from clientes where nome = 'Joo'

Resultado: nome -------------

A resposta para esta instruo ser uma tabela vazia. Apesar de existir um 'Joo' na tabela, o critrio de igualdade exige o nome completo. A consulta apenas retornaria o cliente se fosse colocado o nome completo: Joo da Silva' Assim, utilizar o sinal de igualdade nos retorna o resultado desejado somente se conhecermos o nome completo da pessoa. O comparativo lgico LIKE, permite selecionar por semelhana: Comando:
select nome from clientes where nome like 'Joo%'

60

Banco de Dados I

Resultado: nome ---------------Joo da Silva Borges Joo Augusto

Da mesma forma como podemos pesquisar por informaes que comecem por um determinado conjunto de caracteres, tambm podemos definir que certas letras estejam no final ou em qualquer posio do texto, como mostramos no exemplo a seguir, que retorna todos os contatos que tem a string 'Silva' no meio do nome. Comando:
select nome from clientes where nome like '%silva%'

Resultado: nome ---------------Joo da Silva Borges

12.2 Predicados BETWEEN... AND e NOT BETWEEN... AND


O PREDICADO Between... and.. define uma faixa de valores na qual o campo precisa estar includo. Sintaxe:
Select * from [nome da tabela] WHERE [campo da tabela] {NOT} BETWEEN [valor ou texto] AND [valor ou texto];

Comando:
select Nome, Estoque from produtos where estoque between 500 and 1000

Resultado: Nome --------------Leite Estoque ------------1000

12.3 Predicados IN e NOT IN:


O predicado IN compara um valor com uma lista ou coleo de valores. Lembre-se que os critrios do tipo texto devem ser escritos entre aspas simples. Sintaxe:

61

Banco de Dados I Select * from [nome da tabela] WHERE [campo da tabela] {NOT} IN (valor ou texto, valor ou texto,...)

Comando:
select Nome, Pais from clientes where pais in ('Brasil', 'Argentina')

Resultado: Nome ------------------Pas --------------Brasil Empresa A Empresa B Empresa C Empresa X Brasil Brasil Argentina Brasil

12.4 Predicado IS NULL e IS NOT NULL


Separa os registros NULOS. Quando precedido por um NOT, separa os registros com valor vlido. Sintaxe:
Select * from [nome da tabela] WHERE [nome do campo] {IS NOT NULL} {IS NULL};

Este predicado pode ser til para determinadas situaes em que algum campo esteja null porque no foi processado ainda, por exemplo, numa compra que no foi finalizada, ou em um pedido que no foi entregue. Observe o exemplo abaixo, que um exemplo tpico de uma consulta utilizando este predicado para identificar pedidos ainda no enviados. Comando:
select * from pedidos where DataEnvio Is Null

Analogamente, para verificarmos quais entradas possuem um valor de DataEnvio, e, portanto representam pedidos j enviados, podemos utilizar o comando abaixo: Comando:
select * from pedidos where DataEnvio Is Not Null

O predicado ISNULL(COALESCE em MySQL) tambm pode ser utilizado na exibio de algum valor caso um campo esteja nulo.
Comando: select ISNULL(taxa, ) Cobrana from pedidos

62

Banco de Dados I

12.5 Seleo com Operadores Lgicos


Para selecionar registros de uma tabela com a determinao de critrios o usurio dever utilizar a clusula WHERE combinada com os operadores lgicos AND, OR e NOT. A sintaxe mostrada abaixo: Sintaxe:
SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] AND [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] OR [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio]

Como exemplo, vamos selecionar todos os produtos cujo estoque seja maior que 500 e tenham um preo menor que 10. Comando:
select Nome, Estoque, Preco from produtos where estoque > 500 and preco < 10

Neste exemplo, a clusula AND obrigou que ambas as condies fossem atendidas. Podemos tambm definir que o item seja selecionado caso qualquer das condies seja atendida, como mostra o exemplo abaixo em que selecionamos os itens que tenham. preo menor que 10 ou um estoque maior que 1000. Comando:
select Nome, Estoque, preco from produtos where preco < 10 or estoque > 1000

Laboratrio. Para a realizao dos exerccios abaixo utilize a tabela criada no exerccio anterior

Os dados de todos os celulares com mp3 no nulo. Liste modelo de todos os celulares com nome contendo k. Liste nome de todos os modelos, junto com seu valor e marca que seu valor esteja entre R$ 300 e R$ 500. Liste nome de todos os celulares, junto com seus valores, para todos os celulares que no sejam da Nokia. Liste o modelo, marca e bateria do celular cdigo 4, 6, 2. Liste os celulares lanados a mais de 10 anos e que sua bateria dure entre 4 e 6 horas. Liste todos os celulares com bateria com mais de 4 horas e menos de 6 horas Liste 2 celulares com cmera com valor nulo Liste as marcas de celular existentes em letra maiscula e sem valores nulos Liste celulares da marca Apple com bateria de mais e 3 horas e com valor entre a R$ 700,00 e R$ 2.000,00 Delete todos os celulares com bateria com 1, 3 ou 4 horas de durao.

63

Banco de Dados I

Unidade 13 -

Funes de Agrupamento e Ordenao

13.1 Obtendo Informaes Estatsticas


Muitas vezes no queremos recuperar os dados armazenados no banco de dados, mas sim informaes estatsticas sobre os mesmos, como totais e mdias de valores. Para tanto utilizamos as chamadas funes de agrupamento. A sintaxe das funes de agrupamento mostrada abaixo: Sintaxe:
SELECT {ALL} {DISTINCT} Funo([nome do campo]) FROM [nome da tabela]

As funes de agrupamento utilizadas no SQL so: COUNT( ), AVG( ), MAX( ), MIN( ) e SUM( ). Abaixo mostramos um exemplo simples, mas bastante completo do uso de todas estas funes para processar clculos em cima de uma tabela de produtos, e um exemplo de retorno. Comando:
select SUM(Estoque) as 'Total no Estoque', MAX(Preco) as 'Preo mais caro', MIN(Preco) as 'Preo mais barato', AVG(Preco) as 'Preo mdio', COUNT(Preco) as 'Total de Registros' from produtos

Exemplo de Resultado: Total no Preo mais Preo Estoque caro barato --------3600 --------31 ---------5 mais Preo mdio --------16.0000 Total Registros -------------4 de

As funes agregadas no podem ser utilizadas dentro de uma clusula WHERE, porem possvel utilizar esta clusula para restringir o nmero de linhas que sero consideradas no clculo da resposta, como mostra o exemplo abaixo: Comando:
SELECT AVG(preco) from produtos where preco > 10

Nesta consulta acima o que estamos obtendo a mdia entre todos os produtos cujo preo maior que 10.

64

Banco de Dados I

13.2 Agrupamento Utilizando GROUP BY:


A clusula GROUP BY agrupa os registros de acordo com uma condio especificada. A sintaxe mostrada abaixo:
SELECT [nome do campo] FROM [nome da tabela] GROUP BY [nome do campo]

Abaixo mostramos um exemplo em que agrupamos os clientes por pases para obtermos uma listagem de todos os pases de clientes. Comando:
select Pais from clientes group by pais

Resultado: Pais --------------Argentina Brasil

O resultado acima poderia ser obtido tambm com o uso do comando DISTINCT. Na realidade, geralmente o uso do comando GROUP BY s adequado em conjunto com funes de agrupamento, como mostramos no exemplo a seguir:
select count(*) as 'Total', pais from clientes group by pais

Resultado:

Total --------1 4

Pas --------------Argentina Brasil

Como agrupamos por pases, conseguimos utilizar o comando de COUNT e descobrir quantas vezes cada um dos pases aparece.

13.3 Utilizando WHERE e GROUP BY:


Podemos utilizar WHERE e GROUP BY juntos para selecionar registros de uma tabela, agrupando-os por um determinado campo. A sintaxe apresentada abaixo:
SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparao ou restrio] [critrio de comparao ou restrio] GROUP BY [nome do campo]

65

Banco de Dados I

O comando abaixo mostra o uso de COUNT e WHERE para retornar o total de clientes com cargo do contato como sendo de gerente de vendas.
select count(*), Vendas' GROUP BY pais pais from clientes where CargoContato = 'Gerente de

13.4 Seleo de registros com Agrupamento pela Clusula GROUP BY e HAVING:


Enquanto a clusula WHERE filtra os registros antes de agrup-los, diminuindo assim a quantidade de registros gerados pela clusula GROUP BY, a clusula HAVING faz um filtro tambm, porm. permitindo a utilizao de uma funo agregada. A sintaxe mostrada abaixo:
SELECT [nome do campo] FROM [nome da tabela] GROUP BY [nome do campo] HAVING Funo Agregada([nome do campo])

Por exemplo, se quisermos ver o total de clientes de pases cujo total for maior que 3, usaramos o comando abaixo:
select count(*),pais from clientes group by pais having count(*) >= 3

Resultado: Count(*) ------4 Pas ------------Brasil

Como s existe uma referncia a "Argentina", e portanto o total menor que 3, no aparece no resultado. Para entender melhor a diferena entre WHERE, GROUP BY e HAVING, preciso compreender a definio de cada uma, mostrada abaixo: a clusula WHERE utilizada para filtrar as linhas que resultam da consulta da tabela especificada pela clusula FROM. A clusula GROUP BY utilizada para agrupar as linhas filtradas por WHERE. A clusula HAVING usada para filtrar as linhas do grupo criado por GROUP BY.

13.5 Ordenao das Consultas


At agora no nos preocupamos com a ordem em que so mostrados os resultados de uma consulta, mas em situaes reais normalmente vamos querer controlar esta ordenao. A clusula ORDER BY ordena os registros em crescente e decrescente baseado em um campo da tabela, e sua sintaxe de uso mostrada abaixo:
SELECT [nome do campo] FROM [nome da tabela] {ASC}{DESC} ORDER BY[nome do campo]

66

Banco de Dados I

Se no utilizarmos a clusula ORDER BY, o resultado da instruo ser baseado no ndice da tabela analisada. Ao utilizarmos a clusula estamos definindo a ordem, como no caso abaixo em que os produtos so mostrados em ordem alfabtica: Comando:
select Nome from produtos order by Nome

No necessrio utilizar o complemento ASC para as ordenaes crescentes, porm para as ordenaes decrescentes deve-se utilizar DESC: Laboratrio. Para a realizao dos exerccios abaixo utilize a tabela criada no exerccio anterior

Some os valores dos celulares. Calcule o tempo mdio de durao da bateria Encontre o maior e o menor valor dos celulares. Conte o nmero de celulares por Marca. Encontre e mdia de valores por Marca. Calcule a mdia de valor das Marcas de celular com mais de um exemplar. Mostre as marcas de celular que tenham apenas 1 exemplar Liste as marcas de celular existentes em letra maiscula e sem valores nulos Liste todos os celulares por em ordem decrescente de lanamento Calcule a mdia de durao dos celulares com cmera

67

Banco de Dados I

Unidade 14 -

Consultas em Mltiplas Tabelas

14.1 Consultas em Mltiplas Tabelas


Conforme visto nos captulos anteriores, de teoria de modelagem de dados, as tabelas do banco de dados tm relaes entre si, e essencial dominar os recursos da linguagem SQL que nos permitem criar consultas com base nestas relaes. O agrupamento de tabelas na SQL muito mais do que uma consulta, o fato de poder interligar duas ou mais tabelas relacionadas entres si de forma que possam ser recuperados os seus registros na resposta de uma instruo SQL. Nem todos os bancos de dados utilizam a forma padro de ANSI, existindo algumas variaes na sintaxe do comando.

14.2 Join
Podemos definir Join como a juno de duas tabelas. O resultado da unio de duas tabelas ser a multiplicao das linhas da primeira pela segunda tabela, ou seja, para cada linha da primeira tabela, todas as linhas da segunda sero repetidas. Na prtica esta situao no muito comum, mas serve como base para entendermos o funcionamento de outros tipos de Join. Sintaxe:
Select [nome da tabela1].[nome do campo], campo] from [nome da tabela1], [nome da tabela2]; [nome da tabela2].[nome do

Observe a operao de JOIN entre duas tabelas pedido e clientes, sem a utilizao de nenhuma restrio na unio. Assumindo que existam 3 empresas e 3 pedidos, teremos um retorno com nova linha: Comando:
select clientes.Nome, pedidos.Id as 'ID do pedido' from pedidos, clientes

68

Banco de Dados I

Resultado: Nome ------ID do pedido ------------1 2 3 Empresa A Empresa A Empresa A Empresa B Empresa B Empresa B 1 2 3 1 2 3

O resultado um produto cartesiano entre elas, em que o total de linhas ser igual ao total de entradas de uma tabela multiplicado pelo total de entradas da outra. Para obtermos um resultado que faa sentido, geralmente utilizamos a clusula WHERE.

14.3 Equijoin Join de Igualdade


Tambm conhecido como join simples ou inner join, o Equijoin far a unio entre duas ou mais tabelas atravs de uma clusula WHERE, que ligar a chave primria de uma a chave estrangeira de outra. Sintaxe:
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do campo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nome do campo] = [nome da tabela2].[nome do campo]

Vamos utilizar um inner join para obter uma lista dos produtos e suas respectivas categorias. Vamos assumir que em uma tabela produtos temos o cdigo da categoria, e esta informao - a chamada chave estrangeira nos permite descobrir dentro da tabela categoria o nome da categoria daquele produto. Comando:
select produtos.Nome as 'Nome Produto', categorias.Nome as 'Categoria' from produtos, categorias where produtos.CodCategoria = categorias.id

69

Banco de Dados I

Resultado: Nome Produto --------------Leite Suco Carne Po Categoria -----------------Bebidas Bebidas Carnes Outros Alimentos

14.4 Exerccios Sugeridos


Anteriormente foi apresentada a tabela clientes, com atributos Nome e Pas. Transforme esta informao em duas tabelas, Novo_Clientes e Pases, definindo os atributos que fazem a relao entre as tabelas, e defina uma consulta SQL que retorne o mesmo resultado da tabela Clientes original, porm consultando as duas novas tabelas Tabela Clientes Nome Pas Brasil Empresa A Empresa B Empresa C Empresa X Brasil Brasil Argentina Brasil

14.5 Equijoins e Operadores Lgicos:


possvel combinar em uma clusula WHERE com equijoins os operadores lgicos: AND, OR e NOT. Isto ser necessrias em boa parte das consultas SQL feitas em um sistema, pois geralmente queremos definir condies exatas para a recuperao de dados de diversas tabelas. Sintaxe:
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do campo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nome do campo] = [nome da tabela2].[nome do campo] AND [nome da tabelaN].[nome do campo] [Comparao] [valor ou texto] OR [nome da tabelaN].[nome do campo] [Comparao] [valor ou texto] NOT [nome da tabelaN].[nome do campo] [Comparao] [valor ou texto]

Como exemplo, vamos criar uma consulta em tabelas produtos e categorias, selecionando produtos cujo preo maior que 10 e ainda exibindo a categoria a que pertencem: Comando:

70

Banco de Dados I select produtos.Nome as 'Nome Produto', categorias.Nome as 'Categoria' , Preco from produtos, categorias where produtos.CodCategoria = categorias.id and produtos.preco > 10

14.6 Equijoins entre mais de duas tabelas


Na maioria dos bancos de dados relacionais as tabelas relacionam-se entre si em mais de um nvel. Vamos definir uma consulta entre tabelas pedidos, produtos e categorias para exemplificar este recurso.
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do campo], [nome da tabela3].[nome do campo] from [nome da tabela1], [nome da tabela2], [nome da tabela3] WHERE ...

Comando:
select pedidos.id as 'Id do Pedido', produtos.nome as 'Nome do Produto', categorias.nome as 'Categoria' from pedidos, produtos, categorias where produtos.codcategoria = categorias.id AND pedidos.idProduto = produtos.id

Em situaes reais, muitas vezes sero criadas consultas entre diversas tabelas, geralmente com a ligao entre cada tabela e as demais sendo feita atravs de uma igualdade que ligue a chave primria de uma tabela com a chave estrangeira da outra.

14.7 Redefinio do Nome de Tabelas


Para facilitar a vida do administrador da base de dados, no necessrio que este digite o nome das tabelas em sua totalidade. possvel criar um alias para cada tabela, diminuindo, assim, a quantidade de caracteres digitados. O exemplo abaixo ilustra esta tcnica. Comando:
select PE.id as 'Id do Pedido', PR.nome as 'Nome do Produto', C.nome as 'Categoria' from pedidos as PE, produtos as PR, categorias as C where PR.codcategoria = C.id AND PE.idProduto = PR.id

14.8 Outros Tipos de Joins - Outer Joins


O resultado de uma instruo SQL que utiliza Equijoin, exibe os resultados que so comuns entre os campos das duas tabelas. Neste mtodo, ficam de fora as linhas que no encontram relao entre as duas tabelas. Porm esta informao de entradas que no aparecem num InnerJoin tambm pode ser til. Por exemplo, para saber se existe algum Cliente que nunca tenha feito um pedido. Left e Right Join Para que a questo acima seja respondida, necessrio entender que existe um lado da relao que ir listar seus registros, baseado no Left ou Right.

71

Banco de Dados I

Em algumas plataformas utilizado o * (asterisco) para determinar o lado do outer join. Em outras utilizado o (+) (sinal de adio entre parnteses). Ambos utilizados em locais diferentes. Na maioria dos casos utilizado o comando LEFT JOIN que aceito pelo MySQL e ser utilizado nos exemplos abaixo. Sintaxe do Left Join:
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do campo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nome do campo] * = [nome da tabela2].[nome do campo]

ou
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do campo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nome do campo](+) = [nome da tabela2].[nome do campo]

ou
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do campo] from [nome da tabela1] LEFT JOIN [nome da tabela2] ON [nome da tabela1].[nome do campo de relao] = [nome da tabela2].[nome do campo de relao]

Apenas a terceira sintaxe aceita pelo MySQL, por exemplo. Iremos inicialmente utilizar um comando LEFT JOIN para identificar clientes que no tem nenhum pedido. Para tanto teremos que restringir o retorno quelas linhas em que no existe uma ligao com a tabela 'pedidos' (portanto as entradas da tabela 'pedidos' retornam null):
select clientes.nome from clientes left join pedidos on IdCliente where pedidos.id is null clientes.Id =

Observao: o comando RIGHT JOIN no implementado em MySQL, mas invertendo-se as tabelas podese obter efeito equivalente.

14.9 Outros Tipos de Joins - Self Joins


Self Joins so relaes estabelecidas entre uma mesma tabela, por intermdio de dois de seus campos. So utilizadas normalmente quando a tabela referencia a si mesmo para definir uma hierarquia, por exemplo entre funcionrios. A nica diferena para um Inner Join comum que repetimos a mesma tabela com dois alias diferentes. Abaixo mostrada a sintaxe de um self join. Sintaxe:
Select * from [nome da tabela].[nome do campo1], [nome da tabela].[nome do campo2] where [nome da tabela].[nome do campo1]= [nome da tabela].[nome do campo2];

Supondo uma tabela 'funcionarios' em que existe um campo que referencia a prpria tabela, o campo 'chefe', que contm o Id do chefe de cada funcionrio. Atravs de um self join podemos listar todos os funcionrios que possuem um chefe, indicando quem o mesmo:
select F2.Nome as 'funcionrio', ' subordinado a', F1.Nome as 'chefe' from funcionarios as F1, funcionarios as F2 where F2.Chefe = F1.Id

72

Banco de Dados I

Laboratrio Crie a seguinte estrutura de tabelas, para executar os exerccios

Liste o nome e a quantidade de atendimentos por cliente Liste o nome e a quantidade de atendimentos por funcionrio Conte quantos produtos esto em cada pedido Calcule a mdia de valor dos pedidos de cada cliente Calcule o valor total de cada pedido Mostre a quantidade, total e mdia de pedidos por data Liste a mdia de pedidos que cada produto participou Liste o produto mais vendido por cada vendedor Mostre quantidade de pedidos por tipo de cliente e tipo de pedido Exiba todos os produtos que no tem pedido Liste os produtos por cliente que no foram solicitados por eles

73

Banco de Dados I

Liste quantos pedidos cada vendedor faz por data

74

Banco de Dados I

Unidade 15 15.1 Datas em MySQL

Trabalhando com datas

A forma de trabalhar com datas pode variar um pouco em diferentes bancos de dados. Aqui apresentamos recursos tendo como base o MySQL.

15.2 Recuperando Informaes Especficas de Data


Diversas funes permitem recuperar informaes especficas com base em uma data, como o dia, ms e ano de determinada data, como mostrado abaixo: DAY OF MONTH Seleciona o dia de uma data:
select DataPedido, dayofmonth(DataPedido) from pedidos

MONTH Seleciona o ms de uma data:


select DataPedido, month(DataPedido) from pedidos

YEAR Seleciona o ano de uma data:


select DataPedido, year(DataPedido) from pedidos

Formato das Datas Para definir diretamente uma data, por exemplo para um clculo ou para inserir no banco de dados, o formato um texto (separado por aspas) na forma "ano-ms-dia". O exemplo abaixo retorna o ano do dia 19 de maio de 1980: Exemplo:
select year('1980-05-19')

75

Banco de Dados I

Unidade 16 -

Exerccios Extras

1. Uma loja de roupas deseja criar um cadastro com suas peas. Cada pea possui um cdigo que a identifica, uma descrio, um preo-unitrio e uma quantidade em estoque. Deseja tambm manter um cadastro de seus clientes com nome, telefone (o cliente pode ter mais de um, ou nenhum), e as peas que ele j comprou. A data em que o cliente comprou a pea guardada. 2. Uma empresa bancria mantm um cadastro com os dados dos seus clientes( identidade, nome, endereo{ rua, CEP e bairro} e telefone { o cliente pode ter mais de um}) e de suas contas (nmero da conta e saldo). Um cliente pode ter mais de uma conta no banco e uma conta pode ser de mais de um cliente (conta conjunta). O banco mantm tambm um cadastro com as suas agncias (cdigo e nome), em que cada agncia pode ter mais de uma conta. 3. desenhe o Modelo E-R que descreva a situao da Empresa Acme Problemas Ltda., que apresenta a seguinte estrutura: a) cada empregado representado a partir das seguintes informaes bsicas: cdigo-empresa, nome, endereo; b) cada departamento representado por meio de: nome, cdigo departamento; c) cada empregado chefia um ou mais departamentos; d) cada item vendido representado pelo seu nome, preo, fornecedor, nmero do modelo (dado pelo fornecedor) e nmero interno do item ( dado pelo responsvel pelo estoque); e) cada fornecedor descrito pelo seu nome, endereo, itens fornecidos ao estoque e preo; f) os clientes cadastrados tm os seguintes dados: nome, endereo e telefone; g) os representantes da empresa junto aos clientes so empregados; 4. Um banco de dados, utilizado por uma faculdade, usa um sistema de cadastro de inscrio de disciplinas que contm as informaes aluno e inscrio. As seguintes informaes devem estar includas. Aluno: cdigo de aluno, nome do aluno, ano da admisso e telefone de contato; Inscrio: cdigo do aluno, cdigo da disciplina, nome da disciplina, cdigo do curso, nome do curso e data da matrcula. Projete o banco de dados para esses dados. Faa quaisquer suposies razoveis sobre as dependncias envolvidas.

76

Banco de Dados I

77

Banco de Dados I

5.Voc acabou de fundar sua empresa de consultoria , a Beija-Flor Consultoria , e seu primeiro trabalho e desenvolver um sistema para cadastro de clientes voc recebeu o cliente uma lista com os dados que devero compor o sistema , com base nesta lista normalize a estrutura de dados de acordo com as formas normais. Lista de informaes que devero compor o sistema cadastro de clientes: Nome Nome do Pai Nome da Me Endereo Telefone1 Telefone2 Nmero do Fax Nmero do Celular Telefone do trabalho Data de Nascimento Naturalidade Nacionalidade Endereo de correspondncia Nome do filho 1 idade do filho 1 Nome do filho 2 idade do filho 2 Nome do filho 3 idade do filho 3 Nome do filho 4 idade do filho 4 Nome do Cnjuge Nmero do CPF Nmero da carteira de identidade 6. De acordo com as regras , normalize as estruturas abaixo. Relao de Programadores: Numero da Matrcula Nome do Programador

78

Banco de Dados I

Setor Nvel ( 1,2,3) Descrio do Nvel ( 1 - Jnior, 2 - Pleno, 3 - Snior) Programas Codigo do Programa Nome do Programa Tempo Estimado Nvel de Dificuldade ( 1, 2 ou 3 ) Descrio da Dificuldade ( Fcil, Mdio, Difcil) Regras do negcio: - Um programa pode ser feito por mais de um Programador; - Um programador pode fazer um ou mais programas; - O Nvel de dificuldade do programa depende do tempo estimado para a elaborao do mesmo;

7. Voc deve representar usando o modelo lgico a situao descrita a seguir: O Departamento de Vendas da Indstria Beleza Ltda., aps estudos de mercado, verificou que para atingir seus objetivos seria necessrio adquirir frota de veculos prprios para motorizar seus vendedores. O mercado consumidor foi dividido em regies de venda; foram estabelecidos percursos de entrega abrangendo pontos estratgicos dessas regies e vendedores foram designados para cobrir estes percursos. Um sistema deve ser construdo para administrao da nova sistemtica de vendas adotada pela empresa. Aps entrevistas com o gerente da rea, foram obtidas as seguintes informaes: cada regio identificada por um cdigo; uma regio composta de vrios pontos estratgicos; as regies no tm pontos estratgicos em comum; o vendedor tem a responsabilidade de cobrir uma regio; uma regio pode ser coberta por vrios vendedores; a cada dia, um veculo fica sob-responsabilidade de um vendedor; um vendedor pode vender quaisquer itens ativos da tabela de produtos; o vendedor responsvel pela identificao de cada cliente consumidor na nota fiscal; a nota fiscal contendo identificao do vendedor, itens e quantidades vendidas exigida para comprovao da venda.

79

Banco de Dados I

Unidade 17 -

Projeto Final - Reviso

Construa um Diagrama Entidade-Relacionamento (DER) para modelar cada um dos sistemas abaixo, mas, como as descries so informais, elas se prestam a diferentes interpretaes. Por este motivo, no existe somente uma soluo correta, mas o diagrama deve refletir de forma coerente a descrio. No final, gere o script SQL e crie o banco de dados, cadastrando no mnimo 5 itens para cada tabela (faa todas as consultas necessrias e possveis para verificar a funcionalidade do banco).

1) Sistema Locadora Uma pequena locadora de vdeos possui ao redor de 2000 fitas de vdeo, cujo emprstimo deve ser controlado. Cada fita possui um nmero. Para cada filme, necessrio saber seu ttulo e sua categoria (comdia, drama, aventura,... ). Cada filme recebe um identificador prprio. Cada fita controlada que filme ela contm. Para cada filme h pelo menos uma fita, e cada fita contm somente um filme. Alguns poucos filmes necessitam mais de uma fita. Os clientes podem desejar encontrar os filmes estrelados pelo seu ator predileto. Por isso, necessrio manter a informao dos atores que estrelam em cada filme. Nem todo filme possui estrelas. A locadora possui muitos clientes cadastrados. Somente clientes cadastrados podem alugar fitas. Para cada cliente necessrio saber seu prenome e seu sobrenome, seu telefone e seu endereo. Alm disso, cada cliente recebe um nmero de associado. Finalmente desejamos saber que fitas cada cliente tm emprestadas. Um cliente pode ter vrias fitas em um instante do tempo. No so mantidos registros histricos de aluguis.

80

Banco de Dados I

Unidade 18 -

Principais Bancos de Dados

O dinamismo da rea de tecnologia da informao nos proporciona contatos cada vez mais frequentes com uma infinidade de modelos de banco de dados. A cada dia vemos a notcia do lanamento de uma nova plataforma de gerenciamento de dados. No entanto alguns bancos de dados obtiveram maior notoriedade no mundo da informtica. Dentre estes bancos cabe destacar o Microsoft Access, que foi um dos precursores dos SGBDs. Sua inovao em termos de capacidade de armazenamento e dinamismo foi o principal responsvel pelo seu enorme sucesso. entretanto com a popularizao da Internet, e por sua vez, da distribuio das informaes em redes de grande alcance, sua limitaes foram fincando evidentes. Abriu-se ento espao para os chamados softwares livres. Esta nova realidade proporcionou o aparecimento do MySQL, PostGreSQL e tantos outros. Por sua maior capacidade de desempenho em um ambiente compartilhado, estes sistemas ganharam fora na internet, sendo responsveis por um grande mercado de sites pessoais e de pequeno-mdias corporaes. Quando nos referimos a grandes corporaes, que dependem criticamente do controle de seus dados, nos deparamos com a necessidade de bancos de dados que trabalhem, com recursos mais avanados, tais como replicao, servios de integrao, bussines inteligence, etc. Neste contexto encontramos como grandes expoentes o SQL SERVER e o ORACLE alm de outros com menor expresso. O SQL SERVER tem como grande diferencial ser da Microsoft o que faz com que sua integrao com linguagens .Net ocorra de forma natural. Nas prximas unidades de nosso material iremos trabalhar com 3 destes SGBDs. Cada um deles representado um formato de objetivo de uso do banco de Dados. Iniciaremos pelo precursor da popularizao do mesmo, o Microsoft Accces. Depois trataremos das principais caractersticas e formas de manipulao do MYSQL. Finalizando nosso trabalho falaremos do SQL SERVER e seus principais atributos.

81

Banco de Dados I

Unidade 19 -

Microsoft Access

19.1 Introduo
O Access um poderoso software de gerenciamento de banco de dados, que possibilita ao usurio um gerenciamento preciso de dados e a possibilidade de gerao de consultas, formulrios, relatrios, etiquetas e a criao de aplicativos personalizados, bem como a integrao com outros aplicativos.

19.2 ARQUIVOS DE BANCO DE DADOS DO ACCESS


Com o Microsoft Access, voc pode gerenciar todas as informaes em um nico arquivo de banco de dados. No arquivo, voc pode utilizar: Tabelas para armazenar seus dados. Consultas para localizar e recuperar apenas os dados desejados. Formulrios para exibir, adicionar e atualizar dados em tabelas. Relatrios para analisar ou imprimir dados em um layout especfico. Pginas de acesso a dados para exibir, atualizar ou analisar os dados do banco de dados na Internet ou em uma intranet.

82

Banco de Dados I

TABELAS E RELACIONAMENTOS Para armazenar dados, crie uma nica tabela para cada tipo de informao rastreada. Para reunir os dados de vrias tabelas em uma consulta, formulrio, relatrio ou pgina de acesso a dados, defina relacionamentos entre as tabelas.

83

Banco de Dados I

CONSULTAS Para localizar e recuperar somente os dados que atendem s condies especificadas, incluindo dados de vrias tabelas, crie uma consulta. Uma consulta tambm pode atualizar ou excluir diversos registros simultaneamente, alm de efetuar clculos predefinidos ou personalizados em seus dados.

FORMULRIOS Para exibir, inserir e alterar dados de maneira fcil e direta, crie um formulrio. Quando voc abre um formulrio, o Microsoft Access recupera os dados de uma ou mais tabelas e exibe-os na tela com o layout escolhido no Assistente de formulrio, ou com o layout criado por voc no modo de design.

RELATRIOS

84

Banco de Dados I

Para

analisar

os

dados crie

ou um

imprimi-los relatrio.

de Por

determinada

maneira,

exemplo, voc poderia imprimir um relatrio que agrupasse dados e calculasse totais, e outro relatrio com outros dados formatados para

impresso de etiquetas de endereamento.

85

Banco de Dados I

PGINA DE ACESSO A DADOS Para disponibilizar dados na Internet ou em uma intranet para relatrios interativos,

entrada ou anlise de dados, use uma pgina de acesso a dados. O Microsoft Access recupera os dados de uma ou mais tabelas e exibe-os na tela com o layout criado por voc no modo de design ou com o layout escolhido no Assistente de pgina.

19.3 INICIANDO O ACCESS


Para acessar o Access basta utilizar a barra de ferramentas do Office ou atravs de IniciarProgramas(Todos os programas) ( Microsoft Office) Microsoft Access. recomendvel criar um atalho na rea de trabalho para tornar o acesso ao Access mais rpido. Se voc preferir inicializar o Access automaticamente quando liga seu computador, crie um atalho dentro da pasta Iniciar do menu Programas.

19.4 PRIMEIROS CONTATOS


Ao acessar o Access ser exibida uma tela que depende da verso de seu Microsoft Office, e que poder variar conforme a configurao que o usurio tenha definido inicialmente. Comparando com outros aplicativos do Office, o Access no abre automaticamente um novo arquivo como o Word e o Excel, desta forma o usurio dever optar por uma das opes no Painel de Tarefa.. O Access grava seus arquivos com a extenso MDB e alm desta extenso existe um arquivo com extenso LDB que criado automaticamente quando um arquivo do Access aberto. O arquivo LDB tem por finalidade gerenciar bloqueio de registros quando um banco de dados estiver sendo utilizado em modo compartilhado

86

Banco de Dados I

Barra de menu

Barra ttulo

de

Lista de Objetos

Barra de Satus

19.5 MENUS E BARRAS DE FERRAMENTAS


Um menu exibe uma lista de comandos. Alguns desses comandos apresentam imagens ao lado para que voc possa associar rapidamente o comando imagem. A maioria dos menus est localizada na barra de menus, que a barra de ferramentas na parte superior da tela. As barras de ferramentas podem conter botes, menus ou uma combinao dos dois. Seguem dois tipos de barras de ferramentas e menus

87

Banco de Dados I

19.6 JANELA BANCO DE DADOS


Quando voc cria ou abre um arquivo do Microsoft Access, exibida a janela Banco de dados, que o centro de comando do arquivo do Access. Nela, possvel criar ou utilizar qualquer objeto de banco de dados ou de projeto do Access.

88

Banco de Dados I

Os objetos de um banco de dados do Access se relacionam como mostrado na figura abaixo:

89

Banco de Dados I

90

Banco de Dados I

19.7 CRIANDO UM NOVO BANCO DE DADOS


O Microsoft Access oferece dois mtodos para criao de um banco de dados do Access. Voc pode usar um Assistente de banco de dados para criar em uma operao as tabelas, formulrios e relatrios necessrios para o tipo de banco de dados que voc escolheu - esse o modo mais fcil para iniciar a criao do banco de dados. Ou voc pode criar um banco de dados em branco e adicionar as tabelas, formulrios, relatrios e outros objetos posteriormente - esse o mtodo mais flexvel, mas exige que voc defina cada elemento de banco de dados separadamente. Em qualquer dos mtodos, voc pode modificar e estender o banco de dados a qualquer momento aps ele ter sido criado.

Criar um banco de dados utilizando um Assistente de banco de dados: Clique em Novo na barra de ferramentas. base em

No painel de tarefas Novo arquivo, em Novo com modelo, clique em Modelos gerais. Na guia Bancos de dados, clique no cone do tipo de dados que voc deseja criar e, em seguida, clique Na caixa de dilogo Novo arquivo de banco de especifique um nome e local para o banco de dados seguida, clique em Criar. Siga as instrues do Assistente de banco de dados.

de

banco

em OK. dados, e, em

Observao: No possvel usar o Assistente de banco de dados para adicionar novas tabelas, formulrios ou relatrios a um banco de dados existente.

Em verses mais atuais a exibio do assistente para a criao de um novo banco de dados, baseia-se na possibilidade de baixar novos modelos de bancos de dados. Segue uma imagem que retrata esta opo

91

Banco de Dados I

Criar um banco de dados sem utilizar um Assistente de banco de dados Clique em Novo na barra de ferramentas.

No painel de tarefas Novo arquivo, em Novo, clique em Banco de dados em branco. Na caixa de dilogo Novo arquivo de banco de dados, especifique um nome e local para o banco de dados e, em seguida, clique em Criar. A janela Banco de dados ser exibida para voc criar os objetos que deseja em seu banco de dados.

19.8 ABRINDO UM BANCO DE DADOS


No menu Arquivo(Boto do Microsoft Office), clique em Abrir .

Clique em um atalho no lado esquerdo da caixa de dilogo Abrir ou, na caixa Examinar, clique na unidade de disco ou pasta que contm o banco de dados do Microsoft Access que voc deseja. Na lista de pastas, clique duas vezes nas pastas at abrir aquela que contm o banco de dados. Se voc no conseguir localizar o banco de dados que deseja abrir, clique em Ferramentas na barra de ferramentas da caixa de dilogo Abrir e, em seguida, clique em Pesquisar de dilogo Pesquisar, digite critrios de pesquisa adicionais. . Na caixa

92

Banco de Dados I

Siga um destes procedimentos: Clique duas vezes no banco de dados. Para abrir o banco de dados para acesso compartilhado em um ambiente multiusurio, de modo que voc e outros usurios possam ler e gravar no banco de dados, clique em Abrir. Para abrir o banco de dados para acesso somente leitura de modo a poder visualiz-lo mas no edit-lo, clique na seta prxima ao boto Abrir e, em seguida, clique em Abrir como somente leitura. Para abrir o banco de dados com acesso exclusivo, clique na seta prxima ao boto Abrir e, em seguida, clique em Abrir exclusivo. Para abrir o banco de dados para acesso somente leitura e tambm impedir que outros usurios o abram, clique na seta prxima ao boto Abrir e, em seguida, clique em Abrir exclusivo como somente leitura.

Observao: Voc pode abrir diretamente um arquivo de dados em um formato de arquivo externo, como dBASE, Paradox, Microsoft Exchange, ou Microsoft Excel; voc tambm pode abrir diretamente qualquer fonte de dados ODBC, como Microsoft SQL Server ou Microsoft FoxPro. O Access cria automaticamente um novo banco de dados do Access na mesma pasta do arquivo de dados e adiciona vnculos a cada tabela no banco de dados externo.

19.9 FECHANDO UM BANCO DE DADOS

93

Banco de Dados I

Proceda da mesma forma utilizada para fechar os outros programas do pacote MS Office quando sair de um arquivo de banco de dados. Ative a opo Fechar do menu Arquivo do programa.

Laboratrio A. O que um banco de dados?

B.

Cite 3 exemplos de banco de dados:

C.

Quais so os objetos de um banco de dados do Access?

D.

Quais so os dois tipos de arquivos padro criados pelo Access?

E.

Ao copiar um arquivo de banco de dados, necessrio copiar tambm o arquivo com extenso LDB? Justifique:

F.

Como possvel abrir mais de um banco de dados ao mesmo tempo no Access?

94

Banco de Dados I

Unidade 20 -

TABELAS

Uma tabela um conjunto de dados sobre um tpico especfico, como produtos ou fornecedores. Utilizar uma tabela separada para cada tpico significa armazenar os dados somente uma vez. Isso resulta em um banco de dados mais eficiente e em menos erros de entrada de dados. Como os dados so organizados em tabelas Tabelas organizam dados em colunas (chamadas campos) e linhas (chamados registros).

Por exemplo, cada campo em uma tabela Produtos contm o mesmo tipo de informao para cada produto, como o nome do produto. Cada registro nessa tabela contm todas as informaes sobre um produto, como o nome do produto, o nmero de identificao do fornecedor, as unidades em estoque etc. Modo de design da tabela No modo de design da tabela, possvel criar uma tabela inteira desde o incio ou adicionar, excluir ou personalizar os campos em uma tabela existente.

95

Banco de Dados I

Como relacionar duas tabelas Um campo comum relaciona duas tabelas a fim de que o Microsoft Access possa reunir os dados das duas tabelas para visualizao, edio ou impresso. Em uma tabela, o campo uma chave primria que voc define no modo de design da tabela. Esse mesmo campo tambm existe na tabela relacionada como uma chave externa.

Modo de folha de dados da tabela. Em uma tabela ou consulta, o modo de folha de dados fornece as ferramentas necessrias para voc trabalhar com dados. Usando as barras de ferramentas Folha de dados da tabela e Folha de dados da consulta As barras de ferramentas Folha de dados da tabela e Folha de dados da consulta fornecem muitas das ferramentas necessrias para localizar, editar e imprimir registros.

96

Banco de Dados I

Trabalhando com colunas, linhas e subfolhas de dados Voc pode encontrar ferramentas para trabalhar com colunas, linhas e subfolhas de dados na prpria folha de dados, ou clicando com o boto direito do mouse em um seletor de colunas.

Percorrendo registros Voc pode usar a barra de ferramentas de navegao para percorrer os registros de uma folha de dados.

97

Banco de Dados I

20.1 CRIANDO UMA NOVA TABELA


A criao de uma tabela no Access pode ser realizada de 3 maneiras diferentes como como vamos ver a seguir: Observao: As informaes deste tpico se aplicam somente a um banco de dados do Microsoft Access (.mdb).

Para criar uma tabela em branco (vazia) a fim de inserir seus prprios dados, voc pode:

20.2 Criar uma tabela usando o Assistente de tabela


Em Objetos, clique em Tabelas e, em seguida, clique em Novo na barra de ferramentas da janela Banco de Dados. Clique duas vezes em Assistente de tabela. Siga as instrues das caixas de dilogo do Assistente de tabela.

98

Banco de Dados I

20.3 Criar uma tabela inserindo dados em uma folha de dados


Em Objetos, clique em Tabelas e, em seguida, clique em Novo na barra de ferramentas da janela Banco de dados. Clique duas vezes em Modo folha de dados. Uma folha de dados em branco exibida. Os nomes padro das colunas so Campo1, Campo2, e assim por diante. Renomeie cada coluna que voc ir utilizar: clique duas vezes no nome da coluna, digite um nome para ela e pressione ENTER. Voc pode inserir colunas adicionais a qualquer momento: clique na coluna direita de onde voc deseja inserir uma nova coluna e, em seguida, no menu Inserir, clique em Coluna. Renomeie a coluna como descrito na etapa 4. Insira seus dados na folha de dados. Insira cada tipo de dados em sua prpria coluna (cada coluna chamada de campo no Microsoft Access). Por exemplo, se voc estiver inserindo nomes, insira o nome em uma determinada coluna e o sobrenome em uma coluna separada. Se estiver inserindo datas, horas ou nmeros, insira-os em um formato consistente para que o Microsoft Access possa criar um tipo de dados e um formato de exibio apropriados para a coluna. Qualquer coluna que voc deixar vazia ser excluda quando voc salvar a folha de dados.

99

Banco de Dados I

Quando voc tiver adicionado dados a todas as colunas que deseja utilizar, clique em Salvar na barra de ferramentas para salvar sua folha de dados. O Microsoft Access pergunta se voc deseja criar uma chave primria. Se voc no inseriu dados que possam ser utilizados para identificar cada linha de sua tabela de forma exclusiva, como nmeros de srie ou de identificao, recomendvel que voc clique em Sim. Se voc inseriu dados que possam identificar cada linha de forma exclusiva, clique em No e especifique o campo que contm os dados como sua chave primria no modo de design.

20.4 Criar uma tabela no modo design


Em Objetos, clique em Tabelas e, em seguida, clique em Novo na barra de ferramentas da janela Banco de Dados. Clique duas vezes no Modo de design. Defina cada um dos campos de sua tabela. Abra a tabela no modo de design. Para inserir um campo dentro da tabela, clique na linha abaixo de onde voc deseja adicion-lo e, em seguida, clique em Inserir Linhas na barra de ferramentas.

Para adicionar um campo ao final de uma tabela, clique na primeira linha em branco. Clique na coluna Nome do campo e digite um nome exclusivo para o campo. Na coluna Tipo de dados, mantenha o padro (Texto) ou clique na coluna Tipo de dados, clique na seta e selecione o tipo de dados desejado.

100

Banco de Dados I

Na coluna Descrio, digite uma descrio das informaes que constaro nesse campo. Essa descrio exibida na barra de status quando dados so adicionados ao campo e ela includa na definio do objeto da tabela. A descrio opcional. Defina um campo de chave primria antes de salvar sua tabela. Abra uma tabela no modo de design. Selecione o campo ou campos que voc deseja definir como chave primria. Para selecionar um campo, clique no seletor de linha do campo desejado. Para selecionar vrios campos, mantenha pressionada a tecla CTRL e, em seguida, clique no seletor de linha de cada campo. Clique em Chave primria na barra de ferramentas.

Observao Se voc deseja que a ordem dos campos em uma chave primria de campos mltiplos seja diferente da ordem desses campos na tabela, clique em ndices na barra de

ferramentas para exibir a janela ndices e, em seguida, ordene novamente os nomes dos campos para o ndice denominado Chave Primria. Observao: Voc no precisa definir uma chave primria, mas normalmente recomendvel faz-lo. Se voc no definir uma chave primria, o Microsoft Access perguntar se voc deseja que ele crie uma quando for salvar a tabela.

20.5 TIPOS DE DADOS


Ao definir um novo campo em uma tabela o usurio dever especificar o seu tipo de dados. A lista a seguir resume todos os tipos de dados de campos disponveis no Microsoft Access, seus usos e tamanhos de armazenamento.

Texto Use para texto ou combinaes de texto e nmeros, como endereos, ou para nmeros que no exigem clculos, como cdigos postais, nmeros de telefone ou de peas. Armazena at 255 caracteres. A propriedade FieldSize controla o nmero mximo de caracteres que podem ser inseridos. Memorando Use para texto longo e nmeros, como anotaes ou descries. Armazena at 65.536 caracteres.

101

Banco de Dados I

Nmero Use para dados numricos a serem includos em clculos matemticos, exceto os que envolvam valores monetrios (use o tipo Moeda). Armazena 1, 2, 4 ou 8 bytes; 16 bytes para cdigo de replicao (GUID). A propriedade FieldSize define o tipo Nmero especfico. Data/Hora Use para datas e horas. Armazena 8 bytes. Moeda Use para valores monetrios e para evitar arredondamento durante os clculos. Armazena 8 bytes. AutoNumerao Use para nmeros sequenciais (incremento de 1) ou aleatrios exclusivos que so automaticamente inseridos quando um registro adicionado. Armazena 4 bytes; armazena 16 bytes para cdigo de replicao (GUID). Sim/No Use para dados que podem ter somente um de dois valores possveis, como Sim/No, Falso/Verdadeiro, Ativado/Desativado. Valores Nulo no so permitidos. Armazena 1 bit. Objeto OLE Use para objetos OLE (como documentos do Microsoft Word, planilhas do Microsoft Excel, imagens, sons ou outros dados binrios) que foram criados em outros programas usando o protocolo OLE. Armazena at 1 gigabyte (limitado pelo espao em disco). Hiperlink Use para hiperlinks. Um hiperlink pode ser um caminho UNC ou um URL. Armazena at 64.000 caracteres. Assistente de pesquisa Use para criar um campo que permite escolher um valor em outra tabela ou lista de valores usando uma caixa de combinao a escolha desta opo na lista de tipos de dados iniciar um assistente que definir isso para voc. Requer o mesmo tamanho de armazenamento que a chave primria que corresponde ao campo Pesquisa - normalmente 4 bytes.

102

Banco de Dados I

20.6 PROPRIEDADES DE CAMPOS


Alm do tipo de dados outras propriedades podem ser definidas com o objetivo de restringir a entrada de dados ou mudar a sua exibio no qual listamos abaixo algumas:

Propriedade

Descrio

Casas decimais

O nmero de casas aps a vrgula para dados do tipo nmero. Um texto que descreve o campo e serve como auxlio no modo folha de dados. O formato serve basicamente para alterar a exibio dos dados. Dependendo do tipo de dados o usurio poder escolher entre um dos formatos pr-definidos.

Descrio

Formato

Como exemplo de formatao pode citar : >[Vermelho] : Exibe maisculas e em vermelho mmm-aaaa : Exibe uma data no formato ms abreviado e ano completo. Quando for necessrio emitir um relatrio ou exibir uma os dados em letras

Indexado

consulta ordenada por um determinado campo o usurio poder criar um ndice para este campo que tornar a consulta ou relatrio mais rpidos de serem executados. A legenda o ttulo da coluna na tabela. Se no for

Legenda

especificada o usurio utilizar o prprio nome do campo como ttulo da coluna. Serve para restringir e auxiliar o usurio na entrada de dados.

Mscara de entrada

Por exemplo uma mscara de entrada para um campo CPF poderia ser informada da seguinte forma : 000.000.000-00

Novos valores

Define como o Access ir gerar os valores de um campo do tipo de dados AutoNumerao.

Permitir comprimento Define se um campo aceita somente espaos em

103

Banco de Dados I

Propriedade

Descrio

zero

branco como contedo. Uma expresso que restringe a entrada de dados no

Regra de validao

campo. Por exemplo a Regra de Validao <=Data() no permite a entrada de um data maior que a data atual.

Requerido

Define se um campo deve ser obrigatoriamente preenchido ou no. De acordo com o tipo de dados o usurio poder definir qual o tamanho do campo. Por exemplo ao utilizar um

Tamanho do campo

campo do tipo nmero, o usurio dever especificar um dos tamanhos permitidos de acordo com a tabela de tipos de dados.

Texto de validao

Um texto que exibido quando o usurio excede a regra de validao. Um valor que ser automaticamente colocado no

Valor padro

campo evitando que o usurio digite sempre o mesmo valor para um campo que no sofre muitas alteraes.

20.7 BARRA DE FERRAMENTAS DO MODO DESIGN DE TABELA


A barra de ferramentas do modo design apresenta os seguintes botes, que tem por finalidade facilitar algumas aes. Os comandos no citados possuem a mesma funo dos outros aplicativos Office. Alterna entre os modos Novo objeto

Janela do banco de dados

104

Banco de Dados I

Construir (Expresses) Define um campo como chave primria Propriedades Permite a ndices de primria edio dos uma tabela Inserir linha

Excluir linha

20.8 EDITANDO DADOS NO MODO FOLHA DE DADOS


Existem vrias maneiras de cadastrar dados em um banco de dados do Access, uma das maneiras atravs do modo folha de dados, muito semelhante ao modo no qual os dados so inseridos em uma planilha do Excel. Na base do modo folha de dados so encontrados os botes que servem para navegao de registros.

105

Banco de Dados I

A tabela abaixo descreve as alteraes da barra de ferramentas quando alternamos para o modo folha de dados.

Boto

Nome

Descrio

Alterna para o modo estrutura que permite a alterao das definies da tabela. Inserir Em um campo do tipo hyperlink permite que o usurio hyperlink informe um caminho vlido. Barra de Exibe a barra de ferramentas para navegao na ferramentas Web Internet. Classificao Classifica os dados na ordem crescente pelo campo crescente selecionado. Classificao Classifica os dados na ordem decrescente pelo campo decrescente selecionado. Filtrar por Ativa o modo de filtro exibindo somente os dados com a seleo seleo atual. Filtrar por Permite que o usurio defina um filtro mais complexo formulrio para a tabela atual. Aplicar/remov Aplica ou remove um filtro ativado pelos dois botes er filtro anteriores. Localizar Ativa a caixa de dilogo Localizar. Exibir Novo registro Excluir registro Permite a incluso de novos registros. Exclui o(s) registro(s) atualmente selecionados(s).

106

Banco de Dados I

LABORATRIO G. No Windows Explorer crie uma pasta chamada Curso de Access na unidade de disco C:\Meus Documentos

H.

Crie um banco de dados com o seu nome na pasta criada no item anterior:

I.

Crie as tabelas descritas a seguir: tblCargos Campo Cdigo do cargo Descrio do cargo Tipo de dados AutoNumerao Texto Tamanho Inteiro Longo 25

tblSetores Campo Cdigo do setor Descrio do setor Tipo de dados AutoNumerao Texto Tamanho Inteiro Longo 25

tblEmpresas Campo Cdigo empresa Razo Social Fone Fax Observaes Tipo de dados da AutoNumerao Texto Texto Texto Memorando Tamanho Inteiro Longo 50 10 07 >[Azul] (999) 9999 999-9999 999Mscara

tblFuncionrios Campo Cdigo do funcionrio Cdigo da empresa Nome do funcionrio Tipo de dados AutoNumerao Nmero Texto Tamanho Inteiro Longo Inteiro Longo 30

107

Banco de Dados I

Cdigo do cargo Cdigo do setor Salrio J. K.

Nmero Nmero Moeda

Inteiro Longo Inteiro Longo

Na tabela tblCargos cadastre os seguintes cargos: Gerente, Auxiliar administrativo, Diretor: Na tabela tblSetores cadastre os seguintes setores: Produo, Administrao, Recursos Humanos: Feche o banco de dados criado e saia do Access:

L.

108

Banco de Dados I

Unidade 21 -

RELACIONAMENTOS

21.1 BANCO DE DADOS RELACIONAL


Um banco de dados relacional armazena suas informaes em diversas tabelas que se relacionam atravs de determinados campos (chave-primria). O Access um sistema de gerenciamento de banco de dados relacional, pois as diversas informaes de um banco de dados em Access podem ser divididas em diversas tabelas e relacionadas entre si para a emisso de relatrios e gerao de consultas, porm antes de utilizar os dados de diversas tabelas os relacionamentos devem ser definidos. Como exemplo de relacionamentos, citamos no quadro abaixo o relacionamento existente entre uma tabela de Empresas e uma tabela de Contatos:

Ao relacionarmos tabelas, as mesmas devem possuir campos equivalentes, no necessariamente como o mesmo nome, mas com o mesmo tamanho e tipo de dados.

21.2 TIPOS DE RELACIONAMENTOS


Os tipos de relacionamentos so divididos em trs tipos bsicos e so descritos a seguir: Relacionamentos Um-Para-Vrios Ocorre quando um registro na tabela primria se relaciona com vrios registros na tabela secundria.

109

Banco de Dados I

Relacionamentos Um-Para-Um Ocorre quando um registro na tabela primria se relaciona com apenas um registro na tabela secundria.

Relacionamentos Vrios-Para-Vrios Os relacionamentos vrios-para-vrios no so gerenciados diretamente pelo Access e devem ser evitados com a adio de uma tabela intermediria como no exemplo abaixo:

A incluso da tabela Detalhes da obra quebrou o relacionamento vrios-para-vrios existente entre as duas tabelas relacionando-as indiretamente.

110

Banco de Dados I

21.3 DEFININDO OS RELACIONAMENTOS


Para definir os relacionamentos no Access basta utilizar o boto relacionamentos da barra de ferramentas ou atravs do menu FerramentasRelacionamentos. Em primeiro lugar o usurio dever adicionar as tabelas que faro parte do relacionamento, logo aps basta arrastar o campo, que ser relacionado, da tabela primria para a tabela secundria e a seguinte caixa de dilogo ser exibida.

Alm do relacionamento em si tambm podem ser definidas algumas propriedades que so descritas abaixo:

Boto

Nome A integridade referencial um sistema de regras que o Microsoft Access utiliza para garantir que os relacionamentos entre registros de tabelas relacionadas sejam vlidos e que voc no exclua ou altere, acidentalmente, dados relacionados.

Impor integridade referencial

Propagar atualizao campos relacionados Propagar excluso registros selecionados

Atualiza dados na tabela secundria dos automaticamente quando os dados forem alterados na tabela primria. dos Exclui dados na tabela secundria automaticamente quando os dados forem excludos na tabela primria.

111

Banco de Dados I

As botes descritos abaixo so exibidos na tela de relacionamentos :

Boto

Nome

Descrio

Adiciona novas tabelas a tela de relacionamentos. Mostrar Exibe todos os relacionamentos diretos da relacionamentos diretos tabela selecionado. Mostrar todos os Exibe todos os relacionamentos existentes no relacionamentos banco de dados atual Limpa todos os relacionamentos. Limpar layout Adicionar tabelas Para excluir um relacionamento existente basta apenas marcar a linha que representa o relacionamento desejado e pressionar a tecla DELETE. Caso o usurio exclua uma tabela da tela de relacionamentos, as relaes no sero excludas. Definindo as Propriedades de Pesquisa Um dos objetivos de relacionar tabelas evitar dados redundantes, aps ter criado as tabelas do banco de dados o usurio poder definir no modo estrutura de tabela as propriedades de pesquisa, que permitiro que determinados campos exibam dados de outras tabelas. Por exemplo, ao cadastrar um novo produto ao invs de termos que digitar o cdigo da categoria podemos definir as propriedades de pesquisa do campo cdigo da categoria para que seja exibida uma caixa de combinao com o nome das categorias. A maneira mais simples de definirmos as propriedades de pesquisa de um campo utilizarmos a opo Assistente de pesquisa no tipo de dados do campo. Ao definir as propriedades de pesquisa atravs do Assistente de pesquisa o Access criar automaticamente o relacionamento, porm no definir as regras de integridade referencial e propagao de atualizao e excluso.

112

Banco de Dados I

LABORATRIO 3 Atravs do comando relacionamentos, relacione as tabelas criadas no laboratrio 2.

Atravs do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de pesquisa para o campo Cdigo da empresa na tabela tblFuncionrios:

Atravs do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de pesquisa para o campo Cdigo do cargo na tabela tblFuncionrios:

Atravs do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de pesquisa para o campo Cdigo do setor na tabela tblFuncionrios:

Quais tabelas seriam necessrias para criar um banco de dados de uma locadora de veculos? Elabore um modelo. (Este laboratrio dever ser realizado em conjunto com o instrutor e a turma)

113

Banco de Dados I

Unidade 22 -

CONSULTAS

22.1 O QUE SO AS CONSULTAS NO ACCESS


Como foi descrito anteriormente as consultas so perguntas feitas sobre os dados de um banco de dados ou aes que modificam estes dados. Quando voc abre uma consulta no modo de design, ou abre um formulrio, relatrio ou folha de dados e mostra a janela Filtrar/classificar avanado, exibida a grade de design, que pode ser utilizada para fazer uma variedade de alteraes a fim de obter os resultados desejados da consulta.

22.2 Criar uma consulta usando o Assistente de consulta


Em Objetos, clique em Consulta e, em seguida, clique em Novo na barra de ferramentas da janela Banco de Dados. Clique em um dos modos de Assistente de consulta.

Em seguida selecione uma tabela ou consulta na caixa de dialogo Assistente de consultas...

114

Banco de Dados I

Clique no boto Avanar e na prxima caixa de dialogo de um nome para sua consulta, em seguida clique em Concluir.

22.3 Criar uma consulta usando o modo desgin


Em Objetos, clique em Consulta e, em seguida, clique em Criar consulta no modo Design na janela Banco de Dados. Na caixa de dialogo Mostrar tabela, selecione as tabelas ou consultas que voc queira adicionar. Em seguida clique no boto Adicionar e logo aps no boto Fechar.

115

Banco de Dados I

Na caixa de dialogo Consulta1: consulta seleo, arraste os campos das tabelas, que voc queira verificar na sua consulta, para grande de design.

Para executar uma consulta no modo design clique no boto Executar na barra de ferramentas Design de consulta. As consultas no Access so realizadas na grade QBE (query by exemple) que permite a definio de consultas complexas sem a necessidade de programao em SQL (Structured Query Language). O exemplo abaixo mostra uma consulta para verificar os pedidos trimestrais entre 01/01/1997 e 31/12/1997.

116

Banco de Dados I

Os botes descritos abaixo so exibidos na tela de consultas :

Boto Nome Tipo consulta Executar Adicionar tabelas Totais Valores principais

Descrio de Alterna entre os tipos de consultas permitidos pelo Access. Executa a consulta atualmente definida. Adiciona novas tabelas a tela de consultas.

Exibe a linha de Totais na grade QBE que permite a totalizao de dados. Permite a definio de percentuais de registros a serem exibidos como resultado.

117

Banco de Dados I

22.4 TIPOS DE CONSULTAS


Como foi descrito anteriormente as consultas so perguntas feitas sobre os dados de um banco de dados ou aes que modificam estes dados. Consulta Seleo o tipo mais comum de consulta do Access, tem por objetivo retornar ao usurio uma srie de dados de uma ou mais tabelas. Atravs do boto de Totais poder tambm retornar dados resumidos. O exemplo abaixo mostra a definio de uma consulta de seleo simples com dados de duas tabelas.

O exemplo abaixo mostra a definio de uma consulta de seleo com totais.

118

Banco de Dados I

Consulta de Tabela de Referncia Cruzada As consultas de referncia cruzada tm por objetivo resumir dados e utilizam basicamente um recurso semelhante ao utilizado nas tabelas dinmicas do Excel. A figura abaixo mostra um exemplo de consulta de referncia cruzada:

Consulta Criar Tabela A consulta do tipo Criar tabela permite que dados de uma ou mais tabelas sejam lanados em uma nova tabela. A interface semelhante ao das consultas de seleo a nica diferena que ao alterar o tipo de consulta o usurio dever informar o nome da tabela que ser gerada. O exemplo abaixo mostra um exemplo onde uma nova tabela ser criada com base em dados de trs tabelas existentes:

119

Banco de Dados I

Consulta Atualizao A consulta do tipo Atualizao permite que um grupo de registros seja atualizado rapidamente. Como no exemplo abaixo que mostra uma consulta que atualiza todos as Bebidas em 10%:

120

Banco de Dados I

Consulta Acrscimo A consulta do tipo acrscimo utilizada para transportar registros entre tabelas. O exemplo abaixo mostra uma consulta que anexa dados de uma tabela chamada Novos Produtos na tabela de Produtos existente:

Consulta Excluso A consulta do tipo excluso serve para excluir um conjunto de registro de uma tabela baseado em critrios informados. Os registros so excludos definitivamente. A tela abaixo exibe a definio de uma consulta que exclui todos os produtos da categoria Brinquedos da tabela de Produtos:

121

Banco de Dados I

Utilizando Parmetros Os parmetros so variveis definidas pelo usurio que tm seus valores informados na execuo da consulta. Por exemplo ao invs do usurio fornecer um critrio do tipo Bebidas para uma consulta que lista os produtos de uma categoria especfica o usurio pode utilizar um critrio do tipo [Entre com o nome da categoria]. No exemplo abaixo ilustramos a consulta descrita acima:

O texto utilizado como parmetro no pode ser um nome de campo e deve ter o seu tipo de dados especificado atravs do comando ConsultaParmetros.

122

Banco de Dados I

123

Banco de Dados I

LABORATRIO 4 M. Abra o banco de dados Testando as consultas.mdb na pasta Curso de Access 2003:

N.

Crie as consultas descritas logo abaixo: Nome da consulta Tabela/Campos Produtos: Lista de produtos Produto Preo Unitrio Pas dos Funcionrios Funcionrios por pas Funcionrios : Nome Pas Funcionrios: Pas Cdigo Categorias: Produtos por categoria Categoria Produtos: Produto Produtos: Produtos com estoque crtico produto Unidades em estoque Clientes: Empresas com fax empresa Fax Clientes: Clientes do Brasil e empresa Argentina Fone Pas Atualizao do preo em 10% Excluso dos clientes da Produtos: Unitrio Preo Atualizar para: [PreoUnitrio]*1 ,1 Clientes: Pas Critrio: Argentina Nome da Nome da empresa Nome da Nome da empresa Critrio: Negado nulo Nome do Nome do produto Critrio: Entre 10 e 20 Cdigo do Nome da Nome da Categoria Nome do Classificao Nome do Produto Critrios/Obs Critrio: Preo Unitrio >95

Nome Consulta com Totais Consulta com Totais

Pas

Critrio: Brasil ou Argentina

124

Banco de Dados I

Argentina Funcionrios: Nome do Exporta Funcionrios USA Funcionrio Cidade Pas Cidade Criao de tabela Critrio : Estados Unidos

Clientes: Quantidade de pedidos por cliente e funcionrio empresa

Nome da Nome da empresa

Tabela referncia cruzada

Funcionrios: Nome Pedidos: Pedido Categorias: Nome da

Nmero do Funcionrio

Consulta com Nome da Totais

Mdia de preo por categoria categoria Produtos: Unitrio Preo

categoria

125

Banco de Dados I

Unidade 23 23.1 O QUE SO FORMULRIOS?

FORMULRIOS

Como foi descrito anteriormente um formulrio uma forma de visualizar e editar os dados de um banco de dados do Access. Os formulrios fornecem facilidade na edio de registros e apresentam os dados em uma forma personalizada. Voc pode utilizar diversos tipos de efeitos (cores/linha e fontes) em seus formulrios. Abaixo ilustramos o exemplo de um formulrio de um cadastro de clientes.

126

Banco de Dados I

23.2 CRIANDO UM NOVO FORMULRIO


possvel criar um formulrio de trs maneiras. Com base em uma nica tabela ou consulta utilizando o Auto Formulrio. O Auto Formulrio cria um formulrio que exibe todos os campos e registros na tabela ou consulta base. Se a origem do registro selecionada tiver tabelas ou consultas relacionadas, o formulrio tambm incluir todos os campos e registros dessas origens do registro. Na janela Banco de dados, clique em Formulrios em Objetos. Clique no boto Novo na barra de ferramentas da janela Banco de dados. Na caixa de dilogo Novo formulrio, clique em um destes assistentes:

Auto Formulrio: Colunar: aparece em uma linha

Cada

campo

separada com

um rtulo sua esquerda. Auto Formulrio: Tabular: em cada registro aparecem com os rtulos exibidos uma superior do formulrio. Auto Formulrio: Folha de campos em cada registro um formato linha-e-coluna, dados: Os Os campos

em uma linha, vez na parte

aparecem em com um

registro em cada linha e um campo em cada coluna. Os nomes dos campos aparecem na parte superior de cada coluna. Auto Formulrio: Tabela dinmica: O formulrio abre em modo de tabela dinmica. possvel adicionar campos arrastando-os da lista de campos para as diferentes reas no modo de exibio. Auto Formulrio: Grfico dinmico: O formulrio abre em modo de grfico dinmico. possvel adicionar campos arrastando-os da lista de campos para as diferentes reas no modo de exibio. Clique na tabela ou consulta que contm os dados em que voc deseja basear o formulrio. Clique em OK. O Microsoft Access aplica o ltimo autoformato usado para o formulrio. Caso voc ainda no tenha criado um formulrio com um assistente ou no tenha usado o comando Auto Formatao no menu Formatar, ele usar o autoformato Padro

127

Banco de Dados I

DICA: Uma das maneiras mais rpidas para se criar um padro utilizar um dos Assistentes de Auto formulrio que automaticamente criaro formulrios com a mnima interveno usurio. Basta clicar na barra de ferramentas banco de dados comando Novo objeto No modo de design:

formulrio

do no

Voc cria um formulrio bsico e o personaliza no modo de design para atender s suas necessidades. Na janela Banco de Dados, clique em Formulrios em Objetos. Clique no boto Novo na barra de ferramentas da janela Banco de dados. Na caixa de dilogo Novo formulrio, clique em Modo de design. Clique no nome da tabela ou outra fonte do registro que inclua os dados nos quais voc deseja basear o seu formulrio. Se o formulrio no for conter dados (por exemplo, se for para utilizar como um menu de controle para abrir outros formulrios ou relatrios ou se voc desejar criar uma caixa de dilogo personalizada), no selecione nada nessa lista. Dica: Se voc deseja criar um formulrio que utilize dados de mais de uma tabela, baseie o seu formulrio em uma consulta. Clique em OK. O Microsoft Access exibe o formulrio no modo de design. Conforme figura abaixo: Barra de ferramentas Design do formulrio Barra de ferramentas de formatao (formulrio/relatrio)

128

Banco de Dados I

Layout

Barra de ferramentas Caixa de ferramentas

129

Banco de Dados I

23.3 CAIXA DE FERRAMENTAS


Ao trabalharmos com a estrutura de formulrios e relatrios poderemos acrescentar objetos (controles) atravs da caixa de ferramentas. Caso o boto de Assistente(segundo boto da caixa de ferramentas) esteja ativado, ser automaticamente exibido para alguns controles um Assistente que auxiliar o usurio na incluso do mesmo. Por exemplo, ao escolher a ferramenta de boto de comando o usurio ativar automaticamente um assistente que perguntar ao usurio qual a ao que o boto executar. A figura abaixo exibe os botes da caixa de ferramentas:

Retngulo

ActiveX

Para utilizar a caixa de ferramentas, basta selecionar uma de suas opes e clicar na rea do formulrio onde o contedo ser colocado. Alm das barras de ferramentas e da caixa de ferramentas o usurio poder utilizar o boto direito do mouse para acessar as opes de um determinado objeto. Os menus do modo estrutura fornecem uma maneira simples de alinhar, distribuir e alterar a disposio dos objetos em um formulrio.

Definir uma propriedade no modo de design

130

Banco de Dados I

Abra uma tabela, consulta, formulrio, relatrio ou uma pgina de acesso a dados no modo de design. Abra a folha de propriedades seguindo um destes procedimentos: No caso de um formulrio ou relatrio, clique duas vezes no seletor de formulrios ou no seletor de relatrios.

Em uma pgina de acesso a dados, clique em Selecionar pgina no menu Editar. Em uma tabela ou consulta, clique em Propriedades , na barra de ferramentas.

Para uma seo em um formulrio ou relatrio, clique duas vezes no seletor de sees.

Para uma seo em uma pgina de acesso a dados, clique duas vezes na barra de sees.

Para definir propriedades de um campo de consulta, clique na clula na linha Campo, e em Propriedades na barra de ferramentas.

Para definir propriedades de uma de lista de campo de consulta, clique em qualquer parte da lista, e em Propriedades na barra de ferramentas.

Para definir propriedades do corpo de uma pgina de acesso a dados, clique acima da primeira seo, e em Propriedades na barra de ferramentas. na barra de

Para definir propriedades de um controle, clique no controle, e em Propriedades ferramentas.

Na folha de propriedades, clique na propriedade que voc deseja definir e, em seguida, siga um destes procedimentos: Se uma seta aparecer na caixa da propriedade, clique nela e selecione um valor da lista. Digite uma configurao ou expresso na caixa da propriedade.

131

Banco de Dados I

Se aparecer um boto Construir

prximo da caixa de propriedades, clique nele para exibir

um construtor ou uma lista de construtores.

Dicas: Para obter Ajuda sobre qualquer propriedade na folha de propriedades, clique na propriedade e, em seguida, pressione F1. Se precisar de mais espao para inserir ou editar uma configurao de propriedade, pressione SHIFT+F2 para abrir a caixa Zoom

Observao: Se a propriedade AllowDesignChanges de um formulrio estiver definida como Todos os modos, voc tambm poder definir propriedades de formulrio no modo de formulrio e no modo de folha de dados.

Outro item importante no modo design de formulrio a folha de propriedades dos objetos que pode ser acessada pelo boto da barra de ou atravs do boto direito do mouse propriedades. Cada objeto possui vrias propriedades que definidas atravs da folha de propriedades. Na ilustrao abaixo exibida a folha de propriedades para o objeto formulrio: podem ser ferramentas

132

Banco de Dados I

As propriedades de um objeto so divididas em categorias para facilitar a localizao de uma propriedade especfica.

23.4 SOBRE AS SEES DE UM FORMULRIO


possvel dividir as informaes de um formulrio em sees. Todos os formulrios tm uma seo de detalhes, mas um formulrio tambm pode incluir sees de cabealho do formulrio, cabealho da pgina, rodap da pgina e rodap do formulrio. Cada seo tem uma finalidade especfica e impressa em uma ordem previsvel no formulrio. No modo de design, as sees so representadas como faixas e cada seo contida no formulrio representada uma vez. Em um formulrio impresso, o cabealho e o rodap da pgina podem ser repetidos uma vez em cada pgina. possvel determinar onde as informaes aparecem em cada seo ao posicionar controles, como etiquetas e caixas de texto. Esta ilustrao mostra o formulrio Adicionar produtos no modo de design.

133

Banco de Dados I

Esta ilustrao mostra a aparncia que o formulrio Adicionar produtos ter ao ser impresso.

Um subformulrio tambm pode ter sees. Por exemplo, este subformulrio possui um cabealho e um rodap de formulrio, alm da seo de detalhes.

134

Banco de Dados I

Voc pode ocultar ou redimensionar uma seo, adicionar uma imagem ou definir a cor do plano de fundo de uma seo. Tambm possvel definir propriedades da seo para personalizar a maneira como o contedo de uma seo ser impresso.

23.5 SUBFORMULRIOS
Um subformulrio um formulrio dentro de outro. O formulrio primrio chamado de formulrio principal e o formulrio dentro do formulrio denominado subformulrio. Uma combinao formulrio/subformulrio sempre citada como um formulrio hierrquico, um formulrio mestre/detalhe ou um formulrio pai/filho. Os subformulrios so eficientes principalmente quando se deseja exibir dados de tabelas ou consultas com um relacionamento um-para-muitos. Por exemplo, voc poderia criar um formulrio com um subformulrio para exibir dados de uma tabela de categorias e de uma tabela de produtos. Os dados na tabela de categorias correspondem ao lado "um" do relacionamento. Os dados na tabela de produtos correspondem ao lado "muitos" do relacionamento cada categoria pode ter mais de um produto.

O formulrio principal e o subformulrio neste tipo de formulrio so vinculados de tal forma que o subformulrio exiba apenas registros que esto relacionados ao registro atual no formulrio principal. Por exemplo, quando o formulrio principal exibir a categoria Bebidas, o subformulrio exibir apenas os produtos na categoria Bebidas.

Exibindo um subformulrio em um formulrio

135

Banco de Dados I

Quando voc cria um subformulrio, possvel cri-lo de forma a ser exibido em modo folha de dados, modo de formulrio, modo de tabela dinmica ou modo de grfico dinmico. Tambm possvel definir o modo de exibio padro do subformulrio e desativar um ou mais modos de exibio. possvel alternar o modo de exibio de uma subformulrio quando o formulrio principal exibido em modo de formulrio.

Os subformulrios no so exibidos quando um formulrio aberto no modo de tabela dinmica ou modo de grfico dinmico.

136

Banco de Dados I

Sincronizando um formulrio e um subformulrio Quando voc cria um formulrio e um subformulrio com base em tabelas que possuem um relacionamento um-para-muitos, o formulrio principal exibe o lado "um" e o subformulrio exibe o lado "muitos" do relacionamento. O formulrio principal sincronizado com o subformulrio de tal forma que o subformulrio exiba apenas registros relacionados ao registro no formulrio principal. Se voc utilizar um assistente para criar um subformulrio ou se arrastar um formulrio, tabela ou consulta da janela Banco de dados para outro formulrio a fim de criar um subformulrio, o Microsoft Access sincronizar automaticamente o formulrio principal com o subformulrio se uma das seguintes condies for verdadeira. Se: Voc tiver definido relacionamentos para as tabelas selecionadas ou para as tabelas base das consultas selecionadas. O formulrio principal for baseado em uma tabela com uma chave primria e o subformulrio for baseado em uma tabela que contm um campo com o mesmo nome da chave primria e com o tipo de dados e tamanho de campo igual ou compatvel. Por exemplo, em um banco de dados do Microsoft Access, se a chave primria da tabela base do formulrio principal for um campo AutoNumerao e sua propriedade FieldSize for definida com Inteiro longo, o campo

137

Banco de Dados I

correspondente na tabela base do subformulrio deve ser um campo numrico com a propriedade FieldSize definida como Inteiro longo. Se voc selecionar uma ou mais consultas, as tabelas base da consulta ou consultas devero atender a essas condies. Aninhando nveis Um formulrio principal poder ter qualquer nmero de subformulrios se voc colocar cada um deles no formulrio principal. Voc tambm pode aninhar at sete nveis de subformulrios. Isto significa que voc pode ter um subformulrio dentro de um formulrio principal e um outro subformulrio dentro daquele subformulrio e assim por diante. Por exemplo, voc pode ter um formulrio principal que exiba clientes, um subformulrio que exiba pedidos e outro subformulrio que exiba detalhes do pedido. Entretanto, um formulrio no exibir subformulrios em modo de tabela dinmica ou modo de grfico dinmico. Inserindo dados usando um formulrio e subformulrio Quando voc utiliza um formulrio com um subformulrio para inserir novos registros, o Microsoft Access salva o registro atual no formulrio principal quando voc insere dados no subformulrio. Isto assegura que os registros na tabela "muitos" tero um registro na tabela "um" com o qual se relacionar. Isto tambm salva automaticamente cada registro medida que so adicionados ao subformulrio. Criar um subformulrio Se o subformulrio for vinculado ao formulrio principal, certifique-se de que as origens do registro base estejam relacionadas antes de usar este procedimento. No possvel adicionar um subformulrio a um formulrio quando ele exibido em modo de tabela dinmica ou em modo de grfico dinmico.

Criar um formulrio e um subformulrio ao mesmo tempo Na janela Banco de Dados, clique em Formulrios em Objetos.

Clique no boto Novo na barra de ferramentas da janela Banco de dados. Na caixa de dilogo Novo formulrio, clique duas vezes em Assistente de formulrio. Na primeira caixa de dilogo do assistente, selecione uma tabela ou consulta na lista. Por exemplo, para criar um formulrio Categorias que exiba produtos para cada categoria em um subformulrio, selecione a tabela Categorias (o lado "um" do relacionamento um-para-muitos). Observao: No importa qual tabela ou consulta voc escolhe primeiro. Clique duas vezes nos campos que voc deseja incluir desta tabela ou consulta.

138

Banco de Dados I

Na mesma caixa de dilogo do assistente, selecione outra tabela ou consulta da lista. Utilizando o mesmo exemplo, selecione a tabela Produtos (o lado " muitos" da relao um-para-muitos). Clique duas vezes nos campos que voc deseja incluir desta tabela ou consulta . Quando voc clicar em Avanar, se os relacionamentos tiverem sido corretamente definidos antes de iniciar o assistente, o assistente perguntar que tabela ou consulta voc deseja visualizar. Utilizando o mesmo exemplo, para criar o formulrio Categorias, clique em Por categorias. Na mesma caixa de dilogo do assistente, selecione a opo Formulrio com subformulrio (s) . Siga as instrues nas demais caixas de dilogo do assistente. Quando voc clicar em Concluir, o Microsoft Access criar dois formulrios, um para o formulrio principal e controle de subformulrio, e um para o subformulrio.

LABORATRIO O. Abra o banco de dados criado no laboratrio 2:

P.

Com a ajuda do Assistente de Auto formulrio Colunar crie um formulrio para cada tabela do banco de dados:

Q.

Em cada um dos formulrios criados no item anterior coloque um boto que feche o formulrio:

R.

Crie um formulrio chamado Menu Principal, que possua um boto que abra cada um dos formulrios criados no item B:

S.

No formulrio Menu Principal crie um boto que feche o Access:

T.

Crie um formulrio com um subformulrio utilizando as tblSetores e tblFuncionrios.

139

Banco de Dados I

Unidade 24 24.1 O QUE SO RELATRIOS?

RELATRIOS

Como foi descrito anteriormente um relatrio uma forma de criar listagens e etiquetas de um banco de dados do Access. Os relatrios fornecem facilidade na criao de apresentaes personalizadas com a utilizao de diferentes tipos de efeitos (fontes, linhas, cores), alm de permitir a incluso de frmulas de totalizao de dados. Abaixo ilustramos o exemplo de um relatrio de produtos e preos:

140

Banco de Dados I

24.2 CRIANDO UM NOVO RELATRIO


Para criar um novo relatrio o usurio poder utilizar a opo Novo Objeto da barra de ferramentas da janela banco de dados ou o boto Novo na guia Relatrios. Ao escolher o boto Novo da guia Relatrios, ser exibida a seguinte caixa de dilogo que permitir ao usurio escolher um dos Assistentes do Access que auxiliam na criao de novos relatrios.

Uma das maneiras mais rpidas para se criar um utilizar um dos Assistentes de Auto relatrio que automaticamente criar um relatrio com a mnima usurio. Clique no boto Novo Objeto na barra de banco de dados em seguida no comando Relatrio. ao lado.

relatrio padro

interveno

do

ferramentas Conforme figura

141

Banco de Dados I

No modo design que serve apara alterar relatrios existentes ou criao de novos relatrios ser exibida a seguinte tela:

142

Banco de Dados I

No modo estrutura de relatrio so exibidos os seguintes botes nas barras de ferramentas.

Boto

Nome Objeto

Descrio

Permite selecionar um objeto na estrutura atual atravs do seu nome. Altera o tipo de fonte de um objeto que possua esta Fonte propriedade. Tamanho da Altera o tamanho da fonte. fonte Aplica o estilo negrito. Negrito Aplica o estilo itlico. Itlico Sublinhado Esquerda Centro Direita Cor preenchimento Cor fonte Cor contorno Contorno Sombra Aplica o estilo sublinhado. Alinha o texto esquerda. Centraliza o texto. Alinha o texto direita. Altera a cor de preenchimento de um objeto. Altera a cor da fonte de um objeto. Altera a cor de contorno de um objeto. Altera a caneta de contorno de um objeto.

Aplica um dos diferentes efeitos de sombra aos objetos. Alterna a exibio entre o modo estrutura/relatrio e Exibir folha de dados. Exibe uma lista de campos, caso o relatrio esteja Campos baseado em uma consulta ou tabela. Exibe/Oculta a caixa de ferramentas. Ferramentas Classifica dados de um relatrio e/ou cria novas Subtotais sees (quebras de relatrio). Auto Permite a escolha de um estilo pronto de formatao. formatar Exibe a janela de cdigo do relatrio ou relatrio Mdulo atual. Propriedade Exibe as propriedades de um objeto. s Permite a construo de expresses/macros e cdigo Construtor VBA que pode ser utilizado nas propriedades de um de expresses objeto.

143

Banco de Dados I

24.3 CAIXA DE FERRAMENTAS


Ao trabalharmos com a estrutura de relatrios poderemos acrescentar objetos (controles) atravs da caixa de ferramentas. A caixa de ferramentas a ser utilizada no modo design de relatrios a mesma j vista na seo de formulrios. Para utilizar a caixa de ferramentas, basta selecionar uma de suas opes e clicar na rea do relatrio onde o contedo ser colocado. Alm das barras de ferramentas e da caixa de ferramentas o usurio poder utilizar o boto direito do mouse para acessar as opes de um determinado objeto. Os menus do modo estrutura fornecem uma maneira simples de alinhar, distribuir e alterar a disposio dos objetos em um relatrio.

Outro item importante no modo design de relatrios a folha de propriedades dos objetos que pode ser acessada pelo boto da barra de ferramentas ou boto direito do mouse propriedades. Cada objeto possui vrias propriedades que podem ser atravs da folha de propriedades. definidas atravs do

Na ilustrao abaixo exibida a folha de propriedades objeto relatrio:

para

As propriedades de um objeto so divididas em categorias para facilitar a localizao de uma propriedade especfica.

144

Banco de Dados I

LABORATRIO 6 U. Abra o banco de dados criado no laboratrio 2:

V.

Com a ajuda do Assistente de Auto relatrio tabular crie um relatrio para cada tabela do banco de dados:

W.

Crie um novo formulrio no modo estrutura que possua um boto para visualizar cada um dos relatrios criados no item B:

X.

Abra a estrutura do formulrio Menu Principal e crie um boto que abra o formulrio criado no item C:

145

Banco de Dados I

Unidade 25 -

Pgina de dados

25.1 PARA CRIAR UMA PGINA DE ACESSO A DADOS


Pgina de acesso a dados: uma pgina da Web, publicada a partir do Access, que tem uma conexo com um banco de dados. Em uma pgina de acesso a dados, possvel exibir, adicionar, editar e manipular os dados armazenados no banco de dados. Uma pgina pode tambm incluir dados de outras fontes, como o Excel, ou para abrir uma pgina no modo Design, modo Pgina (modo Pgina: uma janela do Access na qual possvel pesquisar o contedo de uma pgina de acesso a dados. No modo Pgina, as pginas tm a mesma funcionalidade que tm no Internet Explorer 5.0 ou posterior.) ou no Microsoft Internet Explorer, necessrio instalar o Microsoft Internet Explorer 5.01 com Service Pack 2 (SP2) ou posterior. Se voc criar uma pgina de acesso a dados quando um banco de dados aberto, o Microsoft Access cria um atalho para a pgina e exibe o atalho na janela Banco de dados. Se voc criar uma pgina sem abrir um banco de dados, o Microsoft Access criar uma pgina autnoma. A partir do Microsoft Office Access 2007 j no so suportadas pginas de acesso a dados. Se pretender implementar um formulrio de introduo de dados atravs da Web e armazenar os dados resultantes no Access, pode implementar a base de dados num servidor Microsoft Windows SharePoint Services 3.0 e utilizar as ferramentas fornecidas pelo Windows SharePoint Services. Se abrir uma base de dados criada numa verso anterior do Access (um arquivo .mdb) e essa base de dados contiver pginas de acesso a dados, poder ver as pginas no Windows Internet Explorer. Contudo, no poder efetuar nenhuma ao com essas pginas.

25.2 CRIAR UMA PGINA DE ACESSO


Criar uma pgina de acesso a dados que contm todos os campos de uma fonte de registro nica (AutoPgina) O comando AutoPgina cria uma pgina de acesso a dados que contm todos os campos (exceto campos que armazenem imagens) e registros na tabela, consulta ou modo de exibio base. Na guia Objetos da janela Banco de Dados, clique em Pginas .

Na barra de ferramentas da janela Banco de dados, clique em Novo. Na caixa de dilogo Nova pgina de acesso a dados, clique em AutoPgina: Colunar.

146

Banco de Dados I

Clique na tabela, na consulta ou no modo de exibio que contenha os dados nos quais voc deseja basear sua pgina. Clique em OK. Na pgina de acesso a dados concluda, cada campo ser exibido em uma linha separada com um rtulo esquerda. Se a pgina resultante no tiver a aparncia desejada, voc pode modificar a pgina no modo de design. Observao: Se voc definiu um tema padro, o Microsoft Access o aplica pgina. Criar uma pgina de acesso a dados que contm campos de vrias tabelas e consultas (Assistente de pgina) O assistente formula perguntas detalhadas sobre origens do registro, campos, layout e formato desejados e cria uma pgina com base nas suas respostas. Se o assistente no for iniciado Essa situao pode ocorrer porque o Access est em execuo no modo seguro, mas o componente Microsoft Jet 4.0 SP8 ou posterior no est instalado no computador. necessrio que o Jet 4.0 SP8 ou posterior esteja instalado para que o Access funcione plenamente quando o modo seguro estiver habilitado. Observao: Para obter mais informaes sobre a instalao da atualizao do Jet, consulte o artigo About Microsoft Jet 4.0 SP8 or later do Office Online, em

http://office.microsoft.com/assistance/preview.aspx?AssetID=HA010489351033. Para obter mais informaes sobre o modo seguro, consulte o artigo Sobre o modo seguro do Microsoft Jet Expression Service.

Na guia Objetos da janela Banco de Dados, clique em Pginas

Na barra de ferramentas da janela Banco de dados, clique em Novo. Na caixa de dilogo Nova pgina de acesso a dados, clique em Assistente de pgina. Clique no nome da tabela, consulta ou modo de exibio que inclua os dados nos quais voc deseja basear sua pgina de acesso a dados. Observao Voc no precisa fazer isso agora voc pode especificar as origens do registro para a pgina no assistente. Clique em OK. Siga as instrues das caixas de dilogo do assistente.

147

Banco de Dados I

Se a pgina resultante no tiver a aparncia desejada, voc pode modificar a pgina no modo de design. Observaes: a) Caso voc queira incluir campos de vrias tabelas e consultas em sua pgina, no clique em Avanar nem em Concluir aps selecionar os campos da primeira tabela ou consulta no Assistente de pgina. Repita as etapas para selecionar uma tabela ou consulta e escolha os campos que deseja incluir no relatrio, at ter selecionado todos os campos necessrios. b) Se voc incluir campos de vrias tabelas ou consultas mas no criar nveis de grupo, os campos de uma das tabelas base podem oferecer suporte a atualizaes no modo de pgina ou no Microsoft Internet Explorer. O assistente listar as origens de registro da pgina e solicitar que voc especifique a fonte do recurso atualizvel.

148

Banco de Dados I

Criar uma pgina de acesso a dados no modo de design. Na guia Objetos da janela Banco de Dados, clique em Pginas .

Na barra de ferramentas da janela Banco de dados, clique em Novo. Na caixa de dilogo Nova pgina de acesso a dados, clique em Modo de design. Clique no nome da tabela, consulta ou modo de exibio que inclua os dados nos quais voc deseja basear sua pgina de acesso a dados. Observao Se voc quiser criar uma pgina em branco, no selecione uma fonte do registro nesta caixa de dilogo. Clique em OK. O Microsoft Access exibe a pgina de acesso a dados no modo de design, no qual voc poder modificar a pgina. Para adicionar dados pgina, arraste os campos da lista de campos para a pgina. Transformar uma pgina da Web existente em uma pgina de acesso a dados Na janela Banco de Dados, clique em Pginas , em Objetos.

Clique no boto Novo na barra de ferramentas da janela Banco de dados. Na caixa de dilogo Nova pgina de acesso a dados, clique em Pgina da Web existente. Clique em OK. Na caixa de dilogo Localizar pgina da Web, procure a pgina da Web ou arquivo HTML que voc deseja abrir. Observao: Voc pode localizar uma pgina da Web clicando em Pesquisar na Web na caixa de dilogo Localizar pgina da Web. Salve uma cpia da pgina usando o comando Salvar como no menu Arquivo do Microsoft Internet Explorer e inicie esse procedimento novamente para abrir a pgina no modo design. Clique em Abrir. O Microsoft Access cria um atalho para o arquivo HTML na janela Banco de dados e exibe a pgina no modo de design, onde voc pode modific-la.

Observao: Se voc especificou um arquivo de conexo padro para o banco de dados na guia Pginas da caixa de dilogo Opes, o Microsoft Access automaticamente definir as propriedades ConnectionFile e ConnectionString para todas as novas pginas. Criar uma pgina de acesso a dados autnoma Se um banco de dados for aberto no Microsoft Access, feche-o. No menu Arquivo, clique em Novo. Na caixa de dilogo Novo, clique em Pgina de acesso a dados. Na caixa de dilogo Selecionar fonte de dados, siga um destes procedimentos:

149

Banco de Dados I

150

Banco de Dados I

Conectar a pgina a um banco de dados do Microsoft Access Use o seguinte procedimento se voc quiser criar uma pgina e acopl-la a um banco de dados do Microsoft Access, sem criar um atalho no banco de dados. Na lista Arquivos do tipo, selecione Bancos de dados do Microsoft Access. Clique duas vezes no arquivo do banco de dados que voc deseja acoplar a pgina. Se voc no vir o banco de dados que deseja usar, navegue at a pasta que contm o arquivo e, em seguida, clique duas vezes no nome do arquivo. Clique em OK duas vezes. O Microsoft Access criar uma pgina em branco e a abrir em modo de design. A propriedade ConnectionString da pgina ser definida para conectar a pgina ao banco de dados selecionado. Para adicionar dados pgina, arraste os campos da lista de campos para a pgina

LABORATRIO 7 Y. Como base nas tabelas criadas no laboratrio 2, crie uma pagina de acesso. Layout Livre.

151

Banco de Dados I

Unidade 26 -

PERSONALIZAO E UTILITRIOS

26.1 CONFIGURAES DE INICIALIZAO


Aps concluir toda a estrutura do aplicativo o usurio poder definir configuraes que faro com que ao entrar em um banco de dados seja exibido automaticamente um formulrio especifico. Desta forma e com o que foi visto nos captulos anteriores o usurio poder criar um aplicativo personalizado de acordo com suas necessidades. Para definir as opes de inicializao de um banco de dados o usurio dever selecionar a opo FerramentasInicializar.

Alm do ttulo, cone e formulrio padro o usurio poder definir se os menus podero ser utilizados ou no e se a Janela Banco de Dados ser exibida. No Access 2007 selecione o boto do Office (canto superior esquerdo) e clique em "Opes do Access". Selecione o menu "Banco de dados atual" e desmarque os itens: Permitir Menus Completos" e "Permitir Barras de Ferramentas Internas. Veja na figura abaixo

152

Banco de Dados I

26.2 Compactando um banco de dados


A compactao de um banco de dados do Access reduz o tamanho do arquivo em disco, otimizando-o, alm de desfragmentar o arquivo em disco. Para compactar um banco de dados basta escolher a opo FerramentasUtilitrios de banco de dadosCompactar e Reparar banco de dados. No Access 2007 a opo encontrada no boto do Office

153

Banco de Dados I

26.3 REPARANDO UM BANCO DE DADOS


Caso ocorra algum problema no nvel de arquivo e o Access no consiga efetuar a leitura do mesmo, a ferramenta de reparao poder solucionar o problema. Para reparar um arquivo de banco de dados danificado basta escolher o comando FerramentasUtilitrios de banco de dadosCompactar e Reparar banco de dados.

26.4 PROTEGENDO UM APLICATIVO


Aps criar o seu aplicativo no Access qualquer usurio poderia alterar a estrutura dos objetos do banco de dados. As principais maneiras de se proteger um de banco de dados no Access so:

154

Banco de Dados I

Protegendo o Arquivo A proteo de arquivo solicitar uma senha do usurio todas as vezes que o mesmo tentar abrir o arquivo de banco de dados. Para ativar a proteo por senha escolha FerramentasSeguranaDefinir senha do banco de dados. Criando um Arquivo Mde Um arquivo MDE na verdade uma verso compilada do arquivo MDB. Um arquivo MDE permitir apenas alteraes e visualizao de estrutura para tabelas e consultas. Para criar um arquivo MDE menu FerramentasUtilitrios de Banco de dadosCriar um MDE Criptografando o Arquivo A criptografia tornar impossvel que outros aplicativos consigam ler o banco de dados do Access. Quando o Access for efetuar a abertura do arquivo ele mesmo efetuar a descriptografia dos dados, o que torna este recurso totalmente transparente para o usurio. No Access 2007 encontramos estas opes na barra de ferramentas

155

Banco de Dados I

LABORATRIO 8 Z. Defina o formulrio Menu Principal como formulrio de inicializao do seu banco de dados criado no laboratrio 2:

AA.

Compacte o banco de dados :

BB.

Criptografe o banco de dados:

CC.

Defina uma senha para o seu banco de dados:

DD.

Crie um arquivo MDE do seu banco de dados:

156

Banco de Dados I

Unidade 27 -

MySQL

27.1 Introduo
O MySQL mais um exemplo de SGBD que utiliza a linguagem SQL como forma de interagir com os dados armazenados. Obviamente, possui algumas sintaxes de comandos que mesmo provenientes da linguagem SQL so especficas deste banco. um dos bancos de dados mais utilizados por empresas e usurios pessoais Podemos citar vrios grandes exemplos de usurios deste sistema de gerenciamento de banco de dados, mas o maior case de sucesso, no poderia deixar de ser outro: o Google. Este sistema teve seu lanamento na dcada de 1980, de l para c o numero de usurios e pessoas responsveis por sua manuteno e testes s tem aumentado. Alm disso uma srie de sistemas satlite vem sendo desenvolvidos para agregar cada vez mais funcionalidades e este bando. Inicialmente o MySQL era um sistema que pertencia a uma empresa que o ofertava livremente, sem a inteno de gerar concorrncia. No entanto a sua grande expanso fez com que grandes corporaes como a SUN a adquirisse. Ironicamente a SUN foi adquirida pela ORACLE o que criou quase que uma guerra fria de bancos de dados, tendo a ORACLE de um lado e a Microsoft de outro. Este grande ganho de mercado que o MySQL obteve tem como um dos grandes fatores a integrao com uma das linguagens de programao de maior sucesso na Internet, o PHP. Esta configurao de uso do Linux(Sistema Operacional), MySQL, PHP e o Apache(Servidor), criou uma sigla conhecida como LAMP, que uma das opes mais aceitas pelos usurios na hora de hospedar seus sites. Tambm comum a visualizao da sigla WAMP, que nada mais do que troca do sistema operacional Linux pelo Windows Em seu princpio o MySQL era considerado um SGBD fraco e de poucos recursos. No entanto esta realidade mudou drasticamente nos ltimos anos e ele j utilizado na gesto de dados com grande volume de acesso como o Google e a Wikipdia alm de ter sua utilizao empregada em instituies que lidam com a segurana e preciso da informao como fatores determinantes de seu negcio. Podemos citar como exemplo a NASA e o exrcito Americano, alm de exemplos nacionais como o banco Bradesco e tantas outras instituies financeiras

157

Banco de Dados I

Unidade 28 28.1 Alguns Exemplos

O Front-End

Manipular os dados armazenados em um banco de dados requer o uso de ferramentas especficas para esta operao. Estes sistemas so os chamados fron-ends. A instalao completa do MySQL acompanha o aplicativo desktop chamado MySQL Query Browser:

Este sistema bem completo e oferece suporte a linguagem, bem como interface amigvel ao banco em si. Alm desta possibilidade nativa, possumos uma srie de outros sistemas desktop, cabendo um destaque ao Navicat. Entretanto como a maior popularizao do MySQL se deu pelo grande casamento com a linguagem para web(PHP), no poderia deixar de existir um sistema nesta linguagem e que o mesmo fosse um dos mais utilizados. Estamos nos referindo ao phpMyAdmin Em nosso material vamos citar exemplos de manipulao de dados utilizando o phpMyAdmin bem como do MySQL Query Browser

158

Banco de Dados I

Unidade 29 -

Conectando ao Banco de Dados

29.1 Atravs de linguagens de programao


Um banco de dados tem por objetivo maior ser um local de armazenamento de informaes para ser acessada a qualquer momento e preferencialmente de qualquer local. No entanto seu uso mais comum est ligado integrao com sistemas web e desktop. A banco de dados MySQL, como j referido anteriormente, tem uma forte ligao com a linguagem PHP, mas pode, interagir com qualquer outro sistema independente de sua linguagem. Para estabelecer esta conexo as linguagens se utilizam de scripts prprios. Exemplo de script em PHP para conexo com MYSQL: <? // Este arquivo conecta um banco de dados MySQL - Servidor = localhost $dbname="teste"; // Indique o nome do banco de dados que ser aberto $usuario=" "; // Indique o nome do usurio que tem acesso $password=" "; // Indique a senha do usurio //1 passo - Conecta ao servidor MySQL if(!($id = mysql_connect("localhost",$usuario,$password))) { echo "No foi possvel estabelecer uma conexo MySQL. Favor Contactar o Administrador."; exit; } //2 passo - Seleciona o Banco de Dados if(!($con=mysql_select_db($dbname,$id))) { echo "No foi possvel MySQL. Favor Contactar o Administrador."; exit; } ?> Alm deste exemplo existe outras linguagem que possuem seu prprio script de conexo estabelecer uma conexo com o gerenciador com o gerenciador

159

Banco de Dados I

29.2 Atravs do Front-End


Para acessarmos nosso banco de dados, com a inteno de realizar manutenes, extrao de informaes, gerenciamento de performance, criao de regras, etc. podemos faz-lo de forma mais rpida e dinmica atravs de nossos fron-ends. O phpMyAdmin pode ser acessado atravs do endereo IP e porta fornecidos pelo provedor onde o site de encontra hospedado. Esta informao ou link, normalmente encontra-se disponveis em painis de controle para sites fornecidos por estes provedores de hospedagem. Ser exibida uma tela solicitando o usurio e senha que sero utilizados nesta conexo. Abaixo podemos ver um exemplo desta tela.

No caso de instalao local basta digitar http://localhost/phpmyadmin/ em seu navegador preferido, ou utilizar algum sistema para trabalhar com PHP, como por exemplo, o WAMP ou mesmo o easyPHP. Estes sistemas permitem o acesso de forma mais rpida e sem a necessidade de informar usurio e senha a todo o momento

160

Banco de Dados I

Vela uma tela de como acessar o phpMyAdmim pelo WAMP.

Por sua vez o MySQL Query Browser um software desktop, portanto, fica instalado na mquina que ir acessar o banco. Este programa pode ser facilmente baixado atravs do site da MYSQL ou em local prprios para download de aplicativos, tais como o superdownloads e o baixaki. A acessar este sistema a seguinte tela ser exibida:

161

Banco de Dados I

Nesta tela dever ser informado; O IP e a porta de conexo(normalmente 3306) com o servidor(localhost se for localmente) O usurio(normalmente o mesmo do painel de controle ou root se for localmente) A senha(definida pelo usurio) Base de dados padro(A base do projeto)

162

Banco de Dados I

Unidade 30 30.1 phpMyAdmin

Conhecendo a Interface

Ao acessar o phpMyAdmin nos exibida um tela com as principais funcionalidades do bando de dados. Veja uma tela de exemplo abaixo:

Esta tela nos mostra algumas informaes sobre a configurao do servidor em que o banco est hospedado bem como estatsticas sobre o funcionamento do banco de dados

30.2 MySQL Query Browser


O MySQL Query Browser possui uma tela muito simples e intuitiva para sua utilizao. Diferentemente do phpMyAdmin esta interface no exibe incialmente informaes sobre o servidor, mas sim, traz uma caixa de texto para a digitao de sentenas SQL. Tambm podemos observar existncia de botes que representam sintaxes da linguagem SQL, que so utilizados para tornar mais gil a criao dos scripts. Veja uma tela de exemplo deste layout inicial

163

Banco de Dados I

30.3 Acessando uma Base de Dados


No phpMyAdmim possumos na parte superior esquerda da tela uma lista das bases de dados disponveis, basta clicar sobre a mesma

164

Banco de Dados I

No MySQL Query Browser localizamos estas mesmas opes no canto superior direito:

165

Banco de Dados I

Unidade 31 -

Criando uma nova Base de Dados

31.1 Interface e Comando


Para criar uma nova base de dados, bem como para a execuo de qualquer consulta, deleo, ou outra atividade em nosso banco de dados, podemos utilizar de instrues SQL digitadas diretamente ou nos fazer valer de front-ends. No caso da criao de uma nova base de dados utilizramos a sentena: CREATE DATABASE nomedabase Pelo phpMyAdmin realizamos esta operao, estando na tela inicial (clicar no boto Home basta digitar o nome da nova base e clicar em Criar )

No MySQL Query Browser clicamos com o boto direito sobre uma base qualquer e escolhemos a opo Create New Schema

Por fim digitamos o nome do banco e clicamos em OK

166

Banco de Dados I

Unidade 32 32.1 Interface

Criando Tabelas

A criao de tabelas com a utilizao de scripts j foi vista em unidades anteriores, esto vamos nos deter na facilidade da criao de tabelas com a interao da interface dos font-ends phpMyAdmin Com a base de dados selecionada basta digitar o nome da nova tabela e o nmero de campos que a mesma ter (nmero de arquivos)

Logo apes este passo ser exibida uma tela para as devidas configuraes:

Valores Nulos Tamanho do Campo

Tipo de dado Nome do campo

Opes numricas ou update

Formatao Campo

Autoincremento

Comentrio Texto Completo

Valor padro Vavio nico Indice Chave Primria

167

Banco de Dados I

Cometrios Tipo de tabela Formatao

Salvar

Incluir campos

Executar

O preenchimento das informaes solicitadas nos campos, na realidade gera um script em SQL para a criao da referida tabela. Podemos verificar os scripts criados para a criao de tabelas bem como para insero do dados das mesmas atravs do boto exportar

Esta opo muito til quando precisamos criar uma srie de tabelas que desenvolvemos localmente para um servidor remoto. Alm disto este script, tambm utilizado para a instalao de sistemas web baseado em banco de dados MySQL MySQL Query Browser Para o MySQL Query Browser o processo simples, basta clicar com o boto direito sobre a base de dados na qual desejas que a tabela seja criada.

168

Banco de Dados I

Nome table

Base de Dados

Comentrio

Opes numricas ou update Autoincremento Nulo Tipo Dados Nome Campo Salvar Comentrio

Alm da informaes apontadas nas caixas de texto cabe destacar que na parte inferior da tela exibida a chave primria selecionada bem como os ndices. Alm disso tambm encontramos mais detalhes sobre a configurao de cada campo.

169

Banco de Dados I

Unidade 33 33.1 Interface

Criando Consultas

A exemplo da criao de bases de dados e tabelas, no caso das consultas, tambm podemos realiz-las por scripts ou via interface. Vejamos como isso funciona em nossos front-ends phpMySQL Com sua base de dados selecionada, a lista com as tabelas exibida a direita. Ao lado de cada tabela temos o boto de suas propriedades( basta clicar na aba . ). Para a execuo de um script direto em SQL

Para utilizar um assistente na criao de suas consultas clique na aba A seguinte tela ser exibida;

Limite de registros(limit)

Ordernao(order by) Campos de resultado Critrios(where)

Critrios(where)

170

Banco de Dados I

MySQL Query Browser No Query Browser possumos botes que representam instrues em SQL. A clicar nestes botes e aps em um campo ou tabela a expresso montada na tela de consulta. Botes que representam o SQL

Ao arrastar uma tabela veja o resultado

171

Banco de Dados I

Unidade 34 -

SQL Server

34.1 Introduo
O SQL Server um SGDB criado e mantido pela Microsoft. Ele utilizado em muitas empresas, principalmente por sua grande capacidade de gerenciamento de informaes em alto volume de dados. Este SGBD tem muitas ferramentas integradas ao ncleo que permitem um ganho realmente significativo em termos de controle de desempenho e extrao de informaes. Podemos citar a sua enorme capacidade de gerao de cubos de deciso, bem como seu elevado e confivel controle de espelhamento e distribuio de dados. Esta alta confiabilidade na gesto dos dados, bem como a solidez de sua empresa mantenedora fazem do SQL Server uma das que melhor equilibra a relao custo benefcio. Para empresas de pequeno porte ou mesmo usurio individual a Microsoft disponibiliza uma verso Express de seu banco de dados, que apesar de algumas limitaes de recursos, tais como replicao e espelhamento, supre a necessidade destes clientes. Um dos maiores concorrentes do SQL Server o SGDB ORACLE, e logicamente cada uma das empresas detentoras destas marcas coloca o seu sistema como o melhor. Logicamente que se fizermos uma avaliao fria(sem bandeiras a defender), veremos que cada um deles possui seus pontos positivos e negativos. A concluso que podemos chegar que cada um deles deve se adequar a realidade de infraestrutura e de capital que se est disposto a investir, mas ambos so uma boa opo para qualquer linguagem adotada.

172

Banco de Dados I

Cabe apenas destacar, que o SQL Server, por ser um banco da Microsoft utiliza bem melhor os recursos do sistema operacional quando combinado a plataforma Windows. Mesmo possuindo a possibilidade da instalao deste bando de dados em um sistema operacional baseado no ncleo do Linux, esta configurao no se mostra eficiente sob a tica de performance e confiabilidade dos dados armazenados. Neste tipo de servidor(com Linux), recomenda-se a utilizao de outro SGBD, tal como o ORACLE, MySQL, PostGre e tantos outros

173

Banco de Dados I

Unidade 35 35.1 Ferramenta nativa

O Front-End

O SQL Server possui uma ferramenta nativa de acesso a sua base de dados, no sendo necessria a utilizao de qualquer outro sistema paralelo. Mesmo que o banco de dados no esteja fisicamente localizado em sua mquina, este aplicativo nativo do SQL Server, pode fazer o acesso a bases de dados remotas. Existem algumas empresas que desenvolvem aplicaes front-end para SQL Server, tais como o EMS SQL Manager for SQL Server. No entanto, esta ferramenta paga, no traz todas as funcionalidades que o aplicativo padro possui. Portanto em nosso material, vamos nos deter nica e exclusivamente na ferramenta padro deste SGBD.

174

Banco de Dados I

Unidade 36 -

Conectando ao Banco de Dados

36.1 Atravs de linguagens de programao


Um banco de dados tem por objetivo maior ser um local de armazenamento de informaes para ser acessada a qualquer momento e preferencialmente de qualquer local. No entanto seu uso mais comum est ligado a integrao com sistemas web e desktop. A banco de dados SQL Server, por ser da Microsoft tem uma enorme facilidade de conexo com sistemas desenvolvidos em linguagem .net(ASP.net, VB.net, etc.). Para estabelecer esta conexo as linguagens se utilizam de scripts prprios. Exemplo de script em ASP.net para conexo com SQL Server: <%@ Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.SqlClient" %> <% Dim conexao As SqlConnection conexao = uid=sa" ) New SqlConnection( "server=localhost; database=nomedabase;

conexao.Open() %> Alm deste exemplo existem outras linguagens que possuem seu prprio script de conexo

175

Banco de Dados I

36.2 Atravs do Front-End


Para acessarmos nosso banco de dados, com a inteno de realizar manutenes, extrao de informaes, gerenciamento de desempenho, criao de regras, etc. podemos faz-lo de forma mais rpida e dinmica atravs de nossos front-ends. O SQL Server pode ser acessado atravs do endereo IP e porta fornecidos pelo provedor onde o site de encontra hospedado. Esta informao ou link, normalmente encontra-se disponveis em painis de controle para sites fornecidos por estes provedores de hospedagem. Ser exibida uma tela solicitando o usurio e senha que sero utilizados nesta conexo. Abaixo podemos ver um exemplo desta tela.

No caso de instalao local basta digitar utilizar no nome de seu computador como o nome do servidor.

176

Banco de Dados I

Unidade 37 37.1 Aplicativo Nativo

Conhecendo a Interface

Ao acessar o SQL Server nos exibida um tela com as principais funcionalidades do bando de dados. Veja uma tela de exemplo abaixo:

Esta tela nos mostra algumas informaes sobre a configurao do servidor em que o banco est hospedado bem como estatsticas sobre o funcionamento do banco de dados

37.2 Acessando uma Base de Dados


No SQL Server localizamos a lista com as bases de dados instaladas em nosso canto superior direito, e alternamos entre elas utilizando o lista suspensa logo acima:

Lista de bases de dados Lista suspensa

177

Banco de Dados I

Unidade 38 -

Criando uma nova Base de Dados

38.1 Interface e Comando


Para criar uma nova base de dados, bem como para a execuo de qualquer consulta, deleo, ou outra atividade em nosso banco de dados, podemos utilizar de instrues SQL digitadas diretamente ou nos fazer valer de front-ends. No caso da criao de uma nova base de dados utilizamos a sentena: CREATE DATABASE nomedabase Pelo front-end, basta clicar com o boto direito sobre a lista de bases de dados e utilizar a opo Novo banco de dados

Aps isto ser exibida uma tela para colocarmos o nome de nossa nova base de dados:

178

Banco de Dados I

179

Banco de Dados I

Unidade 39 39.1 Interface

Criando Tabelas

A criao de tabelas com a utilizao de scripts j foi vista em unidades anteriores, esto vamos nos deter na facilidade da criao de tabelas com a interao da interface dos font-ends Ao expandirmos as bases de dados existentes e posteriormente seu contedo, veremos que ser exibida a opo de tabelas. Basta clicar com o boto direito sobre a opo tabelas e por fim utilizar Nova Tabela

Ser exibida uma tela para informarmos quais sero os campos e quais so as suas principais caractersticas;
Script alterao Texto Completo Espacial Chave primria Restries Relacionamento XML ndices Nome Campo Tipo dado Nulo

180

Banco de Dados I

Unidade 40 40.1 Interface

Criando Consultas

A exemplo da criao de bases de dados e tabelas, no caso das consultas, tambm podemos realiz-las por scripts ou via interface. Vejamos como isso funciona em nosso front-ends No canto superior esquerdo encontramos a opo Nova Consulta, ao clicar nela em nossa direita ser exibida uma tela para digitarmos nosso script em SQL

181

Banco de Dados I

Unidade 41 41.1 Introduo

Conhecendo XML

XML (eXtensible Markup Language) uma linguagem marcao para necessidades especiais, muito utilizada na Web, em podcasts e rss . um subtipo de SGML (acrnimo de Standard Generalized Markup Language, ou Linguagem Padronizada de Marcao Genrica) capaz de descrever diversos tipos de dados. Seu propsito principal a facilidade de compartilhamento de informaes atravs da Internet. Entre linguagens baseadas em XML incluem-se XHTML (formato para pginas Web), RDF,SDMX ,SMIL, MathML (formato para expresses matemticas), NCL, XBRL, XSIL e SVG (formato grfico vetorial). A principal caracterstica do XML, de criar uma infraestrutura nica para diversas linguagens, que linguagens desconhecidas e de pouco uso tambm podem ser definidas sem maior trabalho e sem necessidade de serem submetidas aos comits de padronizao.

182

Banco de Dados I

Unidade 42 -

XML no SQL Server

42.1 Criando colunas do tipo XML


Com o tipo de dados XML como um padro no SQL Server, para criar colunas XML basta declarar o XML como um tipo de dados. Vejamos a seguir um exemplo de como criar uma coluna padro XML. O script para criar a tabela MinhaTabela com duas colunas a seguinte: Create Table MinhaTabela (CodigoID int, dados xml) Como resultado da execuo dessa instruo teramos.

Podemos usar o Front-end para tambm criar a coluna do tipo XML digitando diretamente a definio no editor conforme abaixo:

183

Banco de Dados I

42.2 Inserindo valores


Para inserir dados em uma tabela com um ou mais campos XML, devemos executar uma instruo de insert de maneira normal. Apenas devemos estar atentos para que devemos tratar a entrada destes dados como strings, portanto os digitamos entre aspas simples, e no caso da existncia de aspas internas as mesmas devem ser duplas. Vamos ento popular nossa tabela com 1 registro para a melhor compreenso do script de insero deste tipo de informao. INSERT INTO MinhaTabela (codigoID,dados) VALUES (1, '<?xml version="1.0"?> <cliente cod="10"> <nome>Maria Aparecida</nome> <compras> <produto descricao="Arroz" valor="1.2"/> <produto descricao="Feijao" valor="2.8"/> <produto descricao="Milho" valor="1.1"/> <produto descricao="Sal" valor="0.9"/> </compras > </cliente >')

Ao executarmos uma consulta de seleo para visualizarmos o resultado, teramos o seguinte retorno:

184

Banco de Dados I

42.3 Atualizando valores


Para modificarmos algum dado armazenado em um campo xml, podemos faz-lo para incluir ou modificar um valor de um atributo. Por exemplo, se desejarmos incluir um novo produto na lista de compras do cliente, ou seja, incluir um novo elemento ou atributo no documento XML armazenado. Neste caso vamos usar o mesmo comando usado para atualizar dados na linguagem SQL, o comando UPDATE, mas antes preciso chamar o mtodo modify. O mtodo modify permite a realizao de alteraes (incluses e atualizaes) e excluses em documentos ou trechos do documento XML armazenado no SQL Server. Em nosso exemplo vamos incluir um novo elemento referente a um novo produto e valor na informao XML armazenado na tabela Minhatabela criada: Vamos inserir o elemento <produto descricao="Massa" valor="2.7" /> na coluna dados. A instruo usada a seguinte: UPDATE MinhaTabela SET dados.modify ('insert <produto descricao="Massa" valor="2.7" /> into (/cliente/compras)[1] ') WHERE codigoId = 1

Podemos observar o uso do mtodo modify em nosso update Para verificar se o comando foi executado corretamente vamos usar a instruo SELECT para exibir os dados da tabela :

185

Banco de Dados I

Clicando no link exibido na coluna dados iremos obter o arquivo XML abaixo:

Para que possamos incluir o elemento <produto descricao="Batata" valor="2.1" /> antes do elemento < produto descricao="Feijao" valor="2.8" /> ? Devemos executar o seguinte script: UPDATE MinhaTabela SET dados.modify ('insert <produto descricao="Batata" valor="2.1" /> before (/cliente/compras/produto)[2] ') WHERE codigoiD = 1

Perceba a utilizao da clusula before e que especificamos o produto (/cliente/compras/produto)[2]) atravs do ndice 2 para indicar a posio depois da qual vamos incluir o elemento. Naturalmente da mesma forma poderamos ter usado a clusula after para incluir depois da posio indicada na instruo SQL. Para efetuar uma alterao em dados XML j cadastrados devemos usar a instruo replace que idntica a instruo Update e permite alterar valores j cadastrados. A utilizao da instruo replace no pode ser usada para alterar ns, mas somente valores. Como exemplo vamos alterar o nome do produto Milho para Ervilha usando a instruo replace. UPDATE MinhaTabela Set dados.modify ('replace value of (/cliente/compras/produto[@descricao="Milho"] @descricao)[1] with "Ervilha"') /

186

Banco de Dados I

Where codigoId = 1

A instruo XPath - (/cliente/compras/produto[@descricao="Milho"][1] - vai procurar o primeiro produto que tenha a descrio Milho e vai substitu-lo pelo texto Ervilha. Para especificar que desejamos substituir o primeiro usamos o ndice [1]. Aps a execuo da instruo vamos novamente usar uma instruo SQL Select e posteriormente o link para verificar se o valor foi realmente alterado.

Podemos usar o operador last() para direcionar para o ltimo elemento independente da sua posio. Assim, para atualizar o valor do ultimo produto para 3.1 usamos a seguinte instruo: UPDATE MinhaTabela SET dados.modify ('replace "3.1"') value of (/cliente/compras/produto/@descricao)[last()] with

WHERE codigoid = 1

Aps a execuo da instruo vamos novamente usar uma instruo SQL Select e posteriormente o link para verificar se o valor foi realmente alterado.

187

Banco de Dados I

188

Banco de Dados I

42.4 Deletando valores


Para excluir usamos a clusula DELETE j conhecida da SQL. Ela usada para excluir atributos e elementos em um documento XML persistidos no SQL Server. Devemos atentar para o usos da clusula DELETE pois ela pode excluir valores, atributos, elementos e at mesmo todo o documento XML persistido na base de dados. Vamos ento verificar alguns exemplos usando DELETE: UPDATE MinhaTabela SET dados.modify(' delete /cliente/compras/produto/@descricao[contains(.,"o")]')

Esta instruo exclui todos os elementos descricao cujo atributo nome contenha a string "o" Por isso voc sempre deve usar uma clusula WHERE em uma instruo DELETE, como no exemplo abaixo: UPDATE MinhaTabela SET dados.modify(' delete /cliente') WHERE codigoid = 1

A instruo acima exclui todo o contedo XML para o cliente de cdigo igual a 1. Como o cliente a raiz do documento XML basta definir a raiz do documento que todos os elementos sero excludos ao final o valor da coluna passa a conter uma string vazia ("").

189

Banco de Dados I

Unidade 43 43.1 Situao problema

Trabalho Final

Uma empresa de manipulao deseja automatizar o processo de compra de matria prima, composio do produto acabado e venda dos produtos que manipulados. A empresa compra matria prima dos fornecedores. Esta matria prima armazenada com o Cdigo, Nome da Matria, Tipo, Valor por Grama, Estoque. A matria prima atualizada no estoque atravs de requisio quando da sua sada. Para a compra da matria prima necessrio gerar uma solicitao de compras. Quando a matria prima atinge seu ponto de reposio gerado uma solicitao de compras. A compra de matria prima efetuada atravs de uma nota fiscal, a qual obrigatoriamente contm Nmero da Nota Fiscal, Data da Emisso, Hora da Emisso, Unidade da Mercadoria, Preo Unitrio, Descrio da Mercadoria comprada. A nota fiscal atualiza estoque de matria prima e atualizao a solicitao que a gerou atravs do nmero desta nota. O produto manipulado composto por Cdigo, Nome do Produto, Frmula, Data de Validade, e Preo final. Um Produto pode possuir vrias matrias primas e uma matria prima pode ser um componente de vrios produtos. Um Fornecedor pode fornecer vrias matrias primas, e uma matria prima pode ser fornecida por vrios fornecedores. Um fornecedor composto de Cdigo do Fornecedor, Razo Social, CNPJ, IE, Endereo, E-mail, Site do Fornecedor, Telefone, FAX, Contato Comercial. O produto acabado atualiza o estoque de produtos acabados. A empresa tem uma carteira de clientes, que vo desde farmcias, clnicas, laboratrios, a atacados. Os clientes so atendidos no balco, por vendedores (funcionrios) tanto In loco como por televendas, gerando pedidos. As notas fiscais de vendas sero atendidas conforme os pedidos gerados, a qual contm obrigatoriamente as seguintes informaes: Nmero da Nota Fiscal, Data da Emisso, Hora da Emisso, Unidade da Mercadoria, Preo Unitrio, Preo Total do produto, total da nota fiscal, Descrio do produto, nome do vendedor, condies de pagamento, nmero do pedido. As vendas geram um arquivo de contas a receber, com as seguintes informaes: Cdigo, Cdigo do Cliente, Data da Emisso, Data do vencimento, Nmero da Parcela, Valor da Parcela, e Nmero da Nota Fiscal. A nota fiscal de venda atualiza o estoque de produtos acabados. Em caso de devoluo, gerada uma nota de devoluo e atualizado o estoque.

190

Banco de Dados I

191

Vous aimerez peut-être aussi