Banco de Dados I
UNIDADE 1 -      INTRODUÇÃO AO BANCO DE DADOS ....................................................................................................... 3
  1.1    INTRODUÇÃO ............................................................................................................................................................... 3
UNIDADE 2 -      CONCEITOS E ARQUITETURAS - SGBD....................................................................................................... 4
  2.1    AS LINGUAGENS PARA MANIPULAÇÃO DE DADOS: .............................................................................................................. 4
  2.2    CLASSIFICAÇÃO DOS SGBDS ........................................................................................................................................... 4
  2.3    O MODELO DE REDE 3-3-1 ............................................................................................................................................ 4
  2.4    O MODELO HIERÁRQUICO 3-3-2: ................................................................................................................................... 5
  2.5    O MODELO RELACIONAL 3-3-3: ..................................................................................................................................... 5
UNIDADE 3 -      MODELAGEM DE DADOS UTILIZANDO O MODELO ENTIDADE RELACIONAMENTO (ER) ........................... 8
  3.1    ELEMENTOS DO MODELO ENTIDADE-RELACIONAMENTO ...................................................................................................... 8
  3.2    TIPOS E INSTÂNCIAS DE RELACIONAMENTO: ..................................................................................................................... 10
  3.3    RESUMO DOS OBJETOS GRÁFICOS:.................................................................................................................................. 14
  3.4    MODELO ENTIDADE RELACIONAMENTO ESTENDIDO: ......................................................................................................... 15
  3.5    ESPECIALIZAÇÃO ......................................................................................................................................................... 16
  3.6    GENERALIZAÇÃO:........................................................................................................................................................ 17
  3.7    “LATTICE” OU MÚLTIPLA HERANÇA: .............................................................................................................................. 19
  3.8    DICAS PARA A ELABORAÇÃO DE UM DIAGRAMA E-R: .......................................................................................................... 20
UNIDADE 4 -      O MODELO RELACIONAL ........................................................................................................................ 22
  4.1    O MODELO RELACIONAL .............................................................................................................................................. 22
  4.2    DOMÍNIOS, TUPLAS, ATRIBUTOS E RELAÇÕES ................................................................................................................... 22
  4.3    ATRIBUTO CHAVE DE UMA RELAÇÃO .............................................................................................................................. 23
  4.4    CHAVE PRIMÁRIA ....................................................................................................................................................... 24
  4.5    CHAVE CANDIDATA ..................................................................................................................................................... 25
  4.6    CHAVE ESTRANGEIRA .................................................................................................................................................. 25
  4.7    MAPEAMENTO DO MODELO ENTIDADE RELACIONAMENTO PARA O MODELO RELACIONAL ....................................................... 25
  4.8    NORMALIZAÇÃO DE DADOS .......................................................................................................................................... 29
UNIDADE 5 -      SQL (STRUCTURED QUERY LANGUAGE) .................................................................................................. 33
  5.1    INTRODUÇÃO ............................................................................................................................................................. 33
  5.2    DML (DATA MANIPULATION LANGUAGE): ...................................................................................................................... 33
  5.3    DCL (DATA CONTROL LANGUAGE): ............................................................................................................................... 33
  5.4    TIPOS DE DADOS: ....................................................................................................................................................... 34
  5.5    EXPRESSÕES E OPERADORES: ........................................................................................................................................ 34
  5.6    TIPOS DE OPERADORES ................................................................................................................................................ 35
UNIDADE 6 -      CRIAÇÃO DE TABELAS............................................................................................................................. 37
  6.1    TUTORIAL:................................................................................................................................................................. 37
  6.2    CRIANDO TABELAS ...................................................................................................................................................... 37
  6.3    PARÂMETROS DE CAMPOS NA CRIAÇÃO DE TABELAS: ........................................................................................................ 38
  6.4    VALORES NULOS ........................................................................................................................................................ 38
  6.5    CHAVE PRIMÁRIA ....................................................................................................................................................... 38
  6.6    CHAVE ESTRANGEIRA: ................................................................................................................................................. 39
  6.7    INTEGRIDADE REFERENCIAL: ......................................................................................................................................... 39
  6.8    ON UPDATE: ........................................................................................................................................................... 39
  6.9    ON DELETE: ............................................................................................................................................................ 40
  6.10   REMOVENDO TABELAS................................................................................................................................................. 41
UNIDADE 7 -      COMANDOS PARA ALTERAR TABELAS .................................................................................................... 42
  7.1    ALTERAÇÃO DE TABELAS CRIADAS .................................................................................................................................. 42
7.2    ADICIONAR COLUNAS A UMA TABELA – ADD ................................................................................................................... 42
  7.3    REMOVER COLUNAS DE UMA TABELA – DROP ................................................................................................................. 42
  7.4    RENOMEANDO COLUNAS DE UMA TABELA – RENAME ..................................................................................................... 42
  7.5    MODIFICANDO COLUNAS DE UMA TABELA – MODIFY ...................................................................................................... 43
UNIDADE 8 -      MODIFICANDO DADOS ........................................................................................................................... 44
  8.1    INSERINDO DADOS ...................................................................................................................................................... 44
  8.2    INSERINDO DADOS POR MEIO DE UM SELECT .................................................................................................................. 44
  8.3    EXCLUINDO INFORMAÇÕES ........................................................................................................................................... 45
  8.4    ATUALIZANDO DADOS DE UMA TABELA............................................................................................................................ 45
UNIDADE 9 -      CONSULTA EM UMA ÚNICA TABELA SQL ................................................................................................ 47
  9.1    SINTAXE BÁSICA DE CONSULTAS SQL ............................................................................................................................. 47
  9.2    EXEMPLOS DE CONSULTAS SQL ..................................................................................................................................... 47
  9.3    SELEÇÃO DE TODOS OS REGISTROS COM COLUNAS ESPECÍFICAS ........................................................................................... 47
  9.4    REDEFININDO O NOME DAS COLUNAS ............................................................................................................................ 48
  9.5    SELEÇÃO DE REGISTROS COM EXIBIÇÃO DE STRINGS .......................................................................................................... 49
UNIDADE 10 -         UNIDADE 10: FUNÇÕES COM STRINGS ............................................................................................... 51
  10.1   FUNÇÕES COM STRINGS ............................................................................................................................................... 51
  10.2   SINTAXE DA FUNÇÃO DE CONCATENAÇÃO DE STRINGS ....................................................................................................... 51
  10.3   CONTROLE DE MAIÚSCULAS E MINÚSCULAS .................................................................................................................... 51
  10.4   SEGMENTANDO UMA STRING ........................................................................................................................................ 52
UNIDADE 11 -         CRITÉRIOS DE CONSULTA – CLÁUSULA WHERE .................................................................................. 54
  11.1   CLÁUSULA WHERE ...................................................................................................................................................... 54
  11.2   CONSULTAS SIMPLES COM CLÁUSULA WHERE .................................................................................................................. 55
  11.3   SELECIONANDO DADOS NÃO REPETIDOS ......................................................................................................................... 56
  11.4   SELECIONANDO ALGUNS DADOS..................................................................................................................................... 57
UNIDADE 12 -         PREDICADOS ...................................................................................................................................... 60
  12.1   PREDICADOS LIKE E NOT LIKE: .................................................................................................................................... 60
  12.2   PREDICADOS BETWEEN... AND E NOT BETWEEN... AND ............................................................................................ 61
  12.3   PREDICADOS IN E NOT IN:......................................................................................................................................... 61
  12.4   PREDICADO IS NULL E IS NOT NULL ............................................................................................................................ 62
  12.5   SELEÇÃO COM OPERADORES LÓGICOS ............................................................................................................................ 63
UNIDADE 13 -         FUNÇÕES DE AGRUPAMENTO E ORDENAÇÃO .................................................................................... 64
  13.1   OBTENDO INFORMAÇÕES ESTATÍSTICAS .......................................................................................................................... 64
  13.2   AGRUPAMENTO UTILIZANDO GROUP BY: ...................................................................................................................... 65
  13.3   UTILIZANDO WHERE E GROUP BY: ............................................................................................................................. 65
  13.4   SELEÇÃO DE REGISTROS COM AGRUPAMENTO PELA CLÁUSULA GROUP BY E HAVING: .......................................................... 66
  13.5   ORDENAÇÃO DAS CONSULTAS ....................................................................................................................................... 66
UNIDADE 14 -         CONSULTAS EM MÚLTIPLAS TABELAS ................................................................................................ 68
  14.1   CONSULTAS EM MÚLTIPLAS TABELAS ............................................................................................................................. 68
  14.2   JOIN ......................................................................................................................................................................... 68
  14.3   EQUIJOIN – JOIN DE IGUALDADE .................................................................................................................................... 69
  14.4   EXERCÍCIOS SUGERIDOS ............................................................................................................................................... 70
  14.5   EQUIJOINS E OPERADORES LÓGICOS: .............................................................................................................................. 70
  14.6   EQUIJOINS ENTRE MAIS DE DUAS TABELAS ........................................................................................................................ 71
  14.7   REDEFINIÇÃO DO NOME DE TABELAS .............................................................................................................................. 71
  14.8   OUTROS TIPOS DE JOINS - OUTER JOINS.......................................................................................................................... 71
  14.9   OUTROS TIPOS DE JOINS - SELF JOINS ............................................................................................................................. 72
UNIDADE 15 -         TRABALHANDO COM DATAS .............................................................................................................. 75
  15.1   DATAS EM MYSQL ..................................................................................................................................................... 75
  15.2   RECUPERANDO INFORMAÇÕES ESPECÍFICAS DE DATA......................................................................................................... 75
UNIDADE 16 -         EXERCÍCIOS EXTRAS ........................................................................................................................... 76

UNIDADE 17 -         PROJETO FINAL - REVISÃO ................................................................................................................. 80

UNIDADE 18 -         PRINCIPAIS BANCOS DE DADOS ......................................................................................................... 81

UNIDADE 19 -         MICROSOFT ACCESS ........................................................................................................................... 82
  19.1   INTRODUÇÃO ............................................................................................................................................................. 82
  19.2   ARQUIVOS DE BANCO DE DADOS DO ACCESS ........................................................................................................ 82
  19.3   INICIANDO O ACCESS ............................................................................................................................................. 86
  19.4   PRIMEIROS CONTATOS .......................................................................................................................................... 86
  19.5   MENUS E BARRAS DE FERRAMENTAS .................................................................................................................... 87
  19.6   JANELA BANCO DE DADOS ..................................................................................................................................... 88
  19.7   CRIANDO UM NOVO BANCO DE DADOS ................................................................................................................ 91
  19.8   ABRINDO UM BANCO DE DADOS ........................................................................................................................... 92
  19.9   FECHANDO UM BANCO DE DADOS ........................................................................................................................ 93
UNIDADE 20 -         TABELAS ............................................................................................................................................. 95
  20.1   CRIANDO UMA NOVA TABELA ............................................................................................................................... 98
  20.2   CRIAR UMA TABELA USANDO O ASSISTENTE DE TABELA ....................................................................................................... 98
  20.3   CRIAR UMA TABELA INSERINDO DADOS EM UMA FOLHA DE DADOS ........................................................................................ 99
  20.4   CRIAR UMA TABELA NO MODO DESIGN .......................................................................................................................... 100
  20.5   TIPOS DE DADOS .................................................................................................................................................. 101
  20.6   PROPRIEDADES DE CAMPOS ................................................................................................................................ 103
  20.7   BARRA DE FERRAMENTAS DO MODO DESIGN DE TABELA ................................................................................... 104
  20.8   EDITANDO DADOS NO MODO FOLHA DE DADOS................................................................................................. 105
UNIDADE 21 -         RELACIONAMENTOS ........................................................................................................................ 109
  21.1   BANCO DE DADOS RELACIONAL ........................................................................................................................... 109
  21.2   TIPOS DE RELACIONAMENTOS ............................................................................................................................. 109
  21.3   DEFININDO OS RELACIONAMENTOS .................................................................................................................... 111
UNIDADE 22 -         CONSULTAS...................................................................................................................................... 114
  22.1   O QUE SÃO AS CONSULTAS NO ACCESS ............................................................................................................... 114
  22.2   CRIAR UMA CONSULTA USANDO O ASSISTENTE DE CONSULTA ............................................................................................ 114
  22.3   CRIAR UMA CONSULTA USANDO O MODO DESGIN............................................................................................................ 115
  22.4   TIPOS DE CONSULTAS .......................................................................................................................................... 118
UNIDADE 23 -         FORMULÁRIOS ................................................................................................................................. 126
  23.1   O QUE SÃO FORMULÁRIOS? ................................................................................................................................ 126
  23.2   CRIANDO UM NOVO FORMULÁRIO ..................................................................................................................... 127
  23.3   CAIXA DE FERRAMENTAS ..................................................................................................................................... 130
  23.4   SOBRE AS SEÇÕES DE UM FORMULÁRIO .............................................................................................................. 133
  23.5   SUBFORMULÁRIOS .............................................................................................................................................. 135
UNIDADE 24 -         RELATÓRIOS ..................................................................................................................................... 140
  24.1   O QUE SÃO RELATÓRIOS? .................................................................................................................................... 140
  24.2   CRIANDO UM NOVO RELATÓRIO ......................................................................................................................... 141
  24.3   CAIXA DE FERRAMENTAS ..................................................................................................................................... 144
UNIDADE 25 -         PÁGINA DE DADOS........................................................................................................................... 146
  25.1   PARA CRIAR UMA PÁGINA DE ACESSO A DADOS ................................................................................................. 146
  25.2   CRIAR UMA PÁGINA DE ACESSO .......................................................................................................................... 146
UNIDADE 26 -         PERSONALIZAÇÃO E UTILITÁRIOS..................................................................................................... 152
  26.1   CONFIGURAÇÕES DE INICIALIZAÇÃO ................................................................................................................... 152
  26.2   COMPACTANDO UM BANCO DE DADOS ......................................................................................................................... 153
  26.3   REPARANDO UM BANCO DE DADOS .................................................................................................................... 154
  26.4   PROTEGENDO UM APLICATIVO............................................................................................................................ 154
UNIDADE 27 -         MYSQL ............................................................................................................................................. 157
  27.1   INTRODUÇÃO ........................................................................................................................................................... 157
UNIDADE 28 -         O FRONT-END .................................................................................................................................. 158
  28.1   ALGUNS EXEMPLOS................................................................................................................................................... 158
UNIDADE 29 -         CONECTANDO AO BANCO DE DADOS............................................................................................... 159
  29.1   ATRAVÉS DE LINGUAGENS DE PROGRAMAÇÃO ................................................................................................................ 159
  29.2   ATRAVÉS DO FRONT-END ........................................................................................................................................... 160
UNIDADE 30 -         CONHECENDO A INTERFACE ............................................................................................................. 163
  30.1   PHPMYADMIN ......................................................................................................................................................... 163
  30.2   MYSQL QUERY BROWSER ......................................................................................................................................... 163
  30.3   ACESSANDO UMA BASE DE DADOS ............................................................................................................................... 164
UNIDADE 31 -         CRIANDO UMA NOVA BASE DE DADOS ............................................................................................ 166
  31.1   INTERFACE E COMANDO............................................................................................................................................. 166
UNIDADE 32 -         CRIANDO TABELAS ........................................................................................................................... 167
  32.1   INTERFACE .............................................................................................................................................................. 167
UNIDADE 33 -         CRIANDO CONSULTAS ...................................................................................................................... 170
  33.1   INTERFACE .............................................................................................................................................................. 170
UNIDADE 34 -         SQL SERVER ...................................................................................................................................... 172
  34.1   INTRODUÇÃO ........................................................................................................................................................... 172
UNIDADE 35 -         O FRONT-END .................................................................................................................................. 174
  35.1   FERRAMENTA NATIVA ................................................................................................................................................ 174
UNIDADE 36 -         CONECTANDO AO BANCO DE DADOS............................................................................................... 175
  36.1   ATRAVÉS DE LINGUAGENS DE PROGRAMAÇÃO ................................................................................................................ 175
  36.2   ATRAVÉS DO FRONT-END ........................................................................................................................................... 176
UNIDADE 37 -         CONHECENDO A INTERFACE ............................................................................................................. 177
  37.1   APLICATIVO NATIVO .................................................................................................................................................. 177
  37.2   ACESSANDO UMA BASE DE DADOS ............................................................................................................................... 177
UNIDADE 38 -         CRIANDO UMA NOVA BASE DE DADOS ............................................................................................ 178
  38.1   INTERFACE E COMANDO............................................................................................................................................. 178
UNIDADE 39 -         CRIANDO TABELAS ........................................................................................................................... 180
  39.1   INTERFACE .............................................................................................................................................................. 180
UNIDADE 40 -         CRIANDO CONSULTAS ...................................................................................................................... 181
  40.1   INTERFACE .............................................................................................................................................................. 181
UNIDADE 41 -         CONHECENDO XML .......................................................................................................................... 182
  41.1   INTRODUÇÃO ........................................................................................................................................................... 182
UNIDADE 42 -         XML NO SQL SERVER ........................................................................................................................ 183
  42.1   CRIANDO COLUNAS DO TIPO XML ................................................................................................................................ 183
  42.2   INSERINDO VALORES .................................................................................................................................................. 184
  42.3   ATUALIZANDO VALORES ............................................................................................................................................. 185
  42.4   DELETANDO VALORES ............................................................................................................................................... 189
UNIDADE 43 -         TRABALHO FINAL ............................................................................................................................. 190
  43.1   SITUAÇÃO PROBLEMA ................................................................................................................................................ 190
Banco de Dados I



     Unidade 1 - Introdução ao Banco de Dados

1.1 Introdução

A tecnologia aplicada aos métodos de armazenamento de informações 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 implícito. Porém, o significado do termo ―banco de dados‖ é mais restrito
que simplesmente a definição dada acima. Um banco de dados possui as seguintes propriedades:
Banco de dados é uma coleção lógica coerente de dados com um significado inerente; uma
disposição desordenada dos dados não pode ser referenciada como um banco de dados;
Banco de dados é projetado, construído e populado com dados para um propósito específico; um
banco de dados possui um conjunto pré-definido de usuários e aplicações;
Banco de dados representa algum aspecto do mundo real, o qual é chamado de ―minimundo‖;
qualquer alteração efetuada no minimundo é automaticamente refletida no banco de dados.
Banco de dados pode ser criado e mantido por um conjunto de aplicações desenvolvidas
especialmente para esta tarefa ou por um ―Sistema Gerenciador de Banco de Dados‖ (SGBD). Um
SGBD permite aos usuários criarem e manipularem bancos de dados de propósito gerais. O
conjunto formado por um banco de dados mais as aplicações que manipulam o mesmo é chamado
de ―Sistema de Banco de Dados‖.


Banco de Dados: é uma coleção de dados inter-relacionados, representando informações sobre
um domínio específico.
Exemplos: lista telefônica, 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
específicos para facilitar a manipulação das informações dos bancos de dados e o
desenvolvimento de programas aplicativos.




                                                                                                     3
Banco de Dados I



  Unidade 2 - Conceitos e Arquiteturas - SGBD

2.1 As Linguagens para Manipulação de Dados:

Para a definição dos esquemas conceituais e internos pode-se utilizar uma linguagem chamada
DDL (Data Definition Language - Linguagem de Definição de Dados). O SGBD possui um
compilador DDL que permite a execução das declarações para identificar as descrições dos
esquemas e para armazená-las no catálogo do SGBD. A DDL é utilizada em SGBDs onde a
separação entre os níveis internos e conceituais não é muito clara.
Em um SGBD em que a separação entre os níveis conceitual e interno são bem claras, é utilizado
outra linguagem, a SDL (Storage Definition Language - Linguagem de Definição de
Armazenamento) para a especificação do esquema interno. A especificação do esquema
conceitual fica por conta da DDL.
 Em um SGBD que utiliza a arquitetura três esquemas, é necessária a utilização de mais uma
linguagem para a definição de visões, a VDL (Vision Definition Language - Linguagem de Definição
de Visões).
 Uma vez que o esquema esteja compilado e o banco de dados esteja populado, usa-se uma
linguagem para fazer a manipulação dos dados, a DML (Data Manipulation Language - Linguagem
de Manipulação de Dados).


2.2 Classificação dos SGBDs

O principal critério para se classificar um SGBD é o modelo de dados no qual é baseado. A grande
maioria dos SGBDs contemporâneos é baseada no modelo relacional, alguns em modelos
conceituais e alguns em modelos orientados a objetos. Outras classificações são:


Usuários: um SGBD pode ser monousuário, comumente utilizado em computadores pessoais ou
multiusuários, utilizado em estações de trabalho, minicomputadores e máquinas de grande porte;


Localização: um SGBD pode ser localizado ou distribuído; se ele for localizado, então todos os
dados estarão em uma máquina (ou em um único disco) ou distribuído, onde os dados estarão
distribuídos por diversas máquinas (ou diversos discos);
Ambiente: ambiente homogêneo é o ambiente composto por um único SGBD e um ambiente
heterogêneo é o ambiente composto por diferentes SGBDs.


2.3 O Modelo de Rede 3-3-1



                                                                                              4
Banco de Dados I


Os dados são representados por coleções de registros e os relacionamentos por elos.




2.4 O Modelo Hierárquico 3-3-2:

Os dados e relacionamentos são representados por registros e ligações, respectivamente.
Os registros são organizados como coleções arbitrárias de árvores.




2.5 O Modelo Relacional 3-3-3:



                                                                                          5
Banco de Dados I


Os meta dados são representados por tabelas, contendo linhas e colunas, onde são ligadas por
colunas. Cada tabela contém uma ou mais colunas como identificadores.




Laboratório
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 utilização de um sistema de banco de dados?
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________




                                                                                          6
Banco de Dados I


Descrever o modelo relacional de dados.
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________


Definir os seguintes termos:


Linguagem de definição de dados;
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________


Linguagem de manipulação de dados.
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________




                                                                             7
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 eficiência.
Baseiam-se na percepção do mundo real, que consiste em uma coleção de objetos básicos,
chamados entidades e em relacionamentos entre esses objetos. Para identificar um modelo
relacional, utilizamos o Diagrama de Estrutura de Dados.
Abaixo identificaremos todas as características do Modelo E-R


Entidade: objeto do mundo real, concreto ou abstrato e que possui existência independente.
O objeto básico tratado pelo modelo ER é a ―entidade‖. Uma entidade pode ser concreta, como
uma caneta ou uma pessoa, ou abstrata, como um conceito ou uma sensação.
No banco de dados de uma empresa, por exemplo, são entidades: Funcionário, cliente,
Departamento, etc. Cada entidade representa objetos com as mesmas características.
 Um banco de dados, portanto, compreende uma coleção de conjuntos de entidades do mesmo
tipo.
O símbolo que representa a entidade no modelo E-R é um retângulo 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: São propriedades (características) que identificam as entidades. Cada entidade possui
uma coleção de elementos de dados.
A cada atributo de uma entidade é associado um domínio de valores. Esses domínios podem ser
um conjunto de números inteiros, números reais, cadeias de caracteres ou qualquer outro tipo de
valor que o atributo pode assumir.
Os atributos são representados apenas pelo seu nome ligado à entidade por uma linha reta, por
exemplo:



  FUNCIONÁRIO                            Nome


                                                                                                8
Banco de Dados I




Podemos ter vários tipos de atributos: simples, composto, multivalorado e determinante. Vejamos
as características de cada um deles:


Simples ou atômico: não possui qualquer característica especial. Por exemplo, o nome Da
empresa é um atributo sem qualquer característica especial.


                       EMPRESA                        Nome


Composto: o seu conteúdo é formado por itens menores. O conteúdo de um atributo composto
pode ser dividido em vários atributos simples.



                                                                  Rua
                    EMPRESA                       Endereço       CEP

                                                                 Bairro


Multivalorado: o seu conteúdo pode ser formado por mais de uma informação. É 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 instâncias de uma
entidade, ou seja, é único para as instâncias de uma entidade. É indicado sublinhando-se o nome
do atributo. No exemplo de uma empresa, o CNPJ é um atributo determinante, pois não podem
existir duas empresas com o mesmo valor nesse atributo.


                      EMPRESA                  CNPJ


Vejamos um exemplo no qual se aplicam os conceitos vistos até aqui:


 Uma empresa necessita armazenar os dados de seus funcionários, atualmente em um fichário. Os
dados são a Matrícula, o Nome, o Endereço (Rua, CEP e Bairro), o Telefone (o funcionário pode
ter mais de um) e o cargo.




                                                                                             9
Banco de Dados I


              Matrícula                    Nome
                                                                   Rua

                          EMPRESA                  Endereço        CEP
                                                                   Bairro


              * Telefone                   Cargo


Laboratório


Identifique os atributos e o tipo do atributo nas seguintes entidades.


CLIENTES - FUNCIONARIOS - EMPRESA - PRODUTOS


3.2 Tipos e Instâncias de Relacionamento:

Além de conhecer detalhadamente os tipos entidade, é muito importante conhecer também os
relacionamentos entre estes tipos entidades.
 Relacionamento: é o tipo de ocorrência existente entre entidades. O Símbolo 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 três tipos de relacionamentos entre entidades: um-para-um, um-para-vários e vários-para-
vários.


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 funcionário-gerente só pode chefiar um único
departamento.




                                                                                             10
Banco de Dados I

                   A                    Gerencia                      B
              Funcionário                                       Departamento

                   e1
                   e2
                                                                  d1
                   e3
                   e4                                             d2
                   e5
                                                                  d3
                   e6
                   e7                       1:1


                                1      chefia           1
            Funcionário                                      Departamento

Este é um caso particular, pois outra empresa poderia ter o mesmo gerente chefiando vários
departamentos. Vale lembrar que os modelos de dados são utilizados num determinado contexto.
Muda-se o contexto, muda-se também o modelo de dados.


Um-para-Vários: é 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 funcionário só pode ser alocado em
um único departamento, porém num departamento podem trabalhar vários funcionários.

                   A                Trabalha Para                     B
             Funcionário                                       Departamento



                   e1
                                                                 d1
                   e2
                   e3                                            d2
                   e4
                                                                 d3
                   e5
                   e6
                   e7




                                         N:1


                            N       Trabalha para   1
           Funcionário                                      Departamento



Esta representação acaba resultando num relacionamento 1: N invertido.


                                                                                         11
Banco de Dados I


Vários-para-vários: é quando várias (N) entidade de A se relacionam com várias(M) entidade de
B.
Exemplo para esse tipo de relacionamento é o que ocorre entre um funcionário e os projetos de
uma empresa. Um funcionário pode trabalhar em vários projetos, e um projeto pode ser executado
por mais de um funcionário.
                     A            Trabalha Em                  B
                   Funcionário                                     Projeto

                      e1
                      e2
                                                                   p1
                      e3
                      e4                                           p2
                                                                   p3




                                              N:M


                                 N        Trabalha     M
              Funcionário                                    Projeto
                                            em         1



Cardinalidade: define o número máximo de ocorrências em um relacionamento


Para se determinar a cardinalidade, deve-se fazer a pergunta relativa ao relacionamento em
ambas as direções. No exemplo a seguir, temos:

                                      1                     N
                                              possui
               Departamento                                        Funcionário
                                     (1:N)                 (1:1)



- Um departamento possui quantos funcionários? No mínimo 1 e no máximo N.
- Um funcionário está alocado em quantos departamentos? Em no mínimo 1 e no máximo 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 relação de locação e outra de gerência com
a entidade Funcionário. Nesse caso, existem dois relacionamentos entre as entidades.




                                                                                           12
Banco de Dados I




                                          gerência

                                  1                               N
                    Funcionário                                     Departamento

                                  1                             1
                                           locação
Traduzindo o diagrama temos:
- cada departamento da empresa possui vários (N) funcionários lotados nele.
- um departamento possui um único funcionário que ocupa o cargo de gerente.
 Grau de um Relacionamento: O ―grau‖ de um tipo relacionamento é o número de tipos entidade
que participam do tipo relacionamento. O grau de um relacionamento é ilimitado, porém, a partir do
grau três (ternário), a compreensão e a dificuldade de se desenvolver a relação corretamente se
tornam extremamente complexas.
Relacionamento Ternário: alguns relacionamentos precisam ligar 3 entidades, como no exemplo
que se segue.
 Numa indústria, um fornecedor pode fornecer várias peças para vários projetos. Um projeto pode
ter vários fornecedores para várias peças. E uma peça pode ter vários fornecedores para vários
projetos.

                                  N   M
                                      1     PFPj
                   Fornecedor                                         Peça




                                          Projeto


Auto relacionamento: uma entidade pode se relacionar com ela mesma. Observe o exemplo:
 Numa empresa, um funcionário pode chefiar vários funcionários, porém ele também é um
funcionário.
                                             N
                             Chefia                 Funcionário

                                                            1


Entidade Dependente: uma entidade pode ter sua existência vinculada à existência de outra
entidade.



                                                                                               13
Banco de Dados I


Uma empresa necessita armazenar os dados dos dependentes menores dos funcionários.
A entidade Dependente só existe porque existe a entidade Funcionário


                              1
                                                N
             Funcionário            Possui             Dependente

O símbolo que representa a entidade dependente é um retângulo dentro de outro retângulo, com o
nome da entidade escrito no seu interior.


Relacionamento É-Um (Generalização/Especialização): ocorre quando uma entidade com seus
atributos englobam entidades especializadas com seus atributos específicos. No esquema a
seguir, a entidade Cliente engloba seus atributos e também os atributos específicos da entidade
Pessoa Física, assim como os de Pessoa Jurídica.


                                    Cliente




                     Pessoa                         Pessoa Jurídica
                     Física
3.3 Resumo dos objetos gráficos:

O diagrama Entidade Relacionamento é composto por um conjunto de objetos gráficos que visa
representar todos os objetos do modelo Entidade Relacionamento tais como entidades, atributos,
atributos chaves, relacionamentos, restrições estruturais, etc.
O diagrama ER fornece uma visão lógica do banco de dados, fornecendo um conceito mais
generalizado de como estão estruturados os dados de um sistema.
Os objetos que compõem o diagrama ER estão listados a seguir,


                   ENTIDADE                               ATRIBUTO
                                                          ATRIBUTO CHAVE

                     ENTIDADE                            * ATRIBUTO MULTIVALORADO
                      FRACA
                                                                 ATRIBUTO
                                                                COMPOSTO
               RELACIONAMENT
                     O




                                                                                            14
Banco de Dados I



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


Figura - Objetos que Compõem o Diagrama ER

3.4 Modelo Entidade Relacionamento Estendido:

Os conceitos do modelo Entidade Relacionamento discutidos anteriormente são suficientes para
representar logicamente a maioria das aplicações de banco de dados.
Porém, com o surgimento de novas aplicações, surgiu também a necessidade de novas
semânticas para a modelagem de informações mais complexas. O modelo Entidade
Relacionamento
Estendido (ERE) visa fornecer esta semântica para permitir a representação de informações
complexas.
É importante frisar que embora o modelo ERE trate classes e subclasses, ele não possui a mesma
semântica de um modelo orientado a objetos.
O modelo ERE engloba todos os conceitos do modelo ER mais os conceitos de subclasse,
superclasse, generalização e especialização e o conceito de herança de atributos.
Subclasses, Superclasses e Especializações:
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 são
significativas e precisam ser representadas explicitamente devido ao seu significado à aplicação
de banco de dados. Leve em consideração o seguinte exemplo:
 Para um banco de dados de uma empresa temos o tipo entidade empregado, o qual possui as
seguintes características: nome, RG, CIC, número funcional, endereço completo (rua, número,
complemento, CEP, bairro, cidade), sexo, data de nascimento e telefone (DDD e número); caso o
(a) funcionário (a) seja um (a) engenheiro (a), então se deseja armazenar as seguintes
informações: número do CREA e especialidade (Civil, Mecânico, Eletro/Eletrônico); caso o (a)
funcionário (a) seja um (a) secretário (a), então se deseja armazenar as seguintes informações:
qualificação (bi ou tri língua) e os idiomas no qual possui fluência verbal e escrita.
 Se as informações número do CREA, especialidade, tipo e idiomas forem representadas
diretamente no tipo entidade empregado estaremos representando informações de um conjunto
limitados de entidades empregado para os todos os funcionários da empresa.
Neste caso, podemos criar duas subclasses do tipo entidade empregado: engenheiro e secretária,
as quais irão conter as informações acima citadas. Além disto, engenheiro e secretária podem ter
relacionamentos específicos.
Uma entidade não 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 herança de atributos; ou seja, a subclasse herda todos os atributos da
superclasse. Isto porque a entidade de subclasse representa as mesmas características de uma
mesma entidade da superclasse.
Uma subclasse pode herdar atributos de superclasses diferentes.
A figura abaixo mostra a representação diagramática do exemplo acima.




                                             nome          dt. nasc.

                             no. funcional
                                                                       sexo

                                    rg         Empregado
                                                                       endereç
                                                                          o
                                                        Função

                                                    d

                                                                              qualificação
             No registro


                                  Engenheiro                  Secretária                idiomas
            especialização


Figura - Representação de Superclasse e Subclasses


3.5 Especialização

Especialização é o processo de definição de um conjunto de classes de um tipo entidade; este tipo
entidade é chamado de superclasse da especialização. O conjunto de subclasses é formado
baseado em alguma característica que distingue as entidades entre si.
No exemplo da figura 12, temos uma especialização, a qual pode chamar de função. Veja agora
no exemplo da figura 13, temos a entidade empregado e duas especializações.


                               Empregado


                           Função                       Categoria
                                                         Salarial
                 d                                       d




    Engenheiro       Secretária              Horista         Mensalista




                                                                                                  16
Banco de Dados I




Figura - Duas Especializações para Empregado: Função e Categoria


Como visto anteriormente, uma subclasse pode ter relacionamentos específicos com outras
entidades ou com a própria entidade que é a sua superclasse. Veja o exemplo da figura 14.




                                                                      N
                              Projeto                                         Empregado

                                                                 é liderado
                                                                                        Função
                        é
                                   N
                   desenvolvid
                      o por                             1        lidera             d




                                             N
                                                             Engenheiro                      Secretária
                                         participa

Figura - Relacionamentos Entre Subclasses e Entidades


O processo de especialização nos permite:
Definir um conjunto de subclasses de um tipo entidade;
Associar atributos específicos adicionais para cada subclasse;
Estabelecer tipos relacionamentos específicos entre subclasses e outros tipos entidades.


3.6 Generalização:

A generalização pode ser pensada como um processo de abstração reverso ao da especialização,
no qual são suprimidas as diferenças entre diversos tipos entidades, identificando suas
características comuns e generalizando estas entidades em uma superclasse.


                   no. funcional        no. funcional       qualificação
 No registro


                 Engenheiro                 Secretária                    idiomas
especialização

                 nome        rg            nome             rg
                                                                                                          17
Banco de Dados I




Figura - Tipos Entidades Engenheiro e Secretária




                                             nome

                             no. funcional


                                              Empregado
                                   rg




                                                    d


                                                                       qualificação
              o
             n registro


                                 Engenheiro     Função    Secretária             idiomas
            especialização


Figura - Generalização Empregado para os Tipos Entidades Engenheiro e Secretária


É importante destacar que existe diferença semântica entre a especialização e a generalização.
Na especialização, podemos notar que a ligação entre a superclasse e as subclasses é feita
através de um traço simples, indicando participação parcial por parte da superclasse.
Analisando o exemplo da figura 12, é observado que um empregado não é obrigado a ser um
engenheiro ou uma secretária. Na generalização, podemos notar que a ligação entre a
superclasse e as subclasses é feita através de um traço duplo, indicando participação total por
parte da superclasse. Analisando o exemplo da figura 16, é observado que um empregado é
obrigado a ser um engenheiro ou uma secretária.
A letra d dentro do círculo que especifica uma especialização ou uma generalização significa
disjunção.
Uma disjunção em uma especialização ou generalização 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 especializações para a superclasse Empregado,
as quais são restringidas através de uma disjunção. Neste caso, um empregado pode ser um
engenheiro ou uma secretária e o mesmo pode ser horista ou mensalista.


Além da disjunção 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
especialização ou generalização. Analise a generalização no exemplo da figura 17. Suponha que
uma peça fabricada em uma tornearia pode ser manufaturada ou torneada ou ainda, pode ter sido
manufaturada e torneada.




                                           Descriçã
                                              o
                             no. da peça

                                                 Peça



                                                      o

                                                                                No. Projeto
                 Data

                               Manufaturada                       Torneada                Preço
           Ordem Serviço

Figura - Uma Generalização com ―Overlap‖


3.7 “Lattice” ou Múltipla Herança:

Uma subclasse pode ser definida através de um ―lattice‖, ou múltipla herança, ou seja, ela pode ter
diversas superclasses, herdando características de todas. Leve em consideração o seguinte
exemplo:
Uma construtora possui diversos funcionários, os quais podem ser engenheiros ou secretárias.
Um funcionário pode também ser assalariado ou horista. Todo gerente de departamento da
construtora deve ser um engenheiro e assalariado.



                                 Empregado

                             Função                         Categoria Salarial
                 d                                            d


                                                                                                  19
    Secretaria          Engenheiro             Mensalista             Horista
Banco de Dados I




Figura 18 - Um ―Lattice‖ com a Subclasse Gerente Compartilhada


Neste caso então, um gerente será um funcionário que além de possuir as características próprias
de Gerente, herdará as características de Engenheiro e de Mensalista.




3.8 Dicas para a elaboração de um diagrama E-R:

A presença de um substantivo usualmente indica uma entidade;
A presença de um verbo é uma forte indicação de um relacionamento;
Um adjetivo, que é uma qualidade, é uma forte indicação de um atributo;
Um advérbio temporal, qualificando o verbo, é uma indicação de um atributo do relacionamento.
Laboratório
Etapas
1) Construa um diagrama E-R para um hospital com um conjunto de pacientes e um conjunto de
médicos. Registros de diversos testes realizados são associados a cada paciente.
2) Construa um diagrama E-R para uma companhia de seguros de automóveis com um conjunto
de clientes, onde cada um possui certo número de carros. Cada carro tem um número de
acidentes associados a ele.
3) Explique a diferença entre uma entidade (conjunto entidade) e uma ocorrência (instância) de
uma entidade.
4) O que é o papel de uma entidade em um relacionamento? Quando é necessário 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 binários.




                                                                                                20
Banco de Dados I




7) Modifique o diagrama abaixo para especificar o seguinte:
a) Um curso não pode estar vazio, isto é, deve possuir alguma disciplina em seu currículo.
b) Um aluno, mesmo que não 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 exercício anterior na notação de Peter Chen, especificando as
cardinalidades mínimas e máximas (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 teórica e a forma como o mesmo pode
ser derivado do modelo Entidade-Relacionamento apresentado na unidade anterior. Assim, com o
conteúdo visto na unidade anterior podemos modelar os dados de uma aplicação, através do
modelo ER, e mapeá-los para o modelo relacional, de forma a implementar no banco de dados.


4.2 Domínios, Tuplas, Atributos e Relações

 Um domínio D é um conjunto de valores atômicos, sendo que por atômico, podemos
compreender que cada valor do domínio é indivisível. Durante a especificação do domínio é
importante destacar o tipo, o tamanho e a faixa do atributo que está sendo especificado. Por
exemplo:


            Coluna           Tipo                 Tamanho          Faixa
            RG               Numérico             10,0             03000000-
                                                                   25999999
            Nome             Caractere            30               a-z, A-Z
            Salário          Numérico             5,2              00100,00-
                                                                   12999,99


Um esquema de relação R, denotado por R(A1, A2,..., An), onde cada atributo Ai é o nome do
papel desempenhado por um domínio D no esquema relação R, onde D é chamado domínio de Ai
e é denotado por dom (Ai). O grau de uma relação R é o número de atributos presentes em seu
esquema de relação.
A instância r de um esquema relação denotado por r(R) é um conjunto de n-tuplas:
 r = [t1, t2, ... , tn] onde os valores de [t1, t2, ... , tn] devem estar contidos no domínio D. O valor nulo
também pode fazer parte do domínio de um atributo e representa um valor não conhecido para
uma determinada tupla.




                                                                                                         22
Banco de Dados I




4.3 Atributo Chave de uma Relação

Uma relação pode ser definida como um conjunto de tuplas distintas. Isto implica que a
combinação dos valores dos atributos em uma tupla não pode se repetir na mesma tabela. Existirá
sempre um subconjunto de atributos em uma tabela que garantem que não haverá valores
repetidos para as diversas tuplas da mesma, garantindo que t1[SC]  t2[SC].
SC é chamada de superchave de um esquema de relação. Toda relação possui ao menos uma
superchave - o conjunto de todos os seus atributos. Uma chave C de um esquema de relação R é
uma superchave de R com a propriedade adicional que removendo qualquer atributo A de K, resta
ainda um conjunto de atributos K‘ que não é uma superchave de R. Uma chave é uma superchave
da qual não se pode extrair atributos.
Por exemplo, o conjunto: (RA, Nome, Endereço) é uma superchave para estudante, porém, não é
uma chave, pois se tirarmos o campo Endereço 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) não 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               Nome             Dt.            Relação     Sexo
  Responsável      Dependente       Nascimento
  10101010          Jorge           27/12/86       Filho      Masculin
                                                              o
  10101010          Luiz            18/11/79       Filho      Masculin
                                                              o
  20202020          Fernanda        14/02/69       Cônjuge    Feminin
                                                              o
  20202020          Ângelo          10/02/95       Filho      Masculin
                                                              o


Quando uma relação possui mais que uma chave (não confundir com chave composta) - como,
por exemplo, RG e CIC para empregados - cada uma destas chaves são chamadas de chaves
candidatas. Uma destas chaves candidatas deve ser escolhida como chave primária.
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                Númer   RG
                         o       Gerente
    Contabilidade        1        10101010
    Engenharia           2        30303030
    Civil
    Engenharia           3        20202020
    Mecânica




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

4.4 Chave Primária

 É 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 Código, denominado, portanto, chave
primária (PRIMARY KEY).




                                                                                                 24
Banco de Dados I




4.5 Chave Candidata

 É qualquer conjunto de atributos que consegue satisfazer ao critério de chave primária. Toda
tabela tem pelo menos uma chave candidata. Quando existe mais de uma chave candidata, deve-
se escolher para chave primária o campo que tenha a menor possibilidade de ter um valor nulo.

4.6 Chave Estrangeira

É o atributo de uma tabela que é chave primária 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 primária 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
básicos, 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, são inseridos apenas os
componentes simples de cada um; um dos atributos chaves de E deve ser escolhida como a chave
primária de T1;




               Funcionário
               Código (PK)
               Nome
               Rua
               Numero
               CEP
               Bairro
               Data_nascimento
               CPF




                                                                                          25
Banco de Dados I


 2. Para cada entidade fraca EF com entidade proprietária E no modelo ER, é criada uma tabela T1
no Modelo Relacional incluindo todos os atributos simples de EF; para cada atributo composto, são
inseridos apenas os componentes simples de cada um; a chave primária desta relação T1 será
composta pela chave parcial da entidade fraca EF mais a chave primária da entidade proprietária
E;


              Funcionário                            Dependente
              Codigo                                 CodigoFuncionario (PK)
              Nome                                   CodigoDependente
              Rua                                    Nome
              Numero                                 Data_nascimento
              CEP                                    Tipo_parentesco
              Bairro
              Data_nascimento
              CPF




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 primária de uma das relações (T1,
T2)e inseri-la como chave estrangeira na outra relação; se um dos lados do relacionamento tiver
participação total e outro parcial, então é interessante que a chave do lado com participação
parcial seja inserida como chave estrangeira no lado que tem participação total;




Relacionamento Gerência
                   Funcionario                       Departamento
                   Codigo                            Codigo
                   Nome                              CodigoFuncionario (PK)
                   Rua                               Nome
                   Numero
                   CEP
                   Bairro




                                                                                              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
primária de T1 como chave estrangeira em T2;




Relacionamento Trabalha
               Funcionario                              Departamento
               Codigo                                   Codigo
               CodigoDepartamento (PK)                  Nome
               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 primária de T1 será composta pelos atributos chave de E1 e E2;


 Funcionario                       FuncionarioProjeto                  Projeto
 Codigo                            CodigoFuncionario (PK)              Codigo
 Nome                              CodigoProjeto (PK)                  Nome
 Rua                                                                   Descrição
 Numero                                                                Tempo_previsto
 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 contém A1; a
chave primária de T1 será composta por A1 mais C; se A1 for composto, então a tabela T1 deverá
conter todos os atributos de A1;


               Funcionario                              Telefone
               Codigo                                   CodigoFuncionario (PK)



                                                                                                 27
Banco de Dados I


                 Nome                                         CodigoTelefone
                 Rua                                          DDD
                 Numero                                       Numero
                 CEP                                          Tipo
                 Bairro
                 Data_nascimento
                 CPF




7. Para cada relacionamento n-ário, n > 2, cria-se uma tabela T1, contendo todos os atributos do
relacionamento; a chave primária de T1 será composta pelos atributos chaves das entidades
participantes do relacionamento;
8. Converta cada especialização com m subclasses {S1, S2, ..., Sm} e superclasse SC, onde os
atributos de SC são {c, a1, a2, ..., an} onde c é a chave primária de SC, em tabelas utilizando uma
das seguintes opções:
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 opção é para generalizações com ―overlapping‖, e todos os ti, 1  i  m, é um atributo
―booleano‖ indicando se a tupla pertence ou não à subclasse Si; embora funcional esta opção
possa gerar uma quantidade muito grande de valores nulos;


Figura - Mapeamento para o Modelo Relacional
       o                                            o
      1 Passo - Entidades Normais                 2 Passo - Entidades Fracas


           E                                 E                      EF

                                         c

  o                             o                               o
 3 Passo - Relacionamentos 4 Passo - Relacionamentos 1:N      5 Passo - Relacionamentos
            1:1                                                          N:N
                                     1       N                        N        N
   E                  E        E                  E              E                 E
                                                                                                     28
                   o
Banco de Dados I




4.8 Normalização de Dados

 Consiste em definir o formato conceitual adequado para as estruturas de dados identificados no
projeto lógico do sistema, com o objetivo de minimizar o espaço utilizado pelos dados e garantir a
integridade e confiabilidade das informações.

A normalização é feita, através da análise dos dados que compõem as estruturas utilizando o
conceito chamado "Formas Normais (FN)". As FN são conjuntos de restrições 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 compõem satisfizerem as restrições definidas para esta etapa.

A normalização completa dos dados é feita, seguindo as restrições 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 normalização dos dados, é primordial que seja definido um campo chave para a
estrutura, campo este que garanta identificar apenas uma tupla da relação.

Primeira Forma Normal (1FN)

Uma tabela está na primeira forma normal se no domínio de seus atributos, isto é, na interseção
de uma linha com uma coluna (célula) da tabela, só existirem valores atômicos.

Valor atômico é uma unidade indivisível, simples.

Assim, não pode ocorrer um domínio Endereço com subdomínios Cidade, Rua, Número,
Complemento. Uma tabela normalizada teria estes campos separados.

Situação                                     Solução

                   Funcionario                                Funcionario
                   Codigo                                     Codigo



                                                                                               29
Banco de Dados I


                   Nome                                     Nome
                   Endereco                                 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 não-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 são funcionalmente dependentes de parte da
chave. Podemos afirmar que uma estrutura está na 2FN, se ela estiver na 1FN e não possuir
campos que são funcionalmente dependentes de parte da chave. Exemplo:

Situação                         Solução

      Venda                          Vendas                    Mercadoria
      NumeroNF                       NumNF                     CodigoMercadoria
      CodigoMercadoria               CodigoMercadoria          DescricaoMercadoria
      DescricaoMercadoria            Quantidade                PrecoVenda
      QuantidadeVendida              Valor
      PreçoVenda
      TotalVenda
Como resultado desta etapa, houve um desdobramento do arquivo de Vendas em duas estruturas,
a saber:

Primeira estrutura (Arquivo de Vendas): Contém os elementos originais, sendo excluídos os dados
que são dependentes apenas do campo Código da Mercadoria.

Segunda estrutura (Arquivo de Mercadorias): Contém os elementos que são identificados apenas
pelo Código da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrição e o preço de
venda serão constantes.



Terceira Forma Normal (3FN)

Consistem em retirar das estruturas os campos que são funcionalmente dependentes de outros
campos que não são chaves. Podemos afirmar que uma estrutura está na 3FN, se ela estiver na
2FN e não possuir campos dependentes de outros campos não chaves. Exemplo:
Situação                          Solução




                                                                                            30
Banco de Dados I


      NotaFiscal                         NotaFiscal              Cliente
      NumeroNF                           NumeroNF                Código
      Serie                              Serie                   NomeCliente
      DataEmissao                        DataEmissao             CGCCliente
      CodigoCliente                      CodigoCliente
      NomeCliente                        TotalGeral
      CGCCliente
      TotalGeral
 Como resultado desta etapa, houve um desdobramento do arquivo de Notas Fiscais, por ser o
único que possuía campos que não eram dependentes da chave principal (Num. NF), uma vez que
independente da Nota Fiscal, o Nome e CGC do cliente são inalterados. Este procedimento
permite evitar inconsistência nos dados dos arquivos e economizar espaço 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 divergência entre eles.

Depois das alterações:

Primeira estrutura (Arquivo de Notas Fiscais): Contém os elementos originais, sendo excluídos os
dados que são dependentes apenas do campo Código do Cliente (informações referentes ao
cliente).

Segundo estrutura (Arquivo de Clientes): Contém os elementos que são identificados apenas pelo
Código do Cliente, ou seja, independente da Nota Fiscal, o Nome, Endereço e CGC dos clientes
serão constantes.

Após a normalização, as estruturas dos dados estão projetadas para eliminar as inconsistências e
redundâncias dos dados, eliminando desta forma qualquer problema de atualização e
operacionalização do sistema. A versão final dos dados poderá sofrer alguma alteração, para
atender as necessidades específicas do sistema, a critério do analista de desenvolvimento durante
o projeto físico do sistema.


Resumo da Unidade
O modelo relacional foi criado por Codd em 1970 e tem por finalidade representar os dados
como uma coleção de relações, onde cada relação é representada por uma tabela, ou falando de
uma forma mais direta, um arquivo. Porém, um arquivo é mais restrito que uma tabela. Toda tabela
pode ser considerada um arquivo, porém, nem todo arquivo pode ser considerado uma tabela.
 Quando uma relação é pensada como uma tabela de valores, cada linha nesta tabela representa
uma coleção de dados relacionados. Estes valores podem ser interpretados como fatos
descrevendo uma instância de uma entidade ou de um relacionamento. O nome da tabela e das
colunas desta tabela é utilizado para facilitar a interpretação dos valores armazenados em cada
linha da tabela. Todos os valores em uma coluna são necessariamente do mesmo tipo.
 Na terminologia do modelo relacional, cada tabela é chamada de relação; 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 domínio.



                                                                                              31
Banco de Dados I


IMPORTANTE
Antes de começar o conteúdo sobre SQL, fazer o exercício abaixo para servir de exemplo no
próximo assunto.


* Criar um banco de dados que represente uma empresa.
Este banco deve ser capaz de informar:
a) Dados sobre os funcionários;
b) Quantos funcionários trabalham em um determinado setor;
c) Qual é o salário médio dos funcionários.




                                                                                      32
Banco de Dados I



                       Unidade 5 -                   SQL (structured query
                                                                 language)


5.1 Introdução

 Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens
destinadas à sua manipulação. De todas, sem dúvida a que mais se popularizou foi a linguagem SQL.
 A linguagem SQL permite a criação e manipulação de dados do banco de dados sem que o programador
precise se preocupar com detalhes internos do banco, como a forma como os dados são 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 extensões próprias para a linguagem. Como exemplo, temos:
Transact/SQL, Sysbase, Microsoft, PL/SQL, etc.
 Para evitar problemas na manipulação do código, devido à quantidade plataformas, um comitê foi criado
para torná-la independente. Este comitê é o comitê da ANSI (american National Standards Institute).
 A linguagem SQL não é 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, através de uma ferramenta que permite a execução direta do código SQL. A forma Embutida
introduz o código SQL “dentro” das linhas do programa, que através de variáveis é tratado adequadamente.
 A linguagem SQL é subdividida em três grupos de comando de forma parecida com a estrutura de um
banco de dados:

 DDL (Data Definition Language):
Comandos responsáveis pela criação de objetos. Ex.: Create Table, Create
View, Create Index.


5.2 DML (Data Manipulation Language):
Comando responsável pela alteração de dados. Ex.: Select, Update, Delete.


5.3 DCL (Data Control Language):



                                                                                                     33
Banco de Dados I


Comandos responsáveis pela segurança do banco de dados. Ex.: Grant,
Revoke.


5.4 Tipos de Dados:
Na construção de uma tabela é necessário que os dados sejam definidos
quanto à forma de armazenamento. As “variações” do SQL criaram outros
tipos de dados, como por exemplo: armazenagem de imagens, filmes,
vetores, entre outros. O padrão SQL ANSI reconhece apenas os tipos Text e
Number.

A tabela abaixo demonstra estes dois tipos:


Texto
Varchar               Caracteres    de    tamanho Até 254 caracteres
                      variável
Char                  caracteres de tamanho fixo      Até 254 caracteres
Numérico
Dec                   Número decimal com casas Até 15 dígitos
                      definidas
Numeric               Número      com     precisão Até 22 dígitos
                      especificada
Int                   Inteiro sem parte decimal
Smallint               idêntico a Int com limite de
                      tamanho
Float                 Número de ponto flutuante
                      com base exponencial 10
Real                  Idêntico a Float exceto que
                      não é usado um argumento
                      para especificar o tamanho
Double                Idêntico a Real, só que com
                      precisão maior.
Data e Hora
Date                  Armazena datas
Time                  Armazena horas


5.5 Expressões e Operadores:



                                                                           34
Banco de Dados I


Os operadores têm por finalidade permitir uma flexibilidade maior na
manipulação dos dados de um banco. Estes seguem precedências de
utilização conjunta.




5.6 Tipos de Operadores

Multiplicação                            *
Divisão                                  /
Subtração                                -
Adição                                   +
Módulo                                   %
Aritméticos
Caracteres
Concatenação de campos            ||
Comparação
Igualdade                         =
Desigualdade                      <>
Maior que                         >
Menor que                         <
Maior ou Igual a                  >=
Menor ou Igual a                  <=
Não menor que                     !<
Não maior que                     !>
Não Igual a                       !=
Lógicos
NOT                Inverter o valor Booleano
AND                Verdadeiro se ambos forem verdadeiros
OR                 Verdadeiro se for verdadeiro um dos lados
BETWEEN            Verdadeiro se estiver dentro da faixa
LIKE               Verdadeiro se operador encontrar um padrão
IN                 Verdadeiro se algum item for verdadeiro
SOME               Verdadeiro se qualquer item for verdadeiro



                                                                       35
Banco de Dados I


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


Bitwise
&
!
^
Unários
+                           Positivo
-                           Bitwise NOT
~                           Negativo




                                                                  36
Banco de Dados I



                       Unidade 6 - Criação de Tabelas


6.1 Tutorial:
Na construção de uma tabela é necessário que os dados sejam definidos
quanto à forma de armazenamento. As “variações” do SQL criaram outros
tipos de dados, como por exemplo: armazenagem de imagens, filmes,
vetores, entre outros. O padrão 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 instrução SQL que irá criar as tabelas é
fundamental um planejamento e um reconhecimento da estrutura que se
propõe 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 máquinas estão acessando uma única base de dados, se todos
executarem o comando de criação de uma única tabela, apenas o primeiro
será bem sucedido, e os outros retornarão 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 máquina. Sempre
que for mencionada nos comandos a palavra "NOME_DE_SUA_MAQUINA",
substitua pelo nome da máquina que estiver utilizando.
Comando:
Create Table NOME_DE_SUA_MAQUINA (
Id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT
Nome VARCHAR (20)
)

Este comando permitiu a criação 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 conteúdo:
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 criação da tabela foi bem sucedida.




6.3 Parâmetros de Campos na Criação de Tabelas:


6.4 Valores Nulos
Pode-se definir se o campo receberá valores NULOS ou não. Quando os
valores não são NULOS tornam-se obrigatórios, o que significa que não
será possível inserir dados na tabela em que tais campos não tenham um
valor.


6.5 Chave Primária
Por definição é 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 Primária, ele não poderá receber um
valor NULO.
Por exemplo, muitas vezes criamos uma tabela com um campo de
identificação (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 exercícios com Select. É mais eficiente
para certas consultas que este campo seja a chave primária, mesmo porque
ele necessariamente será único.
Observe a sintaxe para criarmos a tabela novamente com o Id como sendo
obrigatório e chave primária. Não se esqueça de remover a tabela, se já
não 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 definição é o campo de outra tabela que recebe os valores do campo da
Chave Primária.
Esta ligação a um campo de Chave Primária possibilita que os dados
mantenham a integridade referencial. Esta integridade significa que os
dados de uma tabela só poderão ser inseridos de forma válida e
correspondente.
Execute o comando select * from pedidos e confira que a tabela contém
duas chaves estrangeiras. Veja se consegue descobrir quais são.




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-Vários entre a tabela Clientes e a tabela
Pedidos (um cliente pode fazer vários pedidos). Com a Integridade
Referencial, o banco de dados não permite que seja cadastrado um pedido
para um cliente que ainda não foi cadastrado. Em outras palavras, ao
cadastrar um pedido, o banco de dados verifica se o código do cliente que
foi digitado já existe na tabela Clientes. Se não existir, o cadastro do
pedido não será aceito. Com o uso da Integridade Referencial é possível
ter as seguintes garantias (ainda usando o exemplo entre as tabelas
Clientes e Pedidos):
Quando o Código de um cliente for alterado na Tabela Clientes, podemos
configurar para o banco de dados atualizar, automaticamente, todos os
Códigos do Cliente na Tabela Pedidos, de tal maneira que não fiquem
Registros Órfãos, isto é, registros de Pedidos com um Código de Cliente
para o qual não existe mais um correspondente na Tabela Clientes. Essa
ação é conhecida como "Propagar atualização dos campos relacionados".
Quando um Cliente for excluído 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 Excluído. Essa opção é
conhecida como "Propagar exclusão dos registros relacionados".




6.8 ON UPDATE:

NO ACTION (RESTRICT) - quando o campo chave primária está para ser
atualizado a atualização é abortada caso um registro em uma tabela referenciada tenha um valor
mais antigo. Este parâmetro é o default quando esta cláusula não recebe nenhum parâmetro.
Exemplo: ERRO Ao tentar usar "UPDATE clientes SET código = 5 WHERE código = 2.




                                                                                           39
Banco de Dados I


Ele vai tentar atualizar o código para 5, mas como em pedidos existem registros do cliente 2
haverá o erro.


CASCADE (Em Cascata) - Quando o campo da chave primária é atualizado,
registros na tabela referenciada são atualizados.
 Exemplo: Funciona: Ao tentar usar "UPDATE clientes SET código = 5 WHERE código =2. Ele vai
tentar atualizar o código para 5 e vai atualizar esta chave também na tabela pedidos.


SET NULL - Quando um registro na chave primária é atualizado, todos os campos dos registros
referenciados a este são setados para NULL.
Exemplo: UPDATE clientes SET código = 9 WHERE código = 5;
Na clientes o código vai para 5 e em pedidos, todos os campos cod_cliente com valor 5 serão
setados para NULL.


SET DEFAULT - Quando um registro na chave primária é atualizado, todos os campos nos
registros relacionados são setados para seu valor DEFAULT.
Exemplo: se o valor default do código de clientes é 999, então.
UPDATE clientes SET codigo = 10 WHERE codigo = 2. Após esta consulta o campo código com
valor 2 em clientes vai para 999 e também todos os campos cod_cliente em pedidos.




6.9 ON DELETE:

NO ACTION (RESTRICT) - Quando um campo de chave primária está para ser
deletado, a exclusão será abortada caso o valor de um registro na tabela referenciada seja mais
velho. Este parâmetro é o default quando esta cláusula não recebe nenhum parâmetro.
Exemplo: ERRO em DELETE FROM clientes WHERE código = 2. Não funcionará caso o
cod_cliente em pedidos contenha um valor mais antigo que código em clientes.


CASCADE - Quando um registro com a chave primária é excluído, todos os registros relacionados
com aquela chave são excluídos.


 SET NULL - Quando um registro com a chave primária é excluídos, os respectivos campos na
tabela relacionada são setados para NULL.


 SET DEFAULT - Quando um registro com a chave primária é excluído, os campos respectivos da
tabela relacionada são 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

Laboratório

Crie as seguintes Tabelas:




                                                                          41
Banco de Dados I



    Unidade 7 - Comandos para Alterar Tabelas


7.1 Alteração de Tabelas Criadas

 Após a criação das tabelas pode ser necessário incluir ou remover colunas. Sempre é possível remover a
tabela e criá-la novamente com a estrutura nova, mas com isto perderíamos todos os dados previamente
cadastrados. Por isto da importância 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 serão 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 também serão
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 não serão
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 não serão
perdidos.
Comando:
ALTER TABLE NOME_DE_SUA_MAQUNIA MODIFY SegundoNome varchar(30)


Laboratório

Modifique as tabelas do exercício anterior para que fiquem com o seguinte formato:




                                                                                             43
Banco de Dados I



                             Unidade 8 - Modificando Dados


8.1 Inserindo Dados
Além dos comandos de consulta ao banco de dados, uma aplicação geralmente irá também 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 especificações ele não conseguirá
fazer a inserção, pois os dados serão 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 Criação de Tabela
Create Table NOME_DE_SUA_MAQUINA(Id INT, Nome VARCHAR (20))

Comando de Inserção de Dados
Insert Into NOME_DE_SUA_MAQUINA (Id, Nome) values(1,'João')

Com esta instrução SQL obteremos o seguinte resultado:
Comando:
Select * from NOME_DE_SUA_MAQUINA;
Resultado:
           Id        Nome
           ------- -----------
           -
           1         João


8.2 Inserindo dados por meio de um SELECT
É possível fazer a inserção de dados através de uma instrução SQL com o comando Select, com
todas as suas variações.
Esta possibilidade é muito útil, pois dependendo do caso não será necessário digitar os dados
nesta tabela, uma vez que eles podem ser reproduzidos através de tabelas existentes no Banco de
Dados.
Exemplificando:
Crie sua tabela com um único campo 'nome' (não se esqueça 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 funcionários 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 funcionários.


8.3 Excluindo informações
Este comando remove linhas das tabelas. Podemos remover todo o conteúdo da tabela, ou definir
as linhas a serem removidas utilizando a cláusula WHERE. A sintaxe é mostrada abaixo:
Sintaxe:
DELETE FROM [nome da tabela] WHERE [Condição];
Comando:
Delete from NOME_DE_SUA_MAQUINA where Nome = „José‟

Lembre-se que ao excluir uma linha de registro relacionada à exclusão poderá ser bloqueada pelo
SQL devido as PRIMARY KEY e FOREIGN KEY existentes.
Para remover todos os itens de uma tabela basta não incluir a cláusula WHERE.


8.4 Atualizando dados de uma tabela
Através deste comando é possível atualizar um ou mais campos de uma tabela. A sintaxe é
mostrada abaixo:
Sintaxe:
UPDATE [nome da tabela] SET [nome da coluna] = [novo valor]
É possível utilizar as cláusulas FROM e WHERE para determinar a atualização vinda de outras
tabelas ou quais os critérios utilizados para a atualização.
Expressões poderão ser utilizadas para realizar as alterações 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 estão alterando a mesma
tabela, neste caso.
Esta alteração está permitindo ao usuário aumentar em 100% o preço de todos os produtos. Esta
alteração poderia ser feita utilizando-se uma restrição com a cláusula Where, para atualizar
apenas um produto.
Comando:
update produtos set preco=20 where id = 2
Este comando define como 20 o preço do produto 2, ou seja, da carne.

Laboratório

Baseado nas tabelas criadas e as alterações 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 matéria 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 Básica de Consultas SQL

Em bancos de dados relacionais, temos a informação armazenada em tabelas, como visto anteriormente.
Cada tabela contém um conjunto de informações armazenadas em linhas da tabela, cada linha representando
uma entrada, sendo que as colunas representam os parâmetros associados àquela informação.
Uma das consultas mais simples que podemos realizar em SQL, portanto, é a consulta que retorna os
parâmetros que desejamos de todas as entradas da tabela. Sua sintaxe é mostrada abaixo:
      SELECT     [nome              do        campo1],         [nome         do        campo2],         ...
FROM [nome da tabela]
O campo “nome da tabela” define a tabela que estamos consultando, enquanto os campos “nome do
campoN” representam os parâmetros, 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 conteúdo é mostrado abaixo. O instrutor poderá utilizar os mesmos
exemplos ou criar junto com os alunos tabelas próprias, 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                                  Telefone
   Transportadora Fulano                 (51) 2111-1666
   Transportes Pedrão                    (51) 0000-0000
   Expresso Marte                        (51) 1234-5678


9.3 Seleção de Todos os Registros com Colunas
  Específicas

Execute a consulta abaixo, ou siga as instruções 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 Pedrão
   Expresso Marte


Na mesma tabela, também podemos consultar mais parâmetros, bastando especificá-los separados por
vírgulas. Confira a consulta a seguir e o resultado correspondente:
        Select Nome, Telefone from transportadoras
Resultado:


   Nome                                Telefone
   -------------                       --------------
   Transportadora Fulano               (51) 3346-7300
   Transportes Pedrão                  (51) 0000-0000
   Expresso Marte                      (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, porém, 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 Pedrão
             Expresso Marte


9.5 Seleção de Registros com Exibição de Strings

É possível 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:


              Nome          ‗ocupa o cargo de‘ Cargo
              -------       --------------------   ---------------------
              José           ocupa o cargo de      Presidente
              Maurício       ocupa o cargo de      Gerente de Vendas
              Luís           ocupa o cargo de      Boy
              Lígia          ocupa o cargo de      Telefonista
Consulta com Execução de Cálculos:
Com o SQL podemos efetuar cálculos entre elementos lidos do banco de dados e retorná-los na consulta.
Para selecionar registros de uma tabela com a execução de cálculos matemáticos é necessário utilizar os
operadores '+' ,' -' , '/' , '*' e '^'.
Sintaxe:
      SELECT [nome do campo]*[nome do campo] as [nome da expressão] FROM [nome
da tabela];
Para demonstrarmos este recurso do SQL, utilizaremos uma nova tabela, com dados numéricos. Novamente,
o instrutor poderá utilizar estes mesmos dados ou criar exemplos próprios ao longo da aula:


             Nome                       Preço               Estoque
             Leite                      10                  500
             Carne                      20                  330
             Pão                        18.6                200
             Suco                       20                  330

Comando:


                                                                                                    49
Banco de Dados I


       select nome, preco*estoque as total from produtos
Resultado:


             Nome                         total
             ---------------------        -----------
             Leite                        5000
             Carne                        6600
             Pão                          37200
             Suco                         6600

Laboratório

Baseado nas tabelas criadas e as alterações realizadas nas tabelas das
unidades anteriores exiba os seguintes resultados:


O fornecedor ―x‖ tem a razão social ―y‖
A matéria prima ―x‖ tem o valor de ―y‖ e a quantidade ―z‖
A matéria prima ―x‖ tem um valor total de ―quantidade * valor‖
A quantidade ―x‖ no estoque não pode chegar a ―20% da quantidade‖
O tipo de matéria ―x‖ tem o valor de ―y‖ e com desconto fica em ―80% do valor‖
A matéria ―x‖ é descrita como ―y‖
―12% do valor‖ são considerados custo da matéria prima ―x‖
Acesse o site ―x‖ da empresa ―y‖
―1/3 do valor * quantidade‖ é destinado ao pagamento de imposto da matéria prima ―y‖
Após um aumento de 13% no estoque, a quantidade vai de ―x‖para ―y‖




                                                                                       50
Banco de Dados I




           Unidade 10 -                       Unidade 10: Funções com
                                                               strings


10.1 Funções com Strings

 Funções que tratam de strings permitem fazer uma série de manipulações de textos que são recuperadas das
tabelas do banco de dados.
Nesta unidade apresentamos algumas das funções mais comumente utilizadas em situações reais, para o
aluno se familiarizar com o conceito de funções de manipulação de strings. Na prática pode ser interessante
consultar as funções que o banco de dados que estiver sendo utilizado fornece, quando for necessário
manipular strings.


10.2 Sintaxe da Função de Concatenação de Strings

Para juntar duas ou mais strings existe uma função, chamada concat, mostrada a seguir:
Sintaxe:
        concat( string1, string2,...)
O exemplo a seguir mostra o uso desta função para juntar o nome e sobrenome dos funcionários em uma
única coluna. Observem o uso do espaço para garantir que o nome e sobrenome vão ter uma separação.
Exemplo:
        select concat(Nome, ' ', Sobrenome) from funcionarios



10.3 Controle de Maiúsculas e Minúsculas

Duas funções permitem transformar o retorno de uma consulta em letras maiúsculas e minúsculas.
Lower
Transforma as letras em minúsculas na resposta da instrução SQL. Como exemplo:
        Select Lower(Nome) from clientes;
Upper
Transforma as letras em maiúsculas na resposta da instrução 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 informação 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 começa a ser feita a separação
Valor 2 é o número de caracteres que serão 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 número de caracteres que serão 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 número de caracteres que serão 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 posição do texto procurado:
        LOCATE (Valor1, String1)
Onde,
Valor1 é o texto procurado.
String1 é a string de origem
Exemplo:
        Select LOCATE(„João‟, Nome) from clientes;

Laboratório

Baseado nas tabelas criadas e as alterações realizadas nas tabelas das
unidades anteriores exiba os seguintes resultados:


O fornecedor ―apenas o 1º nome‖ é do tipo ―final da razão social ―‖
A matéria prima ―em maiúscula‖ tem o valor de ―y‖ e a quantidade ―z‖
A matéria prima iniciadas em ―1º letra‖ tem um valor total de ―quantidade * valor‖
O tipo de matéria ―em minúsculo‖ tem o valor de ―y‖ e com desconto fica em ―80% do valor‖
A matéria ―duas letras iniciais‖ é descrita como ―em maiúsculo‖
―12% do valor‖ são considerados custo da matéria prima ―1 letra em maiúsculo,‖.
Acesse o site ―retirar o WWW‖ da empresa ―y‖
―1/3 do valor * quantidade‖ é destinado ao pagamento de imposto da matéria prima ―em
maiúscula‖
A matéria 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 -                    Critérios de Consulta – Cláusula
                                                         WHERE


 11.1 Cláusula Where

 Até o momento todas as consultas apresentadas retornaram todas as entradas das tabelas, restringindo
 unicamente os atributos que desejávamos 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 específica, por
 exemplo, quando desejarmos recuperar dados sobre um cliente específico. Nestes casos, nossa consulta SQL
 terá uma cláusula Where, conforme sintaxe mostrada abaixo:
      SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]
 [operador de comparação ou restrição] [critério de comparação ou
 restrição]
      UDPATE [nome da tabela] SET [nome do campo] = [novo valor] WHERE
 [nome do campo] [operador de comparação ou restrição] [critério de
 comparação ou restrição]
      DELETE FROM [nome da tabela] WHERE [nome do campo] [operador de
 comparação ou restrição] [critério de comparação ou restrição]
      Uma consulta pode ter uma quantidade infinita de condições ou cláusulas, sendo que as
 mesmas devem ser separadas por um operador lógico (AND ou OR). Veja o exemplo abaixo:
      SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]
 [operador de comparação ou restrição] [critério de comparação ou
 restrição] AND [nome do campo] [operador de comparação ou restrição]
 [critério de comparação ou restrição]
        Ou
      SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]
 [operador de comparação ou restrição] [critério de comparação ou
 restrição] OR [nome do campo] [operador de comparação ou restrição]
 [critério de comparação ou restrição]
        Os campos que são utilizados nos critérios das consultas, não são obrigatoriamente os
 mesmo utilizados como saída de informação (para consultas de seleção) ou como objetos de
 alteração. Podendo, por exemplo, exibir o nome de produtos que tenha um preço inferior a um
 determinado valor. Veja o exemplo, sendo ―nomeproduto‖ o campo a ser exibido e ―preco‖ o campo
 que recebe a condição de exibição:
        SELECT nomeproduto FROM produtos WHERE preco <= 2.5




                                                                                                      54
Banco de Dados I


      Observe, também, que é possível a utilização de um mesmo campo, mais de uma vez
como critério de uma consulta. Por exemplo, se desejar exibir os filmes lançados após o ano 2000
com a exceção do ano de 2005, o comando seria desenhado da seguinte forma.
       SELECT nomefilame FROM filmes WHERE ano >= 2000 AND ano <> 2005
        Estes critérios podem ser utilizados em qualquer tipo de consulta (seleção, exclusão ou
atualização). Principalmente em consultas que realizam alterações, recomenda-se atentar para o
uso quase que obrigatório da cláusula ―where‖, pois sua omissão resulta na execução da alteração
em todo o conjunto de dados contemplados na sentença.
       Vejamos a seguinte situação: para os funcionários com mais de 1 ano de tempo de trabalho
a empresa deseja conceder um aumento de 15% em seus salários. Se executarmos uma consulta
conforme exemplo abaixo, todos os funcionários receberam aumento independente do seu tempo
na empresa:
       UPDATE funcionarios SET salario = salario * 1.15
       Para que apenas os funcionários que possuem o critério estabelecido pela empresa para
receber o aumento, sejam efetivamente beneficiados, é necessário incluir uma cláusula. Observe a
sintaxe correta abaixo.
       UPDATE funcionarios SET salario = salario * 1.15 WHERE tempo >= 1
       Em consultas de deleção o cuidado deve ser ainda maior, pois uma execução de uma
sentença sem um critério de forma correta ou mesmo sem a existência de um, pode acarretar na
perda significativa de dados importantes para a instituição.
       Como regra geral recomenda-se iniciar a escrita de seu script SQL, para consultas de
alterações, pelos critérios que as mesmas devem considerar, reduzindo assim, a chance de
cometer qualquer tipo de equivoco, com consequências mais graves.


11.2 Consultas Simples com Cláusula Where

Vamos definir uma consulta bastante simples, restringindo a lista de clientes apenas aqueles cujo país é o
Brasil. Utilizaremos a tabela clientes, mostrada a seguir:
Tabela Clientes
             Nome                               País
             Empresa W                          Brasil
             Empresa A                          Brasil
             Empresa B                          Brasil
             Empresa C                          Argentina
             Empresa X                          Brasil

Comando:
       SELECT NOME FROM CLIENTES WHERE PAIS='BRASIL'
Resultado:



                                                                                                       55
Banco de Dados I


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


             Empresa A
             Empresa B
             Empresa X


O sinal de igualdade (=) foi utilizado porque o usuário sabia exatamente o que estava procurando. Verifique
os operadores de comparação que estão no inicio da apostila.
Cabe também, ressaltar que devemos sempre atentar para o tipo de dado armazenado nos campos que serão
utilizados nos critérios de consulta. Pois esta observação nos mostra que tipos de critérios podem ser
utilizados (para datas, por exemplo) e qual a forma correta de montagem do critério ou seleção.
No exemplo da consulta acima, podemos perceber que o critério 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 numéricos não há a necessidade, além de não ser recomendado, do uso de aspas
simples. Entretendo, se estiver utilizando um banco de dados que você não tenha estruturado, utilize
comandos (veremos nas próximas unidades) que exibam a estrutura da tabela, pois podemos encontrar
campos com valores numéricos que tenham sido tipados como texto, o que pode atrapalhar a percepção do
resultado final.


11.3 Selecionando Dados Não Repetidos

Algumas vezes não queremos recuperar todas as entradas de determinada tabela, mas apenas aquelas não
repetidas. Podemos, por exemplo, querer listar todas as cidades em que a empresa tem clientes, ou todas as
faixas de salário dos funcionários, e nestes casos não faz sentido repetir inúmeras vezes a mesma cidade ou
faixa salarial apenas por ter mais de um dado com aquela informação.
Existe um comando para resolver esta questão, chamado DISTINCT, cuja sintaxe é mostrada abaixo:
       SELECT DISTINCT [nome do campo] FROM [nome da tabela];


Executando a consulta abaixo, veremos que retornará os países em que existem clientes armazenados no
banco de dados:

       select distinct pais from clientes


Resultado:


             País
             Argentina


                                                                                                         56
Banco de Dados I


             Brasil


Case o comando seja executado novamente, porém sem a cláusula DISTINCT e observe a teremos a
repetição dos países.
O comando DISTINCT realiza um agrupamento dos dados exibidos, portanto devemos sempre
estar atentos aos campos que inserimos antes da expressão FROM, pois se os mesmos forem
únicos, pode não ocorrer o agrupamento de forma correta.
No exemplo aqui citado os países, aparecerão apenas uma vez, pois somente a coluna ―país‖ foi
exibida, se fosse inserido o campo ―nome‖, por exemplo, haveria a duplicação dos mesmos.
Vejamos o caso na prática

        select distinct nome, pais from clientes


Resultado:


             Nome                          País
                                           Brasil
             Empresa A                     Brasil
             Empresa B                     Brasil
             Empresa C                     Argentina
             Empresa X                     Brasil


11.4 Selecionando alguns dados

Em determinadas situações desejamos apenas obter alguns registos de uma consulta, pois
apenas uma amostra de dados pode ser suficiente para chegarmos ao resultado esperado da
sentença.
Esta sintaxe para construção de um limite dos resultados leva em consideração o banco de dados
no qual as informações estão 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 comparação ou restrição]
[critério de comparação ou restrição]
MySQL




                                                                                           57
Banco de Dados I


    SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]
    [operador de comparação ou restrição] [critério de comparação ou
    restrição] LIMIT [valor]
    Se desejarmos, por exemplo, exibir apenas 5 clientes que sejam do país ‗Brasil‘, devemos
    construir a consulta no SQL SERVER.


    SELECT TOP 5 nome FROM clientes WHERE pais='brasil'
    A utilização da cláusula de limite de registros é muito utilizada em testes de verificação do
    conteúdo de uma tabela. Também é amplamente aplicada em subconsultas (tema do curso
    avançado).




    Laboratório.
    Para a realização dos exercícios abaixo crie a seguinte tabela e insira os dados listados abaixo
    dela. Após execute uma consulta que exiba cada




Cod_Celula         Modelo     Marca       Camera      MP3          Bateria   Valor      Lancamento
r
1                  Star       Sansung     Sim         Sim          3.2       600.00     2009-04-12
2                  N97        Nokia       Sim         Sim          4.1       700.00     2010-01-20
3                  IPhone     Apple       Sim         Sim          3.4       1.100      2007-12-30
4                  Corby      Sansung     Sim         Sim          4.2       800.00     2008-06-25
5                  N95        Nokia       Sim         Sim          2.7       950.00     2005-05-05
6                  Jet        Sansung     Sim         Sim          3.3       650.00     2008-10-09
7                  2160       Nokia       Não         Não          8.7       50.00      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
lançados há pelo menos de 2 anos.
Liste o modelo, marca e bateria do celular código 4.
Liste os celulares lançados 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 câmera
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 informação MP3 para NÃO em celulares com bateria inferior a 3 horas e valor superior
a R$ R$ 500,00
Mude o nome do celular de código 7 para ―MP15‖
Atualize o valor dos celulares em 2% para celulares com câmera e valor inferior a R$ 800,00
Atualize 3 celulares para câmera NÃO
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 -                       Predicados


12.1 Predicados LIKE e NOT LIKE:

Na unidade anterior, vimos como selecionar apenas algumas entradas de uma tabela, com o uso da cláusula
Where. Entretanto, apenas com os operadores de igualdade, que foi mostrado, e outros operadores
aritméticos, como “<”, “>”, etc., não 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 não temos todo o nome, mas
apenas um dos sobrenomes. Utilizar o operador „=‟ não irá nos atender neste caso.
O predicado “LIKE” serve para este fim. Funciona como um tipo de pesquisador de sequências podendo ser
auxiliado por um % que significa qualquer caractere. Pode ser precedido por um NOT que expressa à
negação. 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 didáticos,
sendo possível que o instrutor opte por construir exemplos mais complexos junto com a turma.
Tabela clientes:
              Nome
              João da Silva Borges
              Pedro Álvaro
              João Augusto
Comando:
       select nome from clientes where nome = 'João'
Resultado:
             nome
             -------------




 A resposta para esta instrução será uma tabela vazia. Apesar de existir um 'João' na tabela, o critério de
igualdade exige o nome completo. A consulta apenas retornaria o cliente se fosse colocado o nome completo:
„João da Silva'
Assim, utilizar o sinal de igualdade nos retorna o resultado desejado somente se conhecermos o nome
completo da pessoa. O comparativo lógico LIKE, permite selecionar por semelhança:
Comando:
       select nome from clientes where nome like 'João%'



                                                                                                        60
Banco de Dados I


Resultado:
             nome
             ----------------
             João da Silva Borges
             João Augusto


Da mesma forma como podemos pesquisar por informações que comecem por um determinado conjunto de
caracteres, também podemos definir que certas letras estejam no final ou em qualquer posição 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
             ----------------
             João 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 incluído.
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                   Estoque
             ---------------        -------------
             Leite                  1000


12.3 Predicados IN e NOT IN:

 O predicado IN compara um valor com uma lista ou coleção de valores. Lembre-se que os critérios 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                          País
           -------------------           ---------------
                                         Brasil
           Empresa A                     Brasil
           Empresa B                     Brasil
           Empresa C                     Argentina
           Empresa X                     Brasil




12.4 Predicado IS NULL e IS NOT NULL

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


 Este predicado pode ser útil para determinadas situações em que algum campo esteja null porque não foi
processado ainda, por exemplo, numa compra que não foi finalizada, ou em um pedido que não foi entregue.
Observe o exemplo abaixo, que é um exemplo típico de uma consulta utilizando este predicado para
identificar pedidos ainda não 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) também pode ser utilizado na exibição de
algum valor caso um campo esteja nulo.

       Comando:

       select ISNULL(taxa, „‟) Cobrança from pedidos




                                                                                                     62
Banco de Dados I


12.5 Seleção com Operadores Lógicos

Para selecionar registros de uma tabela com a determinação de critérios o usuário deverá utilizar a cláusula
WHERE combinada com os operadores lógicos AND, OR e NOT. A sintaxe é mostrada abaixo:
Sintaxe:
      SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]
[operador de comparação ou restrição] [critério de comparação ou restrição] AND
[nome do campo] [operador de comparação ou restrição] [critério de comparação ou
restrição] OR [nome do campo] [operador de comparação ou restrição] [critério de
comparação ou restrição]


Como exemplo, vamos selecionar todos os produtos cujo estoque seja maior que 500 e tenham um preço
menor que 10.
Comando:
       select Nome, Estoque, Preco from produtos where estoque > 500 and preco <
10
Neste exemplo, a cláusula AND obrigou que ambas as condições fossem atendidas. Podemos também definir
que o item seja selecionado caso qualquer das condições seja atendida, como mostra o exemplo abaixo em
que selecionamos os itens que tenham. preço menor que 10 ou um estoque maior que 1000.
Comando:
       select Nome, Estoque, preco from produtos where preco < 10 or estoque >
1000


Laboratório.
Para a realização dos exercícios abaixo utilize a tabela criada no exercício anterior


Os dados de todos os celulares com mp3 não 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 não sejam
da ―Nokia‖.
Liste o modelo, marca e bateria do celular código 4, 6, 2.
Liste os celulares lançados 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 câmera com valor nulo
Liste as marcas de celular existentes em letra maiúscula 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 duração.



                                                                                                        63
Banco de Dados I




       Unidade 13 -                          Funções de Agrupamento e
                                                            Ordenação


13.1 Obtendo Informações Estatísticas

Muitas vezes não queremos recuperar os dados armazenados no banco de dados, mas sim informações
estatísticas sobre os mesmos, como totais e médias de valores. Para tanto utilizamos as chamadas funções de
agrupamento.
A sintaxe das funções de agrupamento é mostrada abaixo:
Sintaxe:
       SELECT {ALL} {DISTINCT} Função([nome do campo]) FROM [nome da tabela]


As funções de agrupamento utilizadas no SQL são: COUNT( ), AVG( ), MAX( ), MIN( ) e SUM( ).
Abaixo mostramos um exemplo simples, mas bastante completo do uso de todas estas funções para processar
cálculos em cima de uma tabela de produtos, e um exemplo de retorno.
Comando:
      select SUM(Estoque) as 'Total no Estoque',   MAX(Preco) as 'Preço mais
caro', MIN(Preco) as 'Preço mais barato', AVG(Preco) as 'Preço médio',
COUNT(Preco) as 'Total de Registros' from produtos
Exemplo de Resultado:


             Total no Preço mais Preço                mais Preço médio     Total             de
             Estoque caro        barato                                    Registros
             ---------    ---------      ----------        ---------        --------------
             3600         31             5                 16.0000          4


As funções agregadas não podem ser utilizadas dentro de uma cláusula WHERE, porem é possível utilizar
esta cláusula para restringir o número de linhas que serão consideradas no cálculo da resposta, como mostra o
exemplo abaixo:
Comando:
       SELECT AVG(preco) from produtos where preco > 10
Nesta consulta acima o que estamos obtendo é a média entre todos os produtos cujo preço é maior que 10.




                                                                                                          64
Banco de Dados I


13.2 Agrupamento Utilizando GROUP BY:

A cláusula GROUP BY agrupa os registros de acordo com uma condição 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 países para obtermos uma listagem de
todos os países de clientes.


Comando:
       select Pais from clientes group by pais
Resultado:
             Pais
             ---------------
             Argentina
             Brasil


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


             Total             País
             ---------         ---------------
             1                 Argentina
             4                 Brasil


Como agrupamos por países, conseguimos utilizar o comando de COUNT e descobrir quantas vezes cada
um dos países 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 comparação ou restrição] [critério de comparação ou restrição]
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(*),             pais   from   clientes    where    CargoContato      =   'Gerente       de
Vendas' GROUP BY pais



13.4 Seleção de registros com Agrupamento pela
  Cláusula GROUP BY e HAVING:

Enquanto a cláusula WHERE filtra os registros antes de agrupá-los, diminuindo assim a quantidade de
registros gerados pela cláusula GROUP BY, a cláusula HAVING faz um filtro também, porém. permitindo a
utilização de uma função agregada.
A sintaxe é mostrada abaixo:
      SELECT [nome do campo] FROM [nome da tabela] GROUP BY [nome do campo]
HAVING Função Agregada([nome do campo])
Por exemplo, se quisermos ver o total de clientes de países cujo total for maior que 3, usaríamos o comando
abaixo:
       select count(*),pais from clientes group by pais having count(*) >= 3
Resultado:
             Count(*)     País
             -------      -------------
             4            Brasil


Como só existe uma referência a "Argentina", e portanto o total é menor que 3, não aparece no resultado.
Para entender melhor a diferença entre WHERE, GROUP BY e HAVING, é preciso compreender a
definição de cada uma, mostrada abaixo:
a cláusula WHERE é utilizada para filtrar as linhas que resultam da consulta da tabela especificada pela
cláusula FROM.
A cláusula GROUP BY é utilizada para agrupar as linhas filtradas por WHERE.
A cláusula HAVING é usada para filtrar as linhas do grupo criado por GROUP BY.


13.5 Ordenação das Consultas

Até agora não nos preocupamos com a ordem em que são mostrados os resultados de uma consulta, mas em
situações reais normalmente vamos querer controlar esta ordenação. A cláusula 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]                        ORDER BY[nome do campo]
{ASC}{DESC}




                                                                                                           66
Banco de Dados I


Se não utilizarmos a cláusula ORDER BY, o resultado da instrução será baseado no índice da tabela
analisada. Ao utilizarmos a cláusula estamos definindo a ordem, como no caso abaixo em que os produtos são
mostrados em ordem alfabética:

Comando:
       select Nome from produtos order by Nome
Não é necessário utilizar o complemento ASC para as ordenações crescentes, porém para as ordenações
decrescentes deve-se utilizar DESC:


Laboratório.
Para a realização dos exercícios abaixo utilize a tabela criada no exercício anterior


Some os valores dos celulares.
Calcule o tempo médio de duração da bateria
Encontre o maior e o menor valor dos celulares.
Conte o número de celulares por Marca.
Encontre e média de valores por Marca.
Calcule a média 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 maiúscula e sem valores nulos
Liste todos os celulares por em ordem decrescente de lançamento
Calcule a média de duração dos celulares com câmera




                                                                                                       67
Banco de Dados I




Unidade 14 -                       Consultas em Múltiplas Tabelas


 14.1 Consultas em Múltiplas Tabelas

 Conforme visto nos capítulos anteriores, de teoria de modelagem de dados, as tabelas do banco de dados têm
 relações entre si, e é essencial dominar os recursos da linguagem SQL que nos permitem criar consultas com
 base nestas relações.
  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
 instrução SQL.
 Nem todos os bancos de dados utilizam a forma padrão de ANSI, existindo algumas variações na sintaxe do
 comando.


 14.2 Join

 Podemos definir Join como a junção de duas tabelas.
 O resultado da união de duas tabelas será a multiplicação das linhas da primeira pela segunda tabela, ou seja,
 para cada linha da primeira tabela, todas as linhas da segunda serão repetidas.
 Na prática esta situação não é muito comum, mas serve como base para entendermos o funcionamento de
 outros tipos de Join.

 Sintaxe:
       Select [nome da tabela1].[nome do campo],                        [nome    da   tabela2].[nome        do
 campo] from [nome da tabela1], [nome da tabela2];


 Observe a operação de JOIN entre duas tabelas pedido e clientes, sem a utilização de nenhuma restrição na
 união. 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          1

              Empresa A          2

              Empresa A          3

              Empresa B          1

              Empresa B          2

              Empresa B          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 faça sentido, geralmente utilizamos a cláusula WHERE.


14.3 Equijoin – Join de Igualdade

Também conhecido como join simples ou inner join, o Equijoin fará a união entre duas ou mais tabelas
através de uma cláusula WHERE, que ligará a chave primária 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 código da categoria, e esta informação - 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           Categoria
             ---------------        ------------------
             Leite                  Bebidas
             Suco                   Bebidas
             Carne                  Carnes
             Pão                    Outros Alimentos


14.4 Exercícios Sugeridos

Anteriormente foi apresentada a tabela clientes, com atributos Nome e País. Transforme esta informação em
duas tabelas, Novo_Clientes e Países, definindo os atributos que fazem a relação entre as tabelas, e defina
uma consulta SQL que retorne o mesmo resultado da tabela Clientes original, porém consultando as duas
novas tabelas
Tabela Clientes
             Nome                                  País
                                                   Brasil
             Empresa A                             Brasil
             Empresa B                             Brasil
             Empresa C                             Argentina
             Empresa X                             Brasil


14.5 Equijoins e Operadores Lógicos:

É possível combinar em uma cláusula WHERE com equijoins os operadores lógicos: AND, OR e NOT. Isto
será necessárias em boa parte das consultas SQL feitas em um sistema, pois geralmente queremos definir
condições exatas para a recuperação 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] [Comparação] [valor ou „texto‟] OR    [nome da tabelaN].[nome do campo]
[Comparação] [valor ou „texto‟] NOT [nome da tabelaN].[nome do campo]
[Comparação] [valor ou „texto‟]


Como exemplo, vamos criar uma consulta em tabelas „produtos‟ e „categorias‟, selecionando produtos cujo
preço é 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 nível. 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 situações reais, muitas vezes serão criadas consultas entre diversas tabelas, geralmente com a ligação
entre cada tabela e as demais sendo feita através de uma igualdade que ligue a chave primária de uma tabela
com a chave estrangeira da outra.


14.7 Redefinição do Nome de Tabelas

Para „facilitar‟ a vida do administrador da base de dados, não é necessário que este digite o nome das tabelas
em sua totalidade. É possível criar um alias para cada tabela, diminuindo, assim, a quantidade de caracteres
digitados. O exemplo abaixo ilustra esta técnica.
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 instrução SQL que utiliza Equijoin, exibe os resultados que são comuns entre os campos
das duas tabelas. Neste método, ficam de fora as linhas que não encontram relação entre as duas tabelas.
Porém esta informação de entradas que não aparecem num InnerJoin também pode ser útil. Por exemplo, para
saber se existe algum Cliente que nunca tenha feito um pedido.
Left e Right Join
Para que a questão acima seja respondida, é necessário entender que existe um lado da relação 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 adição entre parênteses). 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 relação] = [nome da tabela2].[nome do campo de
relação]
Apenas a terceira sintaxe é aceita pelo MySQL, por exemplo.
 Iremos inicialmente utilizar um comando LEFT JOIN para identificar clientes que não tem nenhum pedido.
Para tanto teremos que restringir o retorno àquelas linhas em que não existe uma ligação com a tabela
'pedidos' (portanto as entradas da tabela 'pedidos' retornam null):
      select clientes.nome from clientes left join pedidos on                           clientes.Id      =
IdCliente where pedidos.id is null
Observação: o comando RIGHT JOIN não é implementado em MySQL, mas invertendo-se as tabelas pode-
se obter efeito equivalente.


14.9 Outros Tipos de Joins - Self Joins

Self Joins são relações estabelecidas entre uma mesma tabela, por intermédio de dois de seus campos. São
utilizadas normalmente quando a tabela referencia a si mesmo para definir uma hierarquia, por exemplo entre
funcionários. A única diferença 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 própria tabela, o campo 'chefe',
que contém o Id do chefe de cada funcionário. Através de um self join podemos listar todos os funcionários
que possuem um chefe, indicando quem é o mesmo:
      select F2.Nome as 'funcionário', 'é subordinado a', F1.Nome as 'chefe'
from funcionarios as F1, funcionarios as F2 where F2.Chefe = F1.Id




                                                                                                        72
Banco de Dados I




Laboratório
Crie a seguinte estrutura de tabelas, para executar os exercícios




Liste o nome e a quantidade de atendimentos por cliente
Liste o nome e a quantidade de atendimentos por funcionário
Conte quantos produtos estão em cada pedido
Calcule a média de valor dos pedidos de cada cliente
Calcule o valor total de cada pedido
Mostre a quantidade, total e média de pedidos por data
Liste a média 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 não tem pedido
Liste os produtos por cliente que não foram solicitados por eles


                                                                    73
Banco de Dados I


Liste quantos pedidos cada vendedor faz por data




                                                   74
Banco de Dados I




                Unidade 15 -                        Trabalhando com datas


15.1 Datas em MySQL

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 Informações Específicas de Data

Diversas funções permitem recuperar informações específicas com base em uma data, como o dia, mês 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 mês 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 cálculo ou para inserir no banco de dados, o formato
é um texto (separado por aspas) na forma "ano-mês-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 -                     Exercícios Extras

1. Uma loja de roupas deseja criar um cadastro com suas peças. Cada peça possui um
código que a identifica, uma descrição, um preço-unitário e uma quantidade em estoque.
Deseja também manter um cadastro de seus clientes com nome, telefone (o cliente pode ter
mais de um, ou nenhum), e as peças que ele já comprou. A data em que o cliente comprou
a peça é guardada.


2. Uma empresa bancária mantém um cadastro com os dados dos seus clientes( identidade,
nome,
endereço{ rua, CEP e bairro} e telefone { o cliente pode ter mais de um}) e de suas contas
(número 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 mantém também um cadastro com as suas
agências (código e nome), em que cada agência pode ter mais de uma conta.


3. desenhe o Modelo E-R que descreva a situação da Empresa Acme Problemas Ltda., que
apresenta a seguinte estrutura:
a) cada empregado é representado a partir das seguintes informações básicas: código-empresa,
nome, endereço;
b) cada departamento é representado por meio de: nome, código departamento;
c) cada empregado chefia um ou mais departamentos;
d) cada item vendido é representado pelo seu nome, preço, fornecedor, número do modelo (dado
pelo fornecedor) e número interno do item ( dado pelo responsável pelo estoque);
e) cada fornecedor é descrito pelo seu nome, endereço, itens fornecidos ao estoque e preço;
f) os clientes cadastrados têm os seguintes dados: nome, endereço e telefone;
g) os representantes da empresa junto aos clientes são empregados;


 4. Um banco de dados, utilizado por uma faculdade, usa um sistema de cadastro de inscrição de
disciplinas que contém as informações aluno e inscrição. As seguintes informações devem estar
incluídas.
Aluno: código de aluno, nome do aluno, ano da admissão e telefone de contato;
Inscrição: código do aluno, código da disciplina, nome da disciplina, código do curso, nome do
curso e data da matrícula.
Projete o banco de dados para esses dados. Faça quaisquer suposições razoáveis sobre as
dependências 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 deverão compor o sistema , com base nesta lista normalize a estrutura de dados de
acordo com as formas normais.
Lista de informações que deverão compor o sistema cadastro de clientes:


Nome
Nome do Pai
Nome da Mãe
Endereço
Telefone1
Telefone2
Número do Fax
Número do Celular
Telefone do trabalho
Data de Nascimento
Naturalidade
Nacionalidade
Endereço de correspondência
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 Cônjuge
Número do CPF
Número da carteira de identidade


6. De acordo com as regras , normalize as estruturas abaixo.
• Relação de Programadores:
– Numero da Matrícula
– Nome do Programador



                                                                                             78
Banco de Dados I


– Setor
– Nível ( 1,2,3)
– Descrição do Nível ( 1 - Júnior, 2 - Pleno, 3 - Sênior)


• Programas
– Codigo do Programa
– Nome do Programa
– Tempo Estimado
– Nível de Dificuldade ( 1, 2 ou 3 )
– Descrição da Dificuldade ( Fácil, Médio, Difícil)


Regras do negócio:
- Um programa pode ser feito por mais de um Programador;
- Um programador pode fazer um ou mais programas;
- O Nível de dificuldade do programa depende do tempo estimado para a elaboração do mesmo;




7. Você deve representar usando o modelo lógico a situação descrita a seguir:
 O Departamento de Vendas da Indústria Beleza Ltda., após estudos de mercado, verificou que
para atingir seus objetivos seria necessário adquirir frota de veículos próprios para motorizar seus
vendedores. O mercado consumidor foi dividido em regiões de venda; foram estabelecidos
percursos de entrega abrangendo pontos estratégicos dessas regiões e vendedores foram
designados para cobrir estes percursos. Um sistema deve ser construído para administração da
nova sistemática de vendas adotada pela empresa. Após entrevistas com o gerente da área,
foram obtidas as seguintes informações:
cada região é identificada por um código;
uma região é composta de vários pontos estratégicos;
as regiões não têm pontos estratégicos em comum;
o vendedor tem a responsabilidade de cobrir uma região;
uma região pode ser coberta por vários vendedores;
a cada dia, um veículo fica sob-responsabilidade de um vendedor;
um vendedor pode vender quaisquer itens ativos da tabela de produtos;
o vendedor é responsável pela identificação de cada cliente consumidor na nota fiscal;
a nota fiscal contendo identificação do vendedor, itens e quantidades vendidas é
exigida para comprovação da venda.




                                                                                                 79
Banco de Dados I




                   Unidade 17 -                   Projeto Final - Revisão

Construa um Diagrama Entidade-Relacionamento (DER) para modelar cada um dos sistemas
abaixo, mas, como as descrições são informais, elas se prestam a diferentes interpretações. Por
este motivo, não existe somente uma solução correta, mas o diagrama deve refletir de forma
coerente a descrição.
 No final, gere o script SQL e crie o banco de dados, cadastrando no mínimo 5 itens para cada
tabela (faça todas as consultas necessárias e possíveis para verificar a funcionalidade do banco).




1) Sistema Locadora
Uma pequena locadora de vídeos possui ao redor de 2000 fitas de vídeo, cujo empréstimo deve
ser controlado.
 Cada fita possui um número. Para cada filme, é necessário saber seu título e sua categoria
(comédia, drama, aventura,... ). Cada filme recebe um identificador próprio. Cada fita é controlada
que filme ela contém. Para cada filme há pelo menos uma fita, e cada fita contém 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, é
necessário manter a informação 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 é necessário saber seu prenome e seu sobrenome, seu telefone e seu endereço.
Além disso, cada cliente recebe um número de associado.
 Finalmente desejamos saber que fitas cada cliente têm emprestadas. Um cliente pode ter várias
fitas em um instante do tempo. Não são mantidos registros históricos de aluguéis.




                                                                                                80
Banco de Dados I



     Unidade 18 -                        Principais Bancos de Dados

O dinamismo da área de tecnologia da informação nos proporciona contatos cada vez mais frequentes com
uma infinidade de modelos de banco de dados. A cada dia vemos a notícia do lançamento de uma nova
plataforma de gerenciamento de dados.
No entanto alguns bancos de dados obtiveram maior notoriedade no mundo da informática. Dentre estes
bancos cabe destacar o Microsoft Access, que foi um dos precursores dos SGBDs.
Sua inovação em termos de capacidade de armazenamento e dinamismo foi o principal responsável pelo seu
enorme sucesso.
 entretanto com a popularização da Internet, e por sua vez, da distribuição das informações em redes de
grande alcance, sua limitações foram fincando evidentes. Abriu-se então espaço 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 força na internet, sendo
responsáveis por um grande mercado de sites pessoais e de pequeno-médias corporações.
Quando nos referimos a grandes corporações, que dependem criticamente do controle de seus dados, nos
deparamos com a necessidade de bancos de dados que trabalhem, com recursos mais avançados, tais como
replicação, serviços de integração, bussines inteligence, etc.
 Neste contexto encontramos como grandes expoentes o SQL SERVER e o ORACLE além de outros com
menor expressão. O SQL SERVER tem como grande diferencial ser da Microsoft o que faz com que sua
integração com linguagens .Net ocorra de forma natural.
Nas próximas 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 popularização do mesmo, o Microsoft Accces. Depois trataremos das
principais características e formas de manipulação do MYSQL.
Finalizando nosso trabalho falaremos do SQL SERVER e seus principais atributos.




                                                                                                       81
Banco de Dados I




                               Unidade 19 -                   Microsoft Access




19.1 Introdução

O Access é um poderoso software de gerenciamento de banco de dados, que possibilita ao
usuário um gerenciamento preciso de dados e a possibilidade de geração de consultas,
formulários, relatórios, etiquetas e a criação de aplicativos personalizados, bem como a integração
com outros aplicativos.



19.2 ARQUIVOS DE BANCO DE DADOS DO ACCESS
Com o Microsoft Access, você pode gerenciar todas as informações 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.
Formulários para exibir, adicionar e atualizar dados em tabelas.
Relatórios para analisar ou imprimir dados em um layout específico.
Páginas 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 informação rastreada. Para reunir
os dados de várias tabelas em uma consulta, formulário, relatório ou página 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 condições especificadas, incluindo dados
                   de várias tabelas, crie uma consulta. Uma consulta
                   também pode atualizar ou excluir diversos registros
                   simultaneamente, além de efetuar cálculos predefinidos
                   ou personalizados em seus dados.



FORMULÁRIOS

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




RELATÓRIOS




                                                                            84
Banco de Dados I



                   Para    analisar    os   dados      ou    imprimi-los     de
                   determinada       maneira,   crie    um     relatório.   Por
                   exemplo, você poderia imprimir um relatório que
                   agrupasse dados e calculasse totais, e outro
                   relatório   com     outros   dados       formatados      para
                   impressão de etiquetas de endereçamento.




                                                                                   85
Banco de Dados I


PÁGINA DE ACESSO A DADOS

                                 Para disponibilizar dados na Internet ou em
                                 uma    intranet   para   relatórios   interativos,
                                 entrada ou análise de dados, use uma página
                                 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 página.




19.3 INICIANDO O ACCESS
Para acessar o Access basta utilizar a barra de ferramentas do Office ou através de
IniciarProgramas(Todos os programas) ( Microsoft Office) Microsoft Access.
É recomendável criar um atalho na área de trabalho para tornar o acesso ao Access mais rápido.
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 versão de seu Microsoft Office, e que
poderá variar conforme a configuração que o usuário tenha definido inicialmente.
Comparando com outros aplicativos do Office, o Access não abre automaticamente um novo
arquivo como o Word e o Excel, desta forma o usuário deverá optar por uma das opções no Painel
de Tarefa..
O Access grava seus arquivos com a extensão MDB e além desta extensão existe um arquivo
com extensão 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
                                   Barra de menu                   título




                                                        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 botões, menus ou uma combinação 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, é possível 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 métodos para criação de um banco de dados do Access. Você
pode usar um Assistente de banco de dados para criar em uma operação as tabelas, formulários
e relatórios necessários para o tipo de banco de dados que você escolheu - esse é o modo mais
fácil para iniciar a criação do banco de dados. Ou você pode criar um banco de dados em branco e
adicionar as tabelas, formulários, relatórios e outros objetos posteriormente - esse é o método
mais flexível, mas exige que você defina cada elemento de banco de dados separadamente. Em
qualquer dos métodos, você pode modificar e estender o banco de dados a qualquer momento
após ele ter sido criado.


Criar um banco de dados utilizando um Assistente de banco de dados:

Clique em Novo         na barra de ferramentas.
No painel de tarefas Novo arquivo, em Novo com                                      base     em
modelo, clique em Modelos gerais.
Na guia Bancos de dados, clique no ícone do tipo                                    de     banco
de dados que você deseja criar e, em seguida, clique                                em OK.
Na caixa de diálogo Novo arquivo de banco de                                             dados,
especifique um nome e local para o banco de dados                                   e,       em
seguida, clique em Criar.
Siga as instruções do Assistente de banco de dados.


Observação: Não é possível usar o Assistente de banco de dados para adicionar novas
tabelas, formulários ou relatórios a um banco de dados existente.


Em versões mais atuais a exibição do assistente para a criação de um novo banco de dados,
baseia-se na possibilidade de baixar novos modelos de bancos de dados.
Segue uma imagem que retrata esta opção




                                                                                             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 diálogo 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(Botão do Microsoft Office), clique em Abrir      .
Clique em um atalho no lado esquerdo da caixa de diálogo Abrir ou, na caixa Examinar, clique na
unidade de disco ou pasta que contém o banco de dados do Microsoft Access que você deseja.
Na lista de pastas, clique duas vezes nas pastas até abrir aquela que contém o banco de dados.
Se você não conseguir localizar o banco de dados que deseja abrir, clique em Ferramentas na

barra de ferramentas da caixa de diálogo Abrir e, em seguida, clique em Pesquisar     . Na caixa
de diálogo Pesquisar, digite critérios de pesquisa adicionais.



                                                                                             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 multiusuário, de modo
que você e outros usuários 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 não
editá-lo, clique na seta próxima ao botão Abrir e, em seguida, clique em Abrir como somente
leitura.
Para abrir o banco de dados com acesso exclusivo, clique na seta próxima ao botão Abrir e, em
seguida, clique em Abrir exclusivo.
Para abrir o banco de dados para acesso somente leitura e também impedir que outros usuários o
abram, clique na seta próxima ao botão Abrir e, em seguida, clique em Abrir exclusivo como
somente leitura.




Observação: Você pode abrir diretamente um arquivo de dados em um formato de arquivo
externo, como dBASE, Paradox, Microsoft Exchange, ou Microsoft Excel; você também 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 vínculos 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 opção Fechar do menu Arquivo do programa.




   Laboratório
A.    O que é um banco de dados?



B.      Cite 3 exemplos de banco de dados:




C.      Quais são os objetos de um banco de dados do Access?




D.      Quais são os dois tipos de arquivos padrão criados pelo Access?




E.      Ao copiar um arquivo de banco de dados, é necessário copiar também o arquivo com extensão
     LDB? Justifique:




F.      Como é possível 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 tópico específico, como produtos ou fornecedores.
Utilizar uma tabela separada para cada tópico 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 são organizados em tabelas
Tabelas organizam dados em colunas (chamadas campos) e linhas (chamados registros).




Por exemplo, cada campo em uma tabela Produtos contém o mesmo tipo de informação para
cada produto, como o nome do produto. Cada registro nessa tabela contém todas as informações
sobre um produto, como o nome do produto, o número de identificação do fornecedor, as unidades
em estoque etc.
Modo de design da tabela
No modo de design da tabela, é possível criar uma tabela inteira desde o início 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 visualização, edição ou impressão. Em uma tabela, o campo é uma chave
primária que você define no modo de design da tabela. Esse mesmo campo também 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 necessárias 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 necessárias 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
própria folha de dados, ou clicando com o botão direito do mouse em um seletor de colunas.




Percorrendo registros

Você pode usar a barra de ferramentas de navegação para percorrer os registros de uma folha de
dados.




                                                                                             97
Banco de Dados I



20.1 CRIANDO UMA NOVA TABELA
A criação de uma tabela no Access pode ser realizada de 3 maneiras diferentes como como
vamos ver a seguir:


Observação: As informações deste tópico se aplicam somente a um banco de dados do Microsoft
Access (.mdb).


Para criar uma tabela em branco (vazia) a fim de inserir seus próprios 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 instruções das caixas de diálogo 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 padrão das colunas são 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 própria 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 números,
insira-os em um formato consistente para que o Microsoft Access possa criar um tipo de dados e
um formato de exibição apropriados para a coluna. Qualquer coluna que você deixar vazia será
excluída 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 primária. Se você não inseriu dados
que possam ser utilizados para identificar cada linha de sua tabela de forma exclusiva, como
números de série ou de identificação, é recomendável que você clique em Sim. Se você inseriu
dados que possam identificar cada linha de forma exclusiva, clique em Não e especifique o campo
que contém os dados como sua chave primária 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 padrão (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 Descrição, digite uma descrição das informações que constarão nesse campo. Essa
descrição é exibida na barra de status quando dados são adicionados ao campo e ela é incluída
na definição do objeto da tabela. A descrição é opcional.
Defina um campo de chave primária antes de salvar sua tabela.
Abra uma tabela no modo de design.
Selecione o campo ou campos que você deseja definir como chave primária.
Para selecionar um campo, clique no seletor de linha do campo desejado.
Para selecionar vários campos, mantenha pressionada a tecla CTRL e, em seguida, clique no
seletor de linha de cada campo.

Clique em Chave primária          na barra de ferramentas.
Observação Se você deseja que a ordem dos campos em uma chave primária de campos

múltiplos 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 Primária.


Observação: Você não precisa definir uma chave primária, mas normalmente é recomendável
fazê-lo. Se você não definir uma chave primária, 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 usuário deverá especificar o seu tipo de dados. A lista
a seguir resume todos os tipos de dados de campos disponíveis no Microsoft Access, seus usos e
tamanhos de armazenamento.


Texto
Use para texto ou combinações de texto e números, como endereços, ou para números que não
exigem cálculos, como códigos postais, números de telefone ou de peças.
Armazena até 255 caracteres. A propriedade FieldSize controla o número máximo de caracteres
que podem ser inseridos.
Memorando
Use para texto longo e números, como anotações ou descrições.
Armazena até 65.536 caracteres.


                                                                                            101
Banco de Dados I


Número
Use para dados numéricos a serem incluídos em cálculos matemáticos, exceto os que envolvam
valores monetários (use o tipo Moeda).
Armazena 1, 2, 4 ou 8 bytes; 16 bytes para código de replicação (GUID). A propriedade FieldSize
define o tipo Número específico.
Data/Hora
Use para datas e horas.
Armazena 8 bytes.
Moeda
Use para valores monetários e para evitar arredondamento durante os cálculos.
Armazena 8 bytes.
AutoNumeração
Use para números sequenciais (incremento de 1) ou aleatórios exclusivos que são
automaticamente inseridos quando um registro é adicionado.
Armazena 4 bytes; armazena 16 bytes para código de replicação (GUID).
Sim/Não
Use para dados que podem ter somente um de dois valores possíveis, como Sim/Não,
Falso/Verdadeiro, Ativado/Desativado. Valores Nulo não são permitidos.
Armazena 1 bit.
Objeto OLE
Use para objetos OLE (como documentos do Microsoft Word, planilhas do Microsoft Excel,
imagens, sons ou outros dados binários) que foram criados em outros programas usando o
protocolo OLE.
Armazena até 1 gigabyte (limitado pelo espaço 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 combinação — a escolha desta opção na lista de tipos de dados iniciará um
assistente que definirá isso para você.
Requer o mesmo tamanho de armazenamento que a chave primária que corresponde ao campo
Pesquisa —- normalmente 4 bytes.




                                                                                           102
Banco de Dados I


20.6 PROPRIEDADES DE CAMPOS
Além do tipo de dados outras propriedades podem ser definidas com o objetivo de restringir a
entrada de dados ou mudar a sua exibição no qual listamos abaixo algumas:


               Propriedade                               Descrição

                               O número de casas após a vírgula para dados do tipo
         Casas decimais
                               número.
                               Um texto que descreve o campo e serve como auxílio
         Descrição
                               no modo folha de dados.
                               O formato serve basicamente para alterar a exibição
                               dos dados. Dependendo do tipo de dados o usuário
                               poderá escolher entre um dos formatos pré-definidos.
                               Como exemplo de formatação pode citar :
         Formato
                                        >[Vermelho] : Exibe     os   dados   em   letras
                               maiúsculas e em vermelho
                                        mmm-aaaa : Exibe uma data no formato mês
                               abreviado e ano completo.
                               Quando for necessário emitir um relatório ou exibir uma
                               consulta ordenada por um determinado campo o usuário
         Indexado
                               poderá criar um índice para este campo que tornará a
                               consulta ou relatório mais rápidos de serem executados.
                               A legenda é o título da coluna na tabela. Se não for
         Legenda               especificada o usuário utilizará o próprio nome do
                               campo como título da coluna.
                               Serve para restringir e auxiliar o usuário na entrada de
                               dados.
         Máscara de entrada    Por exemplo uma máscara de entrada para um campo
                               CPF poderia ser informada da seguinte forma :
                                        000.000.000-00
                               Define como o Access irá gerar os valores de um
         Novos valores
                               campo do tipo de dados AutoNumeração.
         Permitir comprimento Define se um campo aceita somente espaços em



                                                                                           103
Banco de Dados I


                 Propriedade                            Descrição

          zero                  branco como conteúdo.
                                Uma expressão que restringe a entrada de dados no
                                campo. Por exemplo a Regra de Validação <=Data()
          Regra de validação
                                não permite a entrada de um data maior que a data
                                atual.
                                Define se um campo deve ser obrigatoriamente
          Requerido
                                preenchido ou não.
                                De acordo com o tipo de dados o usuário poderá definir
                                qual é o tamanho do campo. Por exemplo ao utilizar um
          Tamanho do campo      campo do tipo número, o usuário deverá especificar um
                                dos tamanhos permitidos de acordo com a tabela de
                                tipos de dados.
                                Um texto que é exibido quando o usuário excede a
          Texto de validação
                                regra de validação.
                                Um valor que será automaticamente colocado no
          Valor padrão          campo evitando que o usuário digite sempre o mesmo
                                valor para um campo que não sofre muitas alterações.



20.7 BARRA DE FERRAMENTAS DO MODO DESIGN DE
  TABELA
A barra de ferramentas do modo design apresenta os seguintes botões, que tem por finalidade
facilitar algumas ações. Os comandos não citados possuem a mesma função dos outros
aplicativos Office.
                                              Novo objeto

                   Alterna entre os
                   modos                    Janela do banco de
                                            dados




                                                                                         104
Banco de Dados I




                                                                                Construir
                                                                                (Expressões)


Define um campo como chave primária
                                                                              Propriedades
                    Permite a    edição dos
                   índices de    uma tabela
                   primária             Inserir linha
                                                              Excluir linha




     20.8 EDITANDO DADOS NO MODO FOLHA DE DADOS
     Existem várias maneiras de cadastrar dados em um banco de dados do Access, uma das
     maneiras é através do modo folha de dados, muito semelhante ao modo no qual os dados são
     inseridos em uma planilha do Excel.
     Na base do modo folha de dados são encontrados os botões que servem para navegação de
     registros.




                                                                                               105
Banco de Dados I




A tabela abaixo descreve as alterações da barra de ferramentas quando alternamos para o modo
folha de dados.


       Botão          Nome                                Descrição

                                    Alterna para o modo estrutura que permite a alteração
                   Exibir
                                 das definições da tabela.
                  Inserir           Em um campo do tipo hyperlink permite que o usuário
               hyperlink         informe um caminho válido.
                  Barra       de    Exibe a barra de ferramentas para navegação na
               ferramentas Web Internet.
                  Classificação     Classifica os dados na ordem crescente pelo campo
               crescente         selecionado.
                  Classificação     Classifica os dados na ordem decrescente pelo campo
               decrescente       selecionado.
                  Filtrar    por    Ativa o modo de filtro exibindo somente os dados com a
               seleção           seleção atual.
                  Filtrar    por    Permite que o usuário defina um filtro mais complexo
               formulário        para a tabela atual.
                  Aplicar/remov     Aplica ou remove um filtro ativado pelos dois botões
               er filtro         anteriores.
                  Localizar         Ativa a caixa de diálogo Localizar.
                   Novo registro   Permite a inclusão de novos registros.
                  Excluir          Exclui o(s) registro(s) atualmente selecionados(s).
               registro




                                                                                             106
Banco de Dados I


   LABORATÓRIO
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                           Tipo de dados         Tamanho
                  Código do cargo                 AutoNumeração         Inteiro Longo
                  Descrição do cargo              Texto                 25


                  tblSetores
                  Campo                           Tipo de dados         Tamanho
                  Código do setor                 AutoNumeração         Inteiro Longo
                  Descrição do setor              Texto                 25


                 tblEmpresas
                 Campo                    Tipo de dados           Tamanho          Máscara
                 Código            da AutoNumeração               Inteiro Longo
                 empresa
                 Razão Social             Texto                   50               >[Azul]
                 Fone                     Texto                   10              (999)       999-
                                                                                  9999
                 Fax                      Texto                   07               999-9999
                 Observações              Memorando


                        tblFuncionários
                        Campo                      Tipo de dados          Tamanho
                        Código do funcionário      AutoNumeração          Inteiro Longo
                        Código da empresa          Número                 Inteiro Longo
                        Nome do funcionário        Texto                  30




                                                                                                     107
Banco de Dados I


                        Código do cargo       Número                Inteiro Longo
                        Código do setor       Número                Inteiro Longo
                        Salário               Moeda


J.      Na tabela tblCargos cadastre os seguintes cargos: Gerente, Auxiliar administrativo, Diretor:


K.     Na tabela tblSetores cadastre os seguintes setores: Produção, Administração, Recursos
     Humanos:


L.      Feche o banco de dados criado e saia do Access:




                                                                                                       108
Banco de Dados I



                   Unidade 21 -                     RELACIONAMENTOS

21.1 BANCO DE DADOS RELACIONAL
Um banco de dados relacional armazena suas informações em diversas tabelas que se
relacionam através de determinados campos (chave-primária).
O Access é um sistema de gerenciamento de banco de dados relacional, pois as diversas
informações de um banco de dados em Access podem ser divididas em diversas tabelas e
relacionadas entre si para a emissão de relatórios e geração de consultas, porém 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, não necessariamente
como o mesmo nome, mas com o mesmo tamanho e tipo de dados.

21.2 TIPOS DE RELACIONAMENTOS
Os tipos de relacionamentos são divididos em três tipos básicos e são descritos a seguir:

Relacionamentos Um-Para-Vários
Ocorre quando um registro na tabela primária se relaciona com vários registros na tabela
secundária.




                                                                                              109
Banco de Dados I




Relacionamentos Um-Para-Um
Ocorre quando um registro na tabela primária se relaciona com apenas um registro na tabela
secundária.




Relacionamentos Vários-Para-Vários
Os relacionamentos vários-para-vários não são gerenciados diretamente pelo Access e devem ser
evitados com a adição de uma tabela intermediária como no exemplo abaixo:




A inclusão da tabela Detalhes da obra quebrou o relacionamento vários-para-vários 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 botão relacionamentos da barra de
ferramentas ou através do menu FerramentasRelacionamentos.
Em primeiro lugar o usuário deverá adicionar as tabelas que farão parte do relacionamento, logo
após basta arrastar o campo, que será relacionado, da tabela primária para a tabela secundária e
a seguinte caixa de diálogo será exibida.




Além do relacionamento em si também podem ser definidas algumas propriedades que são
descritas abaixo:


      Botão                                 Nome
                                             A integridade referencial é um sistema de regras
                                          que o Microsoft Access utiliza para garantir que os
                                          relacionamentos entre registros de tabelas
         Impor integridade referencial
                                          relacionadas sejam válidos e que você não exclua
                                          ou altere, acidentalmente, dados relacionados.

                                           Atualiza   dados  na    tabela   secundária
        Propagar atualização        dos automaticamente quando os dados forem alterados
      campos relacionados               na tabela primária.
                                             Exclui    dados   na    tabela    secundária
         Propagar      exclusão     dos
                                          automaticamente quando os dados forem excluídos
      registros selecionados
                                          na tabela primária.




                                                                                                111
Banco de Dados I


As botões descritos abaixo são exibidos na tela de relacionamentos :


         Botão            Nome                               Descrição

                                            Adiciona novas tabelas a tela de
                   Adicionar tabelas
                                         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
                    Limpar layout           Limpa todos os relacionamentos.
Para excluir um relacionamento existente basta apenas marcar a linha que representa o
relacionamento desejado e pressionar a tecla DELETE.
Caso o usuário exclua uma tabela da tela de relacionamentos, as relações não serão excluídas.

Definindo as Propriedades de Pesquisa

Um dos objetivos de relacionar tabelas é evitar dados redundantes, após ter criado as tabelas do
banco de dados o usuário poderá definir no modo estrutura de tabela as propriedades de
pesquisa, que permitirão que determinados campos exibam dados de outras tabelas. Por exemplo,
ao cadastrar um novo produto ao invés de termos que digitar o código da categoria podemos
definir as propriedades de pesquisa do campo código da categoria para que seja exibida uma
caixa de combinação com o nome das categorias.
A maneira mais simples de definirmos as propriedades de pesquisa de um campo é utilizarmos a
opção Assistente de pesquisa no tipo de dados do campo.
Ao definir as propriedades de pesquisa através do Assistente de pesquisa o Access criará
automaticamente o relacionamento, porém não definirá as regras de integridade referencial e
propagação de atualização e exclusão.




                                                                                            112
Banco de Dados I


LABORATÓRIO 3
Através do comando relacionamentos, relacione as tabelas criadas no laboratório 2.




Através do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de
pesquisa para o campo Código da empresa na tabela tblFuncionários:




Através do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de
pesquisa para o campo Código do cargo na tabela tblFuncionários:




Através do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de
pesquisa para o campo Código do setor na tabela tblFuncionários:




Quais tabelas seriam necessárias para criar um banco de dados de uma locadora de veículos?
Elabore um modelo. (Este laboratório deverá ser realizado em conjunto com o instrutor e a turma)




                                                                                             113
Banco de Dados I



                                    Unidade 22 -                     CONSULTAS

22.1 O QUE SÃO AS CONSULTAS NO ACCESS
Como foi descrito anteriormente as consultas são perguntas feitas sobre os dados de um banco
de dados ou ações que modificam estes dados.
Quando você abre uma consulta no modo de design, ou abre um formulário, relatório ou folha de
dados e mostra a janela Filtrar/classificar avançado, é exibida a grade de design, que pode ser
utilizada para fazer uma variedade de alterações 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 botão Avançar e na próxima 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 botão Adicionar e logo após no botão Fechar.



                                                                                            115
Banco de Dados I


Na caixa de dialogo Consulta1: consulta seleção, 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 botão Executar na barra de ferramentas
Design de consulta.
As consultas no Access são realizadas na grade QBE (query by exemple) que permite a definição
de consultas complexas sem a necessidade de programação 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 botões descritos abaixo são exibidos na tela de consultas :


        Botão Nome                Descrição
                   Tipo        de Alterna entre os tipos de consultas permitidos pelo
                consulta         Access.

                   Executar       Executa a consulta atualmente definida.

                   Adicionar      Adiciona novas tabelas a tela de consultas.
                tabelas
                                  Exibe a linha de Totais na grade QBE que permite a
                   Totais
                                 totalização de dados.
                   Valores        Permite a definição de percentuais de registros a serem
                principais       exibidos como resultado.




                                                                                            117
Banco de Dados I



22.4 TIPOS DE CONSULTAS
Como foi descrito anteriormente as consultas são perguntas feitas sobre os dados de um banco
de dados ou ações que modificam estes dados.

Consulta Seleção

É o tipo mais comum de consulta do Access, tem por objetivo retornar ao usuário uma série de
dados de uma ou mais tabelas. Através do botão de Totais poderá também retornar dados
resumidos.
O exemplo abaixo mostra a definição de uma consulta de seleção simples com dados de duas
tabelas.




O exemplo abaixo mostra a definição de uma consulta de seleção com totais.




                                                                                        118
Banco de Dados I


Consulta de Tabela de Referência Cruzada

As consultas de referência cruzada têm por objetivo resumir dados e utilizam basicamente um
recurso semelhante ao utilizado nas tabelas dinâmicas do Excel. A figura abaixo mostra um
exemplo de consulta de referência cruzada:




Consulta Criar Tabela

A consulta do tipo Criar tabela permite que dados de uma ou mais tabelas sejam lançados em
uma nova tabela.
A interface é semelhante ao das consultas de seleção a única diferença que ao alterar o tipo de
consulta o usuário 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
três tabelas existentes:




                                                                                           119
Banco de Dados I




Consulta Atualização

A consulta do tipo Atualização 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 Acréscimo

A consulta do tipo acréscimo é 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 Exclusão

A consulta do tipo exclusão serve para excluir um conjunto de registro de uma tabela baseado em
critérios informados. Os registros são excluídos definitivamente.
A tela abaixo exibe a definição de uma consulta que exclui todos os produtos da categoria
―Brinquedos‖ da tabela de Produtos:




                                                                                           121
Banco de Dados I




                                                               ‘

Utilizando Parâmetros

Os parâmetros são variáveis definidas pelo usuário que têm seus valores informados na execução
da consulta. Por exemplo ao invés do usuário fornecer um critério do tipo ―Bebidas‖ para uma
consulta que lista os produtos de uma categoria específica o usuário pode utilizar um critério do
tipo [Entre com o nome da categoria].
No exemplo abaixo ilustramos a consulta descrita acima:




O texto utilizado como parâmetro não pode ser um nome de campo e deve ter o seu tipo de dados
especificado através do comando ConsultaParâmetros.




                                                                                             122
Banco de Dados I




                   123
Banco de Dados I


   LABORATÓRIO 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                Classificação   Critérios/Obs
                                  Produtos:        Nome do                     Critério:
                                                               Nome do
            Lista de produtos    Produto                                       Preço Unitário
                                                               Produto
                                         Preço Unitário                        >95
            País dos              Funcionários : Nome
                                                               Nome
            Funcionários                 País
            Funcionários por      Funcionários: País                           Consulta com
                                                               País
            país                         Código                                Totais
                                  Categorias:      Nome da                     Consulta com
            Produtos por         Categoria                     Nome da         Totais
            categoria             Produtos:        Código do   Categoria
                                 Produto
                                  Produtos:        Nome do                     Critério:
            Produtos com         produto                       Nome do         Entre 10 e 20
            estoque crítico              Unidades em           produto
                                 estoque
                                  Clientes:        Nome da                     Critério:
                                                               Nome da
            Empresas com fax     empresa                                       Negado é nulo
                                                               empresa
                                         Fax
                                  Clientes:        Nome da                     Critério:
            Clientes do Brasil e empresa                       Nome da         Brasil ou
            Argentina                    Fone                  empresa         Argentina
                                         País
                                  Produtos:        Preço                       Atualizar para:
            Atualização do
                                 Unitário                                      [PreçoUnitário]*1
            preço em 10%
                                                                               ,1
            Exclusão dos          Clientes:        País                        Critério:
            clientes da                                                        Argentina




                                                                                                   124
Banco de Dados I


       Argentina
                             Funcionários: Nome do                     Criação de
                             Funcionário                               tabela
       Exporta
                                      Cidade              Cidade       Critério :
       Funcionários USA
                                      País                             Estados Unidos


                             Clientes:         Nome da                 Tabela
       Quantidade de         empresa                      Nome da      referência
       pedidos por cliente   Funcionários: Nome          empresa       cruzada
       e funcionário         Pedidos:          Número do Funcionário
                             Pedido
                             Categorias:       Nome da                 Consulta com
       Média de preço por categoria                       Nome da      Totais
       categoria             Produtos:         Preço     categoria
                             Unitário




                                                                                        125
Banco de Dados I



                               Unidade 23 -                    FORMULÁRIOS

23.1 O QUE SÃO FORMULÁRIOS?
Como foi descrito anteriormente um formulário é uma forma de visualizar e editar os dados de um
banco de dados do Access.
Os formulários fornecem facilidade na edição de registros e apresentam os dados em uma forma
personalizada. Você pode utilizar diversos tipos de efeitos (cores/linha e fontes) em seus
formulários.
Abaixo ilustramos o exemplo de um formulário de um cadastro de clientes.




                                                                                           126
Banco de Dados I



23.2 CRIANDO UM NOVO FORMULÁRIO
É possível criar um formulário de três maneiras.
Com base em uma única tabela ou consulta utilizando o Auto Formulário.
O Auto Formulário cria um formulário que exibe todos os campos e registros na tabela ou
consulta base. Se a origem do registro selecionada tiver tabelas ou consultas relacionadas, o
formulário também incluirá todos os campos e registros dessas origens do registro.
Na janela Banco de dados, clique em Formulários em Objetos.
Clique no botão Novo na barra de ferramentas da janela Banco de dados.
Na caixa de diálogo Novo formulário, clique em um destes assistentes:


Auto Formulário: Colunar:                                                            Cada     campo
aparece    em      uma    linha                                                      separada com
um rótulo à sua esquerda.
Auto Formulário: Tabular:                                                            Os     campos
em cada registro aparecem                                                            em uma linha,
com os rótulos exibidos uma                                                          vez na parte
superior do formulário.
Auto Formulário: Folha de                                                            dados:     Os
campos em cada registro                                                              aparecem em
um formato linha-e-coluna,                                                           com        um
registro em cada linha e um campo em cada coluna. Os nomes dos campos aparecem na parte
superior de cada coluna.
Auto Formulário: Tabela dinâmica: O formulário abre em modo de tabela dinâmica. É possível
adicionar campos arrastando-os da lista de campos para as diferentes áreas no modo de exibição.
Auto Formulário: Gráfico dinâmico: O formulário abre em modo de gráfico dinâmico. É possível
adicionar campos arrastando-os da lista de campos para as diferentes áreas no modo de exibição.
Clique na tabela ou consulta que contém os dados em que você deseja basear o formulário.
Clique em OK.
O Microsoft Access aplica o último autoformato usado para o formulário. Caso você ainda não
tenha criado um formulário com um assistente ou não tenha usado o comando Auto Formatação
no menu Formatar, ele usará o autoformato Padrão




                                                                                                127
Banco de Dados I


DICA: Uma das maneiras mais rápidas para se criar um                                   formulário
padrão é utilizar um dos Assistentes de Auto formulário que
automaticamente criarão formulários com a mínima intervenção                                  do
usuário. Basta clicar na barra de ferramentas banco de dados                                  no
comando Novo objeto
No modo de design:
Você cria um formulário básico e o personaliza no modo de design para atender às suas
necessidades.
Na janela Banco de Dados, clique em Formulários em Objetos.
Clique no botão Novo na barra de ferramentas da janela Banco de dados.
Na caixa de diálogo Novo formulário, 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 formulário. Se o formulário não for conter dados (por exemplo, se for para utilizar
como um menu de controle para abrir outros formulários ou relatórios ou se você desejar criar uma
caixa de diálogo personalizada), não selecione nada nessa lista.


Dica: Se você deseja criar um formulário que utilize dados de mais de uma tabela, baseie o seu
formulário em uma consulta.
Clique em OK.
O Microsoft Access exibe o formulário no modo de design. Conforme figura abaixo:

                Barra    de     ferramentas          Barra de ferramentas de
                Design do formulário                formatação
                                                    (formulário/relatório)




                                                                                             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 formulários e relatórios poderemos acrescentar objetos
(controles) através da caixa de ferramentas.
Caso o botão de Assistente(segundo botão da caixa de ferramentas) esteja ativado, será
automaticamente exibido para alguns controles um Assistente que auxiliará o usuário na inclusão
do mesmo.
Por exemplo, ao escolher a ferramenta de botão de comando o usuário ativará automaticamente
um assistente que perguntará ao usuário qual a ação que o botão executará.
A figura abaixo exibe os botões da caixa de ferramentas:




       Retângulo                         ActiveX


Para utilizar a caixa de ferramentas, basta selecionar uma de suas opções e clicar na área do
formulário onde o conteúdo será colocado.
Além das barras de ferramentas e da caixa de ferramentas o usuário poderá utilizar o botão direito
do mouse para acessar as opções de um determinado objeto.
Os menus do modo estrutura fornecem uma maneira simples de alinhar, distribuir e alterar a
disposição dos objetos em um formulário.


Definir uma propriedade no modo de design




                                                                                              130
Banco de Dados I


Abra uma tabela, consulta, formulário, relatório ou uma página de acesso a dados no modo de
design.
Abra a folha de propriedades seguindo um destes procedimentos:
No caso de um formulário ou relatório, clique duas vezes no seletor de formulários ou no seletor
de relatórios.




Em uma página de acesso a dados, clique em Selecionar página no menu Editar.

Em uma tabela ou consulta, clique em Propriedades         , na barra de ferramentas.
Para uma seção em um formulário ou relatório, clique duas vezes no seletor de seções.




Para uma seção em uma página de acesso a dados, clique duas vezes na barra de seções.




Para definir propriedades de um campo de consulta, clique na célula 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 página de acesso a dados, clique acima da primeira

seção, e em Propriedades       na barra de ferramentas.

Para definir propriedades de um controle, clique no controle, e em Propriedades        na barra de
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 configuração ou expressão na caixa da propriedade.


                                                                                              131
Banco de Dados I



Se aparecer um botão Construir           próximo 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 espaço para inserir ou editar uma configuração de propriedade, pressione
SHIFT+F2 para abrir a caixa Zoom


Observação: Se a propriedade AllowDesignChanges de um formulário estiver definida como
Todos os modos, você também poderá definir propriedades de formulário no modo de formulário
e no modo de folha de dados.


Outro item importante no modo design de formulário é a folha de propriedades dos objetos que
pode ser acessada pelo botão da barra de                                              ferramentas
ou através do botão direito do mouse
propriedades.
Cada objeto possui várias propriedades que                                            podem    ser
definidas através da folha de propriedades.
Na ilustração abaixo é exibida a folha de
propriedades para o objeto formulário:




                                                                                              132
Banco de Dados I




As propriedades de um objeto são divididas em categorias para facilitar a localização de uma
propriedade específica.

23.4 SOBRE AS SEÇÕES DE UM FORMULÁRIO
É possível dividir as informações de um formulário em seções. Todos os formulários têm uma
seção de detalhes, mas um formulário também pode incluir seções de cabeçalho do formulário,
cabeçalho da página, rodapé da página e rodapé do formulário. Cada seção tem uma finalidade
específica e é impressa em uma ordem previsível no formulário.
No modo de design, as seções são representadas como faixas e cada seção contida no formulário
é representada uma vez. Em um formulário impresso, o cabeçalho e o rodapé da página podem
ser repetidos uma vez em cada página. É possível determinar onde as informações aparecem em
cada seção ao posicionar controles, como etiquetas e caixas de texto.
Esta ilustração mostra o formulário Adicionar produtos no modo de design.




                                                                                         133
Banco de Dados I




Esta ilustração mostra a aparência que o formulário Adicionar produtos terá ao ser impresso.




Um subformulário também pode ter seções. Por exemplo, este subformulário possui um cabeçalho
e um rodapé de formulário, além da seção de detalhes.




                                                                                               134
Banco de Dados I




Você pode ocultar ou redimensionar uma seção, adicionar uma imagem ou definir a cor do plano
de fundo de uma seção. Também é possível definir propriedades da seção para personalizar a
maneira como o conteúdo de uma seção será impresso.

23.5 SUBFORMULÁRIOS
Um subformulário é um formulário dentro de outro. O formulário primário é chamado de formulário
principal e o formulário dentro do formulário é denominado subformulário. Uma combinação
formulário/subformulário é sempre citada como um formulário hierárquico, um formulário
mestre/detalhe ou um formulário pai/filho.
Os subformulários são eficientes principalmente quando se deseja exibir dados de tabelas ou
consultas com um relacionamento um-para-muitos. Por exemplo, você poderia criar um formulário
com um subformulário 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 formulário principal e o subformulário neste tipo de formulário são vinculados de tal forma que o
subformulário exiba apenas registros que estão relacionados ao registro atual no formulário
principal. Por exemplo, quando o formulário principal exibir a categoria Bebidas, o subformulário
exibirá apenas os produtos na categoria Bebidas.


Exibindo um subformulário em um formulário


                                                                                               135
Banco de Dados I


Quando você cria um subformulário, é possível criá-lo de forma a ser exibido em modo folha de
dados, modo de formulário, modo de tabela dinâmica ou modo de gráfico dinâmico. Também é
possível definir o modo de exibição padrão do subformulário e desativar um ou mais modos de
exibição. É possível alternar o modo de exibição de uma subformulário quando o formulário
principal é exibido em modo de formulário.


Os subformulários não são exibidos quando um formulário é aberto no modo de tabela dinâmica
ou modo de gráfico dinâmico.




                                                                                         136
Banco de Dados I




Sincronizando um formulário e um subformulário
Quando você cria um formulário e um subformulário com base em tabelas que possuem um
relacionamento um-para-muitos, o formulário principal exibe o lado "um" e o subformulário exibe o
lado "muitos" do relacionamento. O formulário principal é sincronizado com o subformulário de tal
forma que o subformulário exiba apenas registros relacionados ao registro no formulário principal.
Se você utilizar um assistente para criar um subformulário ou se arrastar um formulário, tabela ou
consulta da janela Banco de dados para outro formulário a fim de criar um subformulário, o
Microsoft Access sincronizará automaticamente o formulário principal com o subformulário se uma
das seguintes condições for verdadeira. Se:
Você tiver definido relacionamentos para as tabelas selecionadas ou para as tabelas base das
consultas selecionadas.
O formulário principal for baseado em uma tabela com uma chave primária e o subformulário for
baseado em uma tabela que contém um campo com o mesmo nome da chave primária e com o
tipo de dados e tamanho de campo igual ou compatível. Por exemplo, em um banco de dados do
Microsoft Access, se a chave primária da tabela base do formulário principal for um campo
AutoNumeração e sua propriedade FieldSize for definida com Inteiro longo, o campo


                                                                                               137
Banco de Dados I


correspondente na tabela base do subformulário deve ser um campo numérico com a propriedade
FieldSize definida como Inteiro longo. Se você selecionar uma ou mais consultas, as tabelas
base da consulta ou consultas deverão atender a essas condições.

Aninhando níveis
Um formulário principal poderá ter qualquer número de subformulários se você colocar cada um
deles no formulário principal. Você também pode aninhar até sete níveis de subformulários. Isto
significa que você pode ter um subformulário dentro de um formulário principal e um outro
subformulário dentro daquele subformulário e assim por diante. Por exemplo, você pode ter um
formulário principal que exiba clientes, um subformulário que exiba pedidos e outro subformulário
que exiba detalhes do pedido. Entretanto, um formulário não exibirá subformulários em modo de
tabela dinâmica ou modo de gráfico dinâmico.

Inserindo dados usando um formulário e subformulário
Quando você utiliza um formulário com um subformulário para inserir novos registros, o Microsoft
Access salva o registro atual no formulário principal quando você insere dados no subformulário.
Isto assegura que os registros na tabela "muitos" terão um registro na tabela "um" com o qual se
relacionar. Isto também salva automaticamente cada registro à medida que são adicionados ao
subformulário.

Criar um subformulário

Se o subformulário for vinculado ao formulário principal, certifique-se de que as origens do registro
base estejam relacionadas antes de usar este procedimento.
Não é possível adicionar um subformulário a um formulário quando ele é exibido em modo de
tabela dinâmica ou em modo de gráfico dinâmico.


Criar um formulário e um subformulário ao mesmo tempo

Na janela Banco de Dados, clique em Formulários          em Objetos.
Clique no botão Novo na barra de ferramentas da janela Banco de dados.
Na caixa de diálogo Novo formulário, clique duas vezes em Assistente de formulário.
Na primeira caixa de diálogo do assistente, selecione uma tabela ou consulta na lista. Por
exemplo, para criar um formulário Categorias que exiba produtos para cada categoria em um
subformulário, selecione a tabela Categorias (o lado "um" do relacionamento um-para-muitos).

Observação: Não 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 diálogo do assistente, selecione outra tabela ou consulta da lista. Utilizando o
     mesmo exemplo, selecione a tabela Produtos (o lado " muitos" da relação um-para-muitos).
     Clique duas vezes nos campos que você deseja incluir desta tabela ou consulta .
     Quando você clicar em Avançar, 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 formulário Categorias, clique em Por categorias.
     Na mesma caixa de diálogo do assistente, selecione a opção Formulário com subformulário (s)
     .
     Siga as instruções nas demais caixas de diálogo do assistente. Quando você clicar em Concluir,
     o Microsoft Access criará dois formulários, um para o formulário principal e controle de
     subformulário, e um para o subformulário.


   LABORATÓRIO
O.   Abra o banco de dados criado no laboratório 2:



P.      Com a ajuda do Assistente de Auto formulário Colunar crie um formulário para cada tabela do
     banco de dados:



Q.       Em cada um dos formulários criados no item anterior coloque um botão que feche o formulário:



R.       Crie um formulário chamado Menu Principal, que possua um botão que abra cada um dos
     formulários criados no item B:



S.       No formulário Menu Principal crie um botão que feche o Access:



T.       Crie um formulário com um subformulário utilizando as tblSetores e tblFuncionários.




                                                                                                   139
Banco de Dados I



                                   Unidade 24 -                     RELATÓRIOS

24.1 O QUE SÃO RELATÓRIOS?
Como foi descrito anteriormente um relatório é uma forma de criar listagens e etiquetas de um
banco de dados do Access.
Os relatórios fornecem facilidade na criação de apresentações personalizadas com a utilização de
diferentes tipos de efeitos (fontes, linhas, cores), além de permitir a inclusão de fórmulas de
totalização de dados.
Abaixo ilustramos o exemplo de um relatório de produtos e preços:




                                                                                            140
Banco de Dados I



24.2 CRIANDO UM NOVO RELATÓRIO
Para criar um novo relatório o usuário poderá utilizar a opção Novo Objeto da barra de
ferramentas da janela banco de dados ou o botão Novo na guia Relatórios.
Ao escolher o botão Novo da guia Relatórios, será exibida a seguinte caixa de diálogo que
permitirá ao usuário escolher um dos Assistentes do Access que auxiliam na criação de novos
relatórios.




Uma das maneiras mais rápidas para se criar um                             relatório padrão
é utilizar um dos Assistentes de Auto relatório que
automaticamente criará um relatório com a mínima                           intervenção    do
usuário. Clique no botão Novo Objeto na barra de                               ferramentas
banco de dados em seguida no comando Relatório.                            Conforme figura
ao lado.




                                                                                         141
Banco de Dados I


No modo design que serve apara alterar relatórios existentes ou criação de novos relatórios será
exibida a seguinte tela:




                                                                                            142
Banco de Dados I




No modo estrutura de relatório são exibidos os seguintes botões nas barras de ferramentas.


       Botão       Nome             Descrição
                                    Permite selecionar um objeto na estrutura atual
                     Objeto
                                 através do seu nome.
                                    Altera o tipo de fonte de um objeto que possua esta
                      Fonte
                                 propriedade.
                      Tamanho da    Altera o tamanho da fonte.
                   fonte
                      Negrito       Aplica o estilo negrito.
                      Itálico       Aplica o estilo itálico.
                     Sublinhado       Aplica o estilo sublinhado.
                     Esquerda         Alinha o texto à esquerda.
                     Centro           Centraliza o texto.
                     Direita          Alinha o texto à direita.
                      Cor             Altera a cor de preenchimento de um objeto.
                   preenchimento
                     Cor fonte        Altera a cor da fonte de um objeto.
                     Cor contorno     Altera a cor de contorno de um objeto.
                     Contorno         Altera a caneta de contorno de um objeto.
                                     Aplica um dos diferentes efeitos de sombra aos
                     Sombra
                                  objetos.
                                     Alterna a exibição entre o modo estrutura/relatório e
                      Exibir
                                  folha de dados.
                                     Exibe uma lista de campos, caso o relatório esteja
                      Campos
                                  baseado em uma consulta ou tabela.
                      Ferramentas    Exibe/Oculta a caixa de ferramentas.
                                     Classifica dados de um relatório e/ou cria novas
                      Subtotais
                                  seções (quebras de relatório).
                      Auto           Permite a escolha de um estilo pronto de formatação.
                   formatar
                                     Exibe a janela de código do relatório ou relatório
                      Módulo
                                  atual.
                      Propriedade    Exibe as propriedades de um objeto.
                   s
                                     Permite a construção de expressões/macros e código
                      Construtor
                                  VBA que pode ser utilizado nas propriedades de um
                   de expressões
                                  objeto.




                                                                                             143
Banco de Dados I



24.3 CAIXA DE FERRAMENTAS
Ao trabalharmos com a estrutura de relatórios poderemos acrescentar objetos (controles) através
da caixa de ferramentas.
A caixa de ferramentas a ser utilizada no modo design de relatórios é a mesma já vista na seção
de formulários.
Para utilizar a caixa de ferramentas, basta selecionar uma de suas opções e clicar na área do
relatório onde o conteúdo será colocado.
Além das barras de ferramentas e da caixa de ferramentas o usuário poderá utilizar o botão direito
do mouse para acessar as opções de um determinado objeto.
Os menus do modo estrutura fornecem uma maneira simples de alinhar, distribuir e alterar a
disposição dos objetos em um relatório.


Outro item importante no modo design de relatórios é a folha de propriedades dos objetos que
pode ser acessada pelo botão da barra de ferramentas ou                              através    do
botão direito do mouse propriedades.
Cada objeto possui várias propriedades que podem ser                                     definidas
através da folha de propriedades.


Na ilustração abaixo é exibida a folha de propriedades                               para        o
objeto relatório:


                                             As propriedades de um objeto são divididas em
                                             categorias para facilitar a localização de uma
                                             propriedade específica.




                                                                                               144
Banco de Dados I


   LABORATÓRIO 6
U.   Abra o banco de dados criado no laboratório 2:



V.      Com a ajuda do Assistente de Auto relatório tabular crie um relatório para cada tabela do
     banco de dados:



W.       Crie um novo formulário no modo estrutura que possua um botão para visualizar cada um dos
     relatórios criados no item B:



X.       Abra a estrutura do formulário Menu Principal e crie um botão que abra o formulário criado no
     item C:




                                                                                                  145
Banco de Dados I



                             Unidade 25 -                       Página de dados

25.1 PARA CRIAR UMA PÁGINA DE ACESSO A DADOS
Página de acesso a dados: uma página da Web, publicada a partir do Access, que tem uma
conexão com um banco de dados. Em uma página de acesso a dados, é possível exibir, adicionar,
editar e manipular os dados armazenados no banco de dados. Uma página pode também incluir
dados de outras fontes, como o Excel, ou para abrir uma página no modo Design, modo Página
(modo Página: uma janela do Access na qual é possível pesquisar o conteúdo de uma página de
acesso a dados. No modo Página, as páginas têm a mesma funcionalidade que têm no Internet
Explorer 5.0 ou posterior.) ou no Microsoft Internet Explorer, é necessário instalar o Microsoft
Internet Explorer 5.01 com Service Pack 2 (SP2) ou posterior.
Se você criar uma página de acesso a dados quando um banco de dados é aberto, o Microsoft
Access cria um atalho para a página e exibe o atalho na janela Banco de dados. Se você criar uma
página sem abrir um banco de dados, o Microsoft Access criará uma página autônoma.
A partir do Microsoft Office Access 2007 já não são suportadas páginas de acesso a dados. Se
pretender implementar um formulário de introdução de dados através 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 versão anterior do Access (um arquivo .mdb) e essa
base de dados contiver páginas de acesso a dados, poderá ver as páginas no Windows Internet
Explorer. Contudo, não poderá efetuar nenhuma ação com essas páginas.



25.2 CRIAR UMA PÁGINA DE ACESSO
Criar uma página de acesso a dados que contém todos os campos de uma fonte de registro única
(AutoPágina)
O comando AutoPágina cria uma página de acesso a dados que contém todos os campos (exceto
campos que armazenem imagens) e registros na tabela, consulta ou modo de exibição base.

Na guia Objetos da janela Banco de Dados, clique em Páginas       .
Na barra de ferramentas da janela Banco de dados, clique em Novo.
Na caixa de diálogo Nova página de acesso a dados, clique em AutoPágina: Colunar.



                                                                                             146
Banco de Dados I


Clique na tabela, na consulta ou no modo de exibição que contenha os dados nos quais você
deseja basear sua página.
Clique em OK.
Na página de acesso a dados concluída, cada campo será exibido em uma linha separada com
um rótulo à esquerda. Se a página resultante não tiver a aparência desejada, você pode modificar
a página no modo de design.

Observação: Se você definiu um tema padrão, o Microsoft Access o aplica à página.
Criar uma página de acesso a dados que contém campos de várias tabelas e consultas
(Assistente de página)

O assistente formula perguntas detalhadas sobre origens do registro, campos, layout e formato
desejados e cria uma página com base nas suas respostas.
Se o assistente não for iniciado
Essa situação pode ocorrer porque o Access está em execução no modo seguro, mas o
componente Microsoft Jet 4.0 SP8 ou posterior não está instalado no computador. É necessário
que o Jet 4.0 SP8 ou posterior esteja instalado para que o Access funcione plenamente quando o
modo seguro estiver habilitado.


Observação: Para obter mais informações sobre a instalação da atualização 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 informações 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 Páginas       .
Na barra de ferramentas da janela Banco de dados, clique em Novo.
Na caixa de diálogo Nova página de acesso a dados, clique em Assistente de página.
Clique no nome da tabela, consulta ou modo de exibição que inclua os dados nos quais você
deseja basear sua página de acesso a dados.


Observação Você não precisa fazer isso agora — você pode especificar as origens do registro
para a página no assistente.


Clique em OK.
Siga as instruções das caixas de diálogo do assistente.



                                                                                            147
Banco de Dados I


Se a página resultante não tiver a aparência desejada, você pode modificar a página no modo de
design.
Observações:
a) Caso você queira incluir campos de várias tabelas e consultas em sua página, não clique em
Avançar nem em Concluir após selecionar os campos da primeira tabela ou consulta no Assistente
de página. Repita as etapas para selecionar uma tabela ou consulta e escolha os campos que
deseja incluir no relatório, até ter selecionado todos os campos necessários.
b) Se você incluir campos de várias tabelas ou consultas mas não criar níveis de grupo, os
campos de uma das tabelas base podem oferecer suporte a atualizações no modo de página ou
no Microsoft Internet Explorer. O assistente listará as origens de registro da página e solicitará que
você especifique a fonte do recurso atualizável.




                                                                                                  148
Banco de Dados I


Criar uma página de acesso a dados no modo de design.

Na guia Objetos da janela Banco de Dados, clique em Páginas       .
Na barra de ferramentas da janela Banco de dados, clique em Novo.
Na caixa de diálogo Nova página de acesso a dados, clique em Modo de design.
Clique no nome da tabela, consulta ou modo de exibição que inclua os dados nos quais você
deseja basear sua página de acesso a dados.
Observação Se você quiser criar uma página em branco, não selecione uma fonte do registro
nesta caixa de diálogo.
Clique em OK.

O Microsoft Access exibe a página de acesso a dados no modo de design, no qual você poderá
modificar a página. Para adicionar dados à página, arraste os campos da lista de campos para a
página.
Transformar uma página da Web existente em uma página de acesso a dados

Na janela Banco de Dados, clique em Páginas       , em Objetos.
Clique no botão Novo na barra de ferramentas da janela Banco de dados.
Na caixa de diálogo Nova página de acesso a dados, clique em Página da Web existente.
Clique em OK.
Na caixa de diálogo Localizar página da Web, procure a página da Web ou arquivo HTML que
você deseja abrir.

Observação: Você pode localizar uma página da Web clicando em Pesquisar na Web             na
caixa de diálogo Localizar página da Web. Salve uma cópia da página usando o comando Salvar
como no menu Arquivo do Microsoft Internet Explorer e inicie esse procedimento novamente para
abrir a página no modo design.
Clique em Abrir.
O Microsoft Access cria um atalho para o arquivo HTML na janela Banco de dados e exibe a
página no modo de design, onde você pode modificá-la.


Observação: Se você especificou um arquivo de conexão padrão para o banco de dados na guia
Páginas da caixa de diálogo Opções, o Microsoft Access automaticamente definirá as
propriedades ConnectionFile e ConnectionString para todas as novas páginas.

Criar uma página de acesso a dados autônoma
Se um banco de dados for aberto no Microsoft Access, feche-o.
No menu Arquivo, clique em Novo.
Na caixa de diálogo Novo, clique em Página de acesso a dados.
Na caixa de diálogo Selecionar fonte de dados, siga um destes procedimentos:


                                                                                          149
Banco de Dados I




                   150
Banco de Dados I


   Conectar a página a um banco de dados do Microsoft Access
   Use o seguinte procedimento se você quiser criar uma página 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 página. Se você não
   vir o banco de dados que deseja usar, navegue até a pasta que contém o arquivo e, em seguida,
   clique duas vezes no nome do arquivo.
   Clique em OK duas vezes.
   O Microsoft Access criará uma página em branco e a abrirá em modo de design. A propriedade
   ConnectionString da página será definida para conectar a página ao banco de dados
   selecionado. Para adicionar dados à página, arraste os campos da lista de campos para a página


   LABORATÓRIO 7
Y.   Como base nas tabelas criadas no laboratório 2, crie uma pagina de acesso. Layout Livre.




                                                                                                151
Banco de Dados I



                   Unidade 26 -                    PERSONALIZAÇÃO E
                                                         UTILITÁRIOS

26.1 CONFIGURAÇÕES DE INICIALIZAÇÃO
Após concluir toda a estrutura do aplicativo o usuário poderá definir configurações que farão com
que ao entrar em um banco de dados seja exibido automaticamente um formulário especifico.
Desta forma e com o que foi visto nos capítulos anteriores o usuário poderá criar um aplicativo
personalizado de acordo com suas necessidades.
Para definir as opções de inicialização de um banco de dados o usuário deverá selecionar a opção
FerramentasInicializar.




Além do título, ícone e formulário padrão o usuário poderá definir se os menus poderão ser
utilizados ou não e se a Janela Banco de Dados será exibida.
No Access 2007 selecione o botão do Office (canto superior esquerdo) e clique em "Opções 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 compactação de um banco de dados do Access reduz o tamanho do arquivo em disco,
otimizando-o, além de desfragmentar o arquivo em disco.
Para compactar um banco de dados basta escolher a opção FerramentasUtilitários de banco de
dadosCompactar e Reparar banco de dados.
No Access 2007 a opção é encontrada no botão do Office




                                                                                       153
Banco de Dados I




26.3 REPARANDO UM BANCO DE DADOS
Caso ocorra algum problema no nível de arquivo e o Access não consiga efetuar a leitura do
mesmo, a ferramenta de reparação poderá solucionar o problema.
Para reparar um arquivo de banco de dados danificado basta escolher o comando
FerramentasUtilitários de banco de dadosCompactar e Reparar banco de dados.



26.4 PROTEGENDO UM APLICATIVO
Após criar o seu aplicativo no Access qualquer usuário poderia alterar a estrutura dos objetos do
banco de dados.
As principais maneiras de se proteger um de banco de dados no Access são:



                                                                                             154
Banco de Dados I




Protegendo o Arquivo

A proteção de arquivo solicitará uma senha do usuário todas as vezes que o mesmo tentar abrir o
arquivo de banco de dados.
Para ativar a proteção por senha escolha FerramentasSegurançaDefinir senha do banco de
dados.

Criando um Arquivo Mde

Um arquivo MDE é na verdade uma versão ―compilada‖ do arquivo MDB. Um arquivo MDE
permitirá apenas alterações e visualização de estrutura para tabelas e consultas.
Para criar um arquivo MDE menu FerramentasUtilitários de Banco de dadosCriar um MDE

Criptografando o Arquivo

A criptografia tornará impossível 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 usuário.
No Access 2007 encontramos estas opções na barra de ferramentas




                                                                                             155
Banco de Dados I


   LABORATÓRIO 8
Z.     Defina o formulário Menu Principal como formulário de inicialização do seu banco de dados
   criado no laboratório 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 Introdução

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 são específicas deste banco. É um dos bancos de dados mais utilizados por empresas e usuários pessoais
Podemos citar vários grandes exemplos de usuários deste sistema de gerenciamento de banco de dados, mas
o maior case de sucesso, não poderia deixar de ser outro: o Google.
Este sistema teve seu lançamento na década de 1980, de lá para cá o numero de usuários e pessoas
responsáveis por sua manutenção e testes só tem aumentado. Além disso uma série de sistemas satélite 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
intenção de gerar concorrência. No entanto a sua grande expansão fez com que grandes corporações 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 integração com
uma das linguagens de programação de maior sucesso na Internet, o PHP. Esta configuração de uso do
Linux(Sistema Operacional), MySQL, PHP e o Apache(Servidor), criou uma sigla conhecida como LAMP,
que é uma das opções mais aceitas pelos usuários na hora de hospedar seus sites. Também é comum a
visualização da sigla WAMP, que nada mais é do que troca do sistema operacional Linux pelo Windows


Em seu princípio 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 gestão de dados com grande volume de acesso
como o Google e a Wikipédia além de ter sua utilização empregada em instituições que lidam com a
segurança e precisão da informação como fatores determinantes de seu negócio. Podemos citar como
exemplo a NASA e o exército Americano, além de exemplos nacionais como o banco Bradesco e tantas
outras instituições financeiras




                                                                                                     157
Banco de Dados I



                                    Unidade 28 -                   O Front-End

28.1 Alguns Exemplos

Manipular os dados armazenados em um banco de dados requer o uso de ferramentas
específicas para esta operação. Estes sistemas são os chamados fron-ends.
A instalação completa do MySQL acompanha o aplicativo desktop chamado MySQL Query
Browser:




Este sistema é bem completo e oferece suporte a linguagem, bem como interface amigável ao
banco em si.
                   Além desta possibilidade nativa, possuímos uma série de outros sistemas
                   desktop, cabendo um destaque ao Navicat.
                   Entretanto como a maior popularização do MySQL se deu pelo grande
                   casamento com a linguagem para web(PHP), não 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 manipulação 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 Através de linguagens de programação

 Um banco de dados tem por objetivo maior ser um local de armazenamento de informações para
 ser acessada a qualquer momento e preferencialmente de qualquer local. No entanto seu uso mais
 comum está ligado à integração com sistemas web e desktop.
  A banco de dados MySQL, como já referido anteriormente, tem uma forte ligação com a
 linguagem PHP, mas pode, interagir com qualquer outro sistema independente de sua linguagem.
 Para estabelecer esta conexão as linguagens se utilizam de scripts próprios.
 Exemplo de script em PHP para conexão 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 usuário que tem acesso
 $password=" "; // Indique a senha do usuário
 //1º passo - Conecta ao servidor MySQL
 if(!($id = mysql_connect("localhost",$usuario,$password))) {
    echo "Não foi possível estabelecer uma conexão                       com o gerenciador
 MySQL. Favor Contactar
 o Administrador.";
    exit;
 }
 //2º passo - Seleciona o Banco de Dados

 if(!($con=mysql_select_db($dbname,$id))) {

    echo "Não foi possível             estabelecer     uma    conexão    com    o   gerenciador
 MySQL. Favor Contactar
 o Administrador.";
      exit;
 }
 ?>
 Além deste exemplo existe outras linguagem que possuem seu próprio script de conexão




                                                                                            159
Banco de Dados I




29.2 Através do Front-End

 Para acessarmos nosso banco de dados, com a intenção de realizar manutenções, extração de
informações, gerenciamento de performance, criação de regras, etc. podemos fazê-lo de forma
mais rápida e dinâmica através de nossos fron-ends.
O phpMyAdmin pode ser acessado através do endereço IP e porta fornecidos pelo provedor onde
o site de encontra hospedado. Esta informação ou link, normalmente encontra-se disponíveis em
painéis de controle para sites fornecidos por estes provedores de hospedagem.
Será exibida uma tela solicitando o usuário e senha que serão utilizados nesta conexão. Abaixo
podemos ver um exemplo desta tela.




No caso de instalação 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 rápida e sem a necessidade de informar usuário
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 máquina
que irá acessar o banco. Este programa pode ser facilmente baixado através do site da MYSQL ou
em local próprios 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 conexão(normalmente 3306) com o servidor(localhost se for localmente)
      O usuário(normalmente o mesmo do painel de controle ou root se for localmente)
      A senha(definida pelo usuário)
      Base de dados padrão(A base do projeto)




                                                                                           162
Banco de Dados I



              Unidade 30 -                      Conhecendo a Interface

30.1 phpMyAdmin

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 informações sobre a configuração do servidor em que o banco está
hospedado bem como estatísticas 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 utilização.
Diferentemente do phpMyAdmin esta interface não exibe incialmente informações sobre o servidor,
mas sim, traz uma caixa de texto para a digitação de sentenças SQL.


Também podemos observar à existência de botões que representam sintaxes da linguagem SQL,
que são utilizados para tornar mais ágil a criação dos scripts.


Veja uma tela de exemplo deste layout inicial




                                                                                           163
Banco de Dados I




30.3 Acessando uma Base de Dados

No phpMyAdmim possuímos na parte superior esquerda da tela uma lista das bases de dados
disponíveis, basta clicar sobre a mesma




                                                                                          164
Banco de Dados I




No MySQL Query Browser localizamos estas mesmas opções 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 execução de qualquer consulta, deleção,
ou outra atividade em nosso banco de dados, podemos utilizar de instruções SQL digitadas
diretamente ou nos fazer valer de front-ends.
No caso da criação de uma nova base de dados utilizáramos a sentença:
CREATE DATABASE nomedabase

Pelo phpMyAdmin realizamos esta operação, estando na tela inicial (clicar no botão Home -     )
basta digitar o nome da nova base e clicar em ―Criar‖




No MySQL Query Browser clicamos com o botão direito sobre uma base qualquer e escolhemos a
opção ―Create New Schema‖




Por fim digitamos o nome do banco e clicamos em ―OK‖




                                                                                            166
Banco de Dados I



                                 Unidade 32 -                           Criando Tabelas

32.1 Interface

A criação de tabelas com a utilização de scripts já foi vista em unidades anteriores, estão vamos
nos deter na facilidade da criação de tabelas com a interação da interface dos font-ends
phpMyAdmin
Com a base de dados selecionada basta digitar o nome da nova tabela e o número de campos
que a mesma terá (número de arquivos)




Logo apões este passo será exibida uma tela para as devidas configurações:




                                                                                 Valores Nulos
                                           Tamanho do Campo



                         Tipo de dado                                                      Opções numéricas ou update


         Nome do campo                                                      Formatação Campo




                          Autoincremento                                         Comentário

                                                                          Texto Completo
       Valor padrão
                                                                  Vavio

                                                                ünico

                                                       Indice

                                                 Chave Primária
                                                                                                                167
Banco de Dados I




       Cometários
                                                   Tipo de tabela         Formatação




        Salvar              Incluir campos      Executar




O preenchimento das informações solicitadas nos campos, na realidade gera um script em SQL
para a criação da referida tabela.


Podemos verificar os scripts criados para a criação de tabelas bem como para inserção do dados
das mesmas através do botão ―exportar‖




 Esta opção é muito útil quando precisamos criar uma série de tabelas que desenvolvemos
localmente para um servidor remoto.


Além disto este script, também é utilizado para a ―instalação‖ de sistemas web baseado em banco
de dados MySQL


MySQL Query Browser


Para o MySQL Query Browser o processo é simples, basta clicar com o botão direito sobre a base
de dados na qual desejas que a tabela seja criada.




                                                                                           168
Banco de Dados I




                   Nome table                            Base de Dados                  Comentário




                                                           Opções numéricas ou update

                                                    Autoincremento                       Comentário

                                             Nulo

                                Tipo Dados

          Nome Campo                                          Salvar




Além da informações apontadas nas caixas de texto cabe destacar que na parte inferior da tela é
exibida a chave primária selecionada bem como os índices. Além disso também encontramos mais
detalhes sobre a configuração de cada campo.




                                                                                                      169
Banco de Dados I



                          Unidade 33 -                             Criando Consultas

33.1 Interface

A exemplo da criação de bases de dados e tabelas, no caso das consultas, também 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 botão de suas propriedades(                ). Para a execução de um script direto em SQL

basta clicar na aba             .

Para utilizar um ―assistente‖ na criação de suas consultas clique na aba
A seguinte tela será exibida;


                                                               Limite de registros(limit)



                                                                                             Ordernação(order by)

                                    Campos de resultado                 Critérios(where)




                                                                                            Critérios(where)




                                                                                                                    170
Banco de Dados I


MySQL Query Browser
No Query Browser possuímos botões que representam instruções em SQL. A clicar nestes botões
e após em um campo ou tabela a expressão é montada na tela de consulta.
Botões que representam o SQL



Ao arrastar uma tabela veja o resultado




                                                                                       171
Banco de Dados I



                                           Unidade 34 -                        SQL Server




34.1 Introdução

O SQL Server é um SGDB criado e mantido pela Microsoft. Ele é utilizado em muitas empresas,
principalmente por sua grande capacidade de gerenciamento de informações em alto volume de dados.
 Este SGBD tem muitas ferramentas integradas ao núcleo que permitem um ganho realmente significativo em
termos de controle de desempenho e extração de informações.
Podemos citar a sua enorme capacidade de geração de cubos de decisão, bem como seu elevado e confiável
controle de espelhamento e distribuição de dados.
Esta alta confiabilidade na gestão dos dados, bem como a solidez de sua empresa mantenedora fazem do SQL
Server uma das que melhor equilibra a relação custo benefício.


Para empresas de pequeno porte ou mesmo usuário individual a Microsoft disponibiliza uma versão Express
de seu banco de dados, que apesar de algumas limitações de recursos, tais como replicação 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 avaliação
fria(sem bandeiras a defender), veremos que cada um deles possui seus pontos positivos e negativos.


 A conclusão 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 são uma boa opção 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
instalação deste bando de dados em um sistema operacional baseado no núcleo do Linux, esta configuração
não se mostra eficiente sob a ótica de performance e confiabilidade dos dados armazenados.


Neste tipo de servidor(com Linux), recomenda-se a utilização de outro SGBD, tal como o ORACLE,
MySQL, PostGre e tantos outros




                                                                                                   173
Banco de Dados I



                                      Unidade 35 -                  O Front-End

35.1 Ferramenta nativa

O SQL Server possui uma ferramenta nativa de acesso a sua base de dados, não sendo
necessária a utilização de qualquer outro sistema paralelo.
Mesmo que o banco de dados não esteja fisicamente localizado em sua máquina, este aplicativo
nativo do SQL Server, pode fazer o acesso a bases de dados remotas.
Existem algumas empresas que desenvolvem aplicações front-end para SQL Server, tais como o
EMS SQL Manager for SQL Server.
                   No entanto, esta ferramenta paga, não traz todas as funcionalidades que o
                   aplicativo padrão possui.
                    Portanto em nosso material, vamos nos deter única e exclusivamente na
                   ferramenta padrão deste SGBD.




                                                                                        174
Banco de Dados I



Unidade 36 -                  Conectando ao Banco de Dados

 36.1 Através de linguagens de programação

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


  conexao.Open()
  %>
 Além deste exemplo existem outras linguagens que possuem seu próprio script de conexão




                                                                                           175
Banco de Dados I




36.2 Através do Front-End

 Para acessarmos nosso banco de dados, com a intenção de realizar manutenções, extração de
informações, gerenciamento de desempenho, criação de regras, etc. podemos fazê-lo de forma
mais rápida e dinâmica através de nossos front-ends.
O SQL Server pode ser acessado através do endereço IP e porta fornecidos pelo provedor onde o
site de encontra hospedado. Esta informação ou link, normalmente encontra-se disponíveis em
painéis de controle para sites fornecidos por estes provedores de hospedagem.
Será exibida uma tela solicitando o usuário e senha que serão utilizados nesta conexão. Abaixo
podemos ver um exemplo desta tela.




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




                                                                                          176
Banco de Dados I



                  Unidade 37 -               Conhecendo a Interface

37.1 Aplicativo Nativo

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 informações sobre a configuração do servidor em que o banco está
hospedado bem como estatísticas 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 execução de qualquer consulta, deleção,
ou outra atividade em nosso banco de dados, podemos utilizar de instruções SQL digitadas
diretamente ou nos fazer valer de front-ends.
No caso da criação de uma nova base de dados utilizamos a sentença:
CREATE DATABASE nomedabase
Pelo front-end, basta clicar com o botão direito sobre a lista de bases de dados e utilizar a opção
―Novo banco de dados‖




Após 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 -                     Criando Tabelas

39.1 Interface

A criação de tabelas com a utilização de scripts já foi vista em unidades anteriores, estão vamos
nos deter na facilidade da criação de tabelas com a interação da interface dos font-ends
Ao expandirmos as bases de dados existentes e posteriormente seu conteúdo, veremos que será
exibida a opção de tabelas.
Basta clicar com o botão direito sobre a opção tabelas e por fim utilizar ―Nova Tabela‖




Será exibida uma tela para informarmos quais serão os campos e quais são as suas principais
características;
                                                                                          Texto Completo
 Script alteração

                                                                                          Espacial
 Chave primária
                                                                                          Restrições
 Relacionamento
                                                                                          XML
 Índices


 Nome Campo                    Tipo dado            Nulo




                                                                                                       180
Banco de Dados I



                        Unidade 40 -                    Criando Consultas

40.1 Interface

A exemplo da criação de bases de dados e tabelas, no caso das consultas, também podemos
realizá-las por scripts ou via interface. Vejamos como isso funciona em nosso front-ends
No canto superior esquerdo encontramos a opção ―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 -                     Conhecendo XML

41.1 Introdução

XML (eXtensible Markup Language) é uma linguagem marcação para necessidades especiais,
muito utilizada na Web, em podcasts e rss .
É um subtipo de SGML (acrônimo de Standard Generalized Markup Language, ou Linguagem
Padronizada de Marcação Genérica) capaz de descrever diversos tipos de dados. Seu propósito
principal é a facilidade de compartilhamento de informações através da Internet.
Entre linguagens baseadas em XML incluem-se XHTML (formato para páginas Web), RDF,SDMX
,SMIL, MathML (formato para expressões matemáticas), NCL, XBRL, XSIL e SVG (formato gráfico
vetorial).
A principal característica do XML, de criar uma infraestrutura única para diversas linguagens, é que
linguagens desconhecidas e de pouco uso também podem ser definidas sem maior trabalho e sem
necessidade de serem submetidas aos comitês de padronização.




                                                                                                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 padrão 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 padrão
XML.
O script para criar a tabela MinhaTabela com duas colunas é a seguinte:
Create Table MinhaTabela (CodigoID int, dados xml)
Como resultado da execução dessa instrução teríamos.




Podemos usar o Front-end para também criar a coluna do tipo XML digitando diretamente a
definição 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 instrução
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 existência de aspas internas as mesmas
devem ser duplas.
Vamos então popular nossa tabela com 1 registro para a melhor compreensão do script de
inserção deste tipo de informação.


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 seleção para visualizarmos o resultado, teríamos 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 método modify.


O método modify permite a realização de alterações (inclusões e atualizações) e exclusões 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
informação XML armazenado na tabela Minhatabela criada:


Vamos inserir o elemento <produto descricao="Massa" valor="2.7" /> na coluna dados. A instrução
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 método modify em nosso update


Para verificar se o comando foi executado corretamente vamos usar a instrução 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   utilização   da    cláusula   before   e    que   especificamos    o   produto
(/cliente/compras/produto)[2]) através do índice 2 para indicar a posição depois da qual vamos
incluir o elemento.
Naturalmente da mesma forma poderíamos ter usado a cláusula after para incluir depois da
posição indicada na instrução SQL.
Para efetuar uma alteração em dados XML já cadastrados devemos usar a instrução replace que é
idêntica a instrução Update e permite alterar valores já cadastrados.
A utilização da instrução replace não pode ser usada para alterar nós, mas somente valores.


Como exemplo vamos alterar o nome do produto Milho para Ervilha usando a instrução 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 instrução XPath - (/cliente/compras/produto[@descricao="Milho"][1] - vai procurar o primeiro
produto que tenha a descrição ―Milho‖ e vai substituí-lo pelo texto – ―Ervilha‖. Para especificar que
desejamos substituir o primeiro usamos o índice [1].


Após a execução da instrução vamos novamente usar uma instrução 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
posição. Assim, para atualizar o valor do ultimo produto para 3.1 usamos a seguinte instrução:


UPDATE MinhaTabela
SET dados.modify
('replace      value     of   (/cliente/compras/produto/@descricao)[last()]                    with
"3.1"')
WHERE codigoid = 1


Após a execução da instrução vamos novamente usar uma instrução 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 cláusula 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 cláusula DELETE pois ela pode excluir valores, atributos,
elementos e até mesmo todo o documento XML persistido na base de dados.


Vamos então verificar alguns exemplos usando DELETE:


UPDATE MinhaTabela
SET dados.modify('
delete /cliente/compras/produto/@descricao[contains(.,"o")]')


Esta instrução exclui todos os elementos descricao cujo atributo nome contenha a string "o"


Por isso você sempre deve usar uma cláusula WHERE em uma instrução DELETE, como no
exemplo abaixo:


UPDATE MinhaTabela
SET dados.modify('
delete /cliente')
WHERE codigoid = 1


A instrução acima exclui todo o conteúdo XML para o cliente de código igual a 1. Como o cliente é
a raiz do documento XML basta definir a raiz do documento que todos os elementos serão
excluídos ao final o valor da coluna passa a conter uma string vazia ("").




                                                                                              189
Banco de Dados I



                                  Unidade 43 -                     Trabalho Final

43.1 Situação problema

Uma empresa de manipulação deseja automatizar o processo de compra de matéria prima,
composição do produto acabado e venda dos produtos que manipulados.
A empresa compra matéria prima dos fornecedores.
Esta matéria prima é armazenada com o Código, Nome da Matéria, Tipo, Valor por Grama,
Estoque.
A matéria prima é atualizada no estoque através de requisição quando da sua saída.
Para a compra da matéria prima é necessário gerar uma solicitação de compras.
Quando a matéria prima atinge seu ponto de reposição é gerado uma solicitação de compras.
A compra de matéria prima é efetuada através de uma nota fiscal, a qual obrigatoriamente contém
Número da Nota Fiscal, Data da Emissão, Hora da Emissão, Unidade da Mercadoria, Preço
Unitário, Descrição da Mercadoria comprada.
A nota fiscal atualiza estoque de matéria prima e atualização a solicitação que a gerou através do
número desta nota.
O produto manipulado é composto por Código, Nome do Produto, Fórmula, Data de Validade, e
Preço final.
Um Produto pode possuir várias matérias primas e uma matéria prima pode ser um componente
de vários produtos.
 Um Fornecedor pode fornecer várias matérias primas, e uma matéria prima pode ser fornecida por
vários fornecedores. Um fornecedor é composto de Código do Fornecedor, Razão Social, CNPJ,
IE, Endereço, 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 vão desde farmácias, clínicas, laboratórios, a
atacados.
    Os clientes são atendidos no balcão, por vendedores (funcionários) tanto In loco como por
televendas, gerando pedidos.
As notas fiscais de vendas serão atendidas conforme os pedidos gerados, a qual contém
obrigatoriamente as seguintes informações: Número da Nota Fiscal, Data da Emissão, Hora da
Emissão, Unidade da Mercadoria, Preço Unitário, Preço Total do produto, total da nota fiscal,
Descrição do produto, nome do vendedor, condições de pagamento, número do pedido.
As vendas geram um arquivo de contas a receber, com as seguintes informações: Código, Código
do Cliente, Data da Emissão, Data do vencimento, Número da Parcela, Valor da Parcela, e
Número da Nota Fiscal.
A nota fiscal de venda atualiza o estoque de produtos acabados.
Em caso de devolução, é gerada uma nota de devolução e atualizado o estoque.



                                                                                              190
Banco de Dados I




                   191

Banco de dados i

  • 1.
  • 2.
    UNIDADE 1 - INTRODUÇÃO AO BANCO DE DADOS ....................................................................................................... 3 1.1 INTRODUÇÃO ............................................................................................................................................................... 3 UNIDADE 2 - CONCEITOS E ARQUITETURAS - SGBD....................................................................................................... 4 2.1 AS LINGUAGENS PARA MANIPULAÇÃO DE DADOS: .............................................................................................................. 4 2.2 CLASSIFICAÇÃO DOS SGBDS ........................................................................................................................................... 4 2.3 O MODELO DE REDE 3-3-1 ............................................................................................................................................ 4 2.4 O MODELO HIERÁRQUICO 3-3-2: ................................................................................................................................... 5 2.5 O MODELO RELACIONAL 3-3-3: ..................................................................................................................................... 5 UNIDADE 3 - MODELAGEM DE DADOS UTILIZANDO O MODELO ENTIDADE RELACIONAMENTO (ER) ........................... 8 3.1 ELEMENTOS DO MODELO ENTIDADE-RELACIONAMENTO ...................................................................................................... 8 3.2 TIPOS E INSTÂNCIAS DE RELACIONAMENTO: ..................................................................................................................... 10 3.3 RESUMO DOS OBJETOS GRÁFICOS:.................................................................................................................................. 14 3.4 MODELO ENTIDADE RELACIONAMENTO ESTENDIDO: ......................................................................................................... 15 3.5 ESPECIALIZAÇÃO ......................................................................................................................................................... 16 3.6 GENERALIZAÇÃO:........................................................................................................................................................ 17 3.7 “LATTICE” OU MÚLTIPLA HERANÇA: .............................................................................................................................. 19 3.8 DICAS PARA A ELABORAÇÃO DE UM DIAGRAMA E-R: .......................................................................................................... 20 UNIDADE 4 - O MODELO RELACIONAL ........................................................................................................................ 22 4.1 O MODELO RELACIONAL .............................................................................................................................................. 22 4.2 DOMÍNIOS, TUPLAS, ATRIBUTOS E RELAÇÕES ................................................................................................................... 22 4.3 ATRIBUTO CHAVE DE UMA RELAÇÃO .............................................................................................................................. 23 4.4 CHAVE PRIMÁRIA ....................................................................................................................................................... 24 4.5 CHAVE CANDIDATA ..................................................................................................................................................... 25 4.6 CHAVE ESTRANGEIRA .................................................................................................................................................. 25 4.7 MAPEAMENTO DO MODELO ENTIDADE RELACIONAMENTO PARA O MODELO RELACIONAL ....................................................... 25 4.8 NORMALIZAÇÃO DE DADOS .......................................................................................................................................... 29 UNIDADE 5 - SQL (STRUCTURED QUERY LANGUAGE) .................................................................................................. 33 5.1 INTRODUÇÃO ............................................................................................................................................................. 33 5.2 DML (DATA MANIPULATION LANGUAGE): ...................................................................................................................... 33 5.3 DCL (DATA CONTROL LANGUAGE): ............................................................................................................................... 33 5.4 TIPOS DE DADOS: ....................................................................................................................................................... 34 5.5 EXPRESSÕES E OPERADORES: ........................................................................................................................................ 34 5.6 TIPOS DE OPERADORES ................................................................................................................................................ 35 UNIDADE 6 - CRIAÇÃO DE TABELAS............................................................................................................................. 37 6.1 TUTORIAL:................................................................................................................................................................. 37 6.2 CRIANDO TABELAS ...................................................................................................................................................... 37 6.3 PARÂMETROS DE CAMPOS NA CRIAÇÃO DE TABELAS: ........................................................................................................ 38 6.4 VALORES NULOS ........................................................................................................................................................ 38 6.5 CHAVE PRIMÁRIA ....................................................................................................................................................... 38 6.6 CHAVE ESTRANGEIRA: ................................................................................................................................................. 39 6.7 INTEGRIDADE REFERENCIAL: ......................................................................................................................................... 39 6.8 ON UPDATE: ........................................................................................................................................................... 39 6.9 ON DELETE: ............................................................................................................................................................ 40 6.10 REMOVENDO TABELAS................................................................................................................................................. 41 UNIDADE 7 - COMANDOS PARA ALTERAR TABELAS .................................................................................................... 42 7.1 ALTERAÇÃO DE TABELAS CRIADAS .................................................................................................................................. 42
  • 3.
    7.2 ADICIONAR COLUNAS A UMA TABELA – ADD ................................................................................................................... 42 7.3 REMOVER COLUNAS DE UMA TABELA – DROP ................................................................................................................. 42 7.4 RENOMEANDO COLUNAS DE UMA TABELA – RENAME ..................................................................................................... 42 7.5 MODIFICANDO COLUNAS DE UMA TABELA – MODIFY ...................................................................................................... 43 UNIDADE 8 - MODIFICANDO DADOS ........................................................................................................................... 44 8.1 INSERINDO DADOS ...................................................................................................................................................... 44 8.2 INSERINDO DADOS POR MEIO DE UM SELECT .................................................................................................................. 44 8.3 EXCLUINDO INFORMAÇÕES ........................................................................................................................................... 45 8.4 ATUALIZANDO DADOS DE UMA TABELA............................................................................................................................ 45 UNIDADE 9 - CONSULTA EM UMA ÚNICA TABELA SQL ................................................................................................ 47 9.1 SINTAXE BÁSICA DE CONSULTAS SQL ............................................................................................................................. 47 9.2 EXEMPLOS DE CONSULTAS SQL ..................................................................................................................................... 47 9.3 SELEÇÃO DE TODOS OS REGISTROS COM COLUNAS ESPECÍFICAS ........................................................................................... 47 9.4 REDEFININDO O NOME DAS COLUNAS ............................................................................................................................ 48 9.5 SELEÇÃO DE REGISTROS COM EXIBIÇÃO DE STRINGS .......................................................................................................... 49 UNIDADE 10 - UNIDADE 10: FUNÇÕES COM STRINGS ............................................................................................... 51 10.1 FUNÇÕES COM STRINGS ............................................................................................................................................... 51 10.2 SINTAXE DA FUNÇÃO DE CONCATENAÇÃO DE STRINGS ....................................................................................................... 51 10.3 CONTROLE DE MAIÚSCULAS E MINÚSCULAS .................................................................................................................... 51 10.4 SEGMENTANDO UMA STRING ........................................................................................................................................ 52 UNIDADE 11 - CRITÉRIOS DE CONSULTA – CLÁUSULA WHERE .................................................................................. 54 11.1 CLÁUSULA WHERE ...................................................................................................................................................... 54 11.2 CONSULTAS SIMPLES COM CLÁUSULA WHERE .................................................................................................................. 55 11.3 SELECIONANDO DADOS NÃO REPETIDOS ......................................................................................................................... 56 11.4 SELECIONANDO ALGUNS DADOS..................................................................................................................................... 57 UNIDADE 12 - PREDICADOS ...................................................................................................................................... 60 12.1 PREDICADOS LIKE E NOT LIKE: .................................................................................................................................... 60 12.2 PREDICADOS BETWEEN... AND E NOT BETWEEN... AND ............................................................................................ 61 12.3 PREDICADOS IN E NOT IN:......................................................................................................................................... 61 12.4 PREDICADO IS NULL E IS NOT NULL ............................................................................................................................ 62 12.5 SELEÇÃO COM OPERADORES LÓGICOS ............................................................................................................................ 63 UNIDADE 13 - FUNÇÕES DE AGRUPAMENTO E ORDENAÇÃO .................................................................................... 64 13.1 OBTENDO INFORMAÇÕES ESTATÍSTICAS .......................................................................................................................... 64 13.2 AGRUPAMENTO UTILIZANDO GROUP BY: ...................................................................................................................... 65 13.3 UTILIZANDO WHERE E GROUP BY: ............................................................................................................................. 65 13.4 SELEÇÃO DE REGISTROS COM AGRUPAMENTO PELA CLÁUSULA GROUP BY E HAVING: .......................................................... 66 13.5 ORDENAÇÃO DAS CONSULTAS ....................................................................................................................................... 66 UNIDADE 14 - CONSULTAS EM MÚLTIPLAS TABELAS ................................................................................................ 68 14.1 CONSULTAS EM MÚLTIPLAS TABELAS ............................................................................................................................. 68 14.2 JOIN ......................................................................................................................................................................... 68 14.3 EQUIJOIN – JOIN DE IGUALDADE .................................................................................................................................... 69 14.4 EXERCÍCIOS SUGERIDOS ............................................................................................................................................... 70 14.5 EQUIJOINS E OPERADORES LÓGICOS: .............................................................................................................................. 70 14.6 EQUIJOINS ENTRE MAIS DE DUAS TABELAS ........................................................................................................................ 71 14.7 REDEFINIÇÃO DO NOME DE TABELAS .............................................................................................................................. 71 14.8 OUTROS TIPOS DE JOINS - OUTER JOINS.......................................................................................................................... 71 14.9 OUTROS TIPOS DE JOINS - SELF JOINS ............................................................................................................................. 72
  • 4.
    UNIDADE 15 - TRABALHANDO COM DATAS .............................................................................................................. 75 15.1 DATAS EM MYSQL ..................................................................................................................................................... 75 15.2 RECUPERANDO INFORMAÇÕES ESPECÍFICAS DE DATA......................................................................................................... 75 UNIDADE 16 - EXERCÍCIOS EXTRAS ........................................................................................................................... 76 UNIDADE 17 - PROJETO FINAL - REVISÃO ................................................................................................................. 80 UNIDADE 18 - PRINCIPAIS BANCOS DE DADOS ......................................................................................................... 81 UNIDADE 19 - MICROSOFT ACCESS ........................................................................................................................... 82 19.1 INTRODUÇÃO ............................................................................................................................................................. 82 19.2 ARQUIVOS DE BANCO DE DADOS DO ACCESS ........................................................................................................ 82 19.3 INICIANDO O ACCESS ............................................................................................................................................. 86 19.4 PRIMEIROS CONTATOS .......................................................................................................................................... 86 19.5 MENUS E BARRAS DE FERRAMENTAS .................................................................................................................... 87 19.6 JANELA BANCO DE DADOS ..................................................................................................................................... 88 19.7 CRIANDO UM NOVO BANCO DE DADOS ................................................................................................................ 91 19.8 ABRINDO UM BANCO DE DADOS ........................................................................................................................... 92 19.9 FECHANDO UM BANCO DE DADOS ........................................................................................................................ 93 UNIDADE 20 - TABELAS ............................................................................................................................................. 95 20.1 CRIANDO UMA NOVA TABELA ............................................................................................................................... 98 20.2 CRIAR UMA TABELA USANDO O ASSISTENTE DE TABELA ....................................................................................................... 98 20.3 CRIAR UMA TABELA INSERINDO DADOS EM UMA FOLHA DE DADOS ........................................................................................ 99 20.4 CRIAR UMA TABELA NO MODO DESIGN .......................................................................................................................... 100 20.5 TIPOS DE DADOS .................................................................................................................................................. 101 20.6 PROPRIEDADES DE CAMPOS ................................................................................................................................ 103 20.7 BARRA DE FERRAMENTAS DO MODO DESIGN DE TABELA ................................................................................... 104 20.8 EDITANDO DADOS NO MODO FOLHA DE DADOS................................................................................................. 105 UNIDADE 21 - RELACIONAMENTOS ........................................................................................................................ 109 21.1 BANCO DE DADOS RELACIONAL ........................................................................................................................... 109 21.2 TIPOS DE RELACIONAMENTOS ............................................................................................................................. 109 21.3 DEFININDO OS RELACIONAMENTOS .................................................................................................................... 111 UNIDADE 22 - CONSULTAS...................................................................................................................................... 114 22.1 O QUE SÃO AS CONSULTAS NO ACCESS ............................................................................................................... 114 22.2 CRIAR UMA CONSULTA USANDO O ASSISTENTE DE CONSULTA ............................................................................................ 114 22.3 CRIAR UMA CONSULTA USANDO O MODO DESGIN............................................................................................................ 115 22.4 TIPOS DE CONSULTAS .......................................................................................................................................... 118 UNIDADE 23 - FORMULÁRIOS ................................................................................................................................. 126 23.1 O QUE SÃO FORMULÁRIOS? ................................................................................................................................ 126 23.2 CRIANDO UM NOVO FORMULÁRIO ..................................................................................................................... 127 23.3 CAIXA DE FERRAMENTAS ..................................................................................................................................... 130 23.4 SOBRE AS SEÇÕES DE UM FORMULÁRIO .............................................................................................................. 133 23.5 SUBFORMULÁRIOS .............................................................................................................................................. 135 UNIDADE 24 - RELATÓRIOS ..................................................................................................................................... 140 24.1 O QUE SÃO RELATÓRIOS? .................................................................................................................................... 140 24.2 CRIANDO UM NOVO RELATÓRIO ......................................................................................................................... 141 24.3 CAIXA DE FERRAMENTAS ..................................................................................................................................... 144
  • 5.
    UNIDADE 25 - PÁGINA DE DADOS........................................................................................................................... 146 25.1 PARA CRIAR UMA PÁGINA DE ACESSO A DADOS ................................................................................................. 146 25.2 CRIAR UMA PÁGINA DE ACESSO .......................................................................................................................... 146 UNIDADE 26 - PERSONALIZAÇÃO E UTILITÁRIOS..................................................................................................... 152 26.1 CONFIGURAÇÕES DE INICIALIZAÇÃO ................................................................................................................... 152 26.2 COMPACTANDO UM BANCO DE DADOS ......................................................................................................................... 153 26.3 REPARANDO UM BANCO DE DADOS .................................................................................................................... 154 26.4 PROTEGENDO UM APLICATIVO............................................................................................................................ 154 UNIDADE 27 - MYSQL ............................................................................................................................................. 157 27.1 INTRODUÇÃO ........................................................................................................................................................... 157 UNIDADE 28 - O FRONT-END .................................................................................................................................. 158 28.1 ALGUNS EXEMPLOS................................................................................................................................................... 158 UNIDADE 29 - CONECTANDO AO BANCO DE DADOS............................................................................................... 159 29.1 ATRAVÉS DE LINGUAGENS DE PROGRAMAÇÃO ................................................................................................................ 159 29.2 ATRAVÉS DO FRONT-END ........................................................................................................................................... 160 UNIDADE 30 - CONHECENDO A INTERFACE ............................................................................................................. 163 30.1 PHPMYADMIN ......................................................................................................................................................... 163 30.2 MYSQL QUERY BROWSER ......................................................................................................................................... 163 30.3 ACESSANDO UMA BASE DE DADOS ............................................................................................................................... 164 UNIDADE 31 - CRIANDO UMA NOVA BASE DE DADOS ............................................................................................ 166 31.1 INTERFACE E COMANDO............................................................................................................................................. 166 UNIDADE 32 - CRIANDO TABELAS ........................................................................................................................... 167 32.1 INTERFACE .............................................................................................................................................................. 167 UNIDADE 33 - CRIANDO CONSULTAS ...................................................................................................................... 170 33.1 INTERFACE .............................................................................................................................................................. 170 UNIDADE 34 - SQL SERVER ...................................................................................................................................... 172 34.1 INTRODUÇÃO ........................................................................................................................................................... 172 UNIDADE 35 - O FRONT-END .................................................................................................................................. 174 35.1 FERRAMENTA NATIVA ................................................................................................................................................ 174 UNIDADE 36 - CONECTANDO AO BANCO DE DADOS............................................................................................... 175 36.1 ATRAVÉS DE LINGUAGENS DE PROGRAMAÇÃO ................................................................................................................ 175 36.2 ATRAVÉS DO FRONT-END ........................................................................................................................................... 176 UNIDADE 37 - CONHECENDO A INTERFACE ............................................................................................................. 177 37.1 APLICATIVO NATIVO .................................................................................................................................................. 177 37.2 ACESSANDO UMA BASE DE DADOS ............................................................................................................................... 177 UNIDADE 38 - CRIANDO UMA NOVA BASE DE DADOS ............................................................................................ 178 38.1 INTERFACE E COMANDO............................................................................................................................................. 178 UNIDADE 39 - CRIANDO TABELAS ........................................................................................................................... 180 39.1 INTERFACE .............................................................................................................................................................. 180
  • 6.
    UNIDADE 40 - CRIANDO CONSULTAS ...................................................................................................................... 181 40.1 INTERFACE .............................................................................................................................................................. 181 UNIDADE 41 - CONHECENDO XML .......................................................................................................................... 182 41.1 INTRODUÇÃO ........................................................................................................................................................... 182 UNIDADE 42 - XML NO SQL SERVER ........................................................................................................................ 183 42.1 CRIANDO COLUNAS DO TIPO XML ................................................................................................................................ 183 42.2 INSERINDO VALORES .................................................................................................................................................. 184 42.3 ATUALIZANDO VALORES ............................................................................................................................................. 185 42.4 DELETANDO VALORES ............................................................................................................................................... 189 UNIDADE 43 - TRABALHO FINAL ............................................................................................................................. 190 43.1 SITUAÇÃO PROBLEMA ................................................................................................................................................ 190
  • 7.
    Banco de DadosI Unidade 1 - Introdução ao Banco de Dados 1.1 Introdução A tecnologia aplicada aos métodos de armazenamento de informações 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 implícito. Porém, o significado do termo ―banco de dados‖ é mais restrito que simplesmente a definição dada acima. Um banco de dados possui as seguintes propriedades: Banco de dados é uma coleção lógica coerente de dados com um significado inerente; uma disposição desordenada dos dados não pode ser referenciada como um banco de dados; Banco de dados é projetado, construído e populado com dados para um propósito específico; um banco de dados possui um conjunto pré-definido de usuários e aplicações; Banco de dados representa algum aspecto do mundo real, o qual é chamado de ―minimundo‖; qualquer alteração efetuada no minimundo é automaticamente refletida no banco de dados. Banco de dados pode ser criado e mantido por um conjunto de aplicações desenvolvidas especialmente para esta tarefa ou por um ―Sistema Gerenciador de Banco de Dados‖ (SGBD). Um SGBD permite aos usuários criarem e manipularem bancos de dados de propósito gerais. O conjunto formado por um banco de dados mais as aplicações que manipulam o mesmo é chamado de ―Sistema de Banco de Dados‖. Banco de Dados: é uma coleção de dados inter-relacionados, representando informações sobre um domínio específico. Exemplos: lista telefônica, 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 específicos para facilitar a manipulação das informações dos bancos de dados e o desenvolvimento de programas aplicativos. 3
  • 8.
    Banco de DadosI Unidade 2 - Conceitos e Arquiteturas - SGBD 2.1 As Linguagens para Manipulação de Dados: Para a definição dos esquemas conceituais e internos pode-se utilizar uma linguagem chamada DDL (Data Definition Language - Linguagem de Definição de Dados). O SGBD possui um compilador DDL que permite a execução das declarações para identificar as descrições dos esquemas e para armazená-las no catálogo do SGBD. A DDL é utilizada em SGBDs onde a separação entre os níveis internos e conceituais não é muito clara. Em um SGBD em que a separação entre os níveis conceitual e interno são bem claras, é utilizado outra linguagem, a SDL (Storage Definition Language - Linguagem de Definição de Armazenamento) para a especificação do esquema interno. A especificação do esquema conceitual fica por conta da DDL. Em um SGBD que utiliza a arquitetura três esquemas, é necessária a utilização de mais uma linguagem para a definição de visões, a VDL (Vision Definition Language - Linguagem de Definição de Visões). Uma vez que o esquema esteja compilado e o banco de dados esteja populado, usa-se uma linguagem para fazer a manipulação dos dados, a DML (Data Manipulation Language - Linguagem de Manipulação de Dados). 2.2 Classificação dos SGBDs O principal critério para se classificar um SGBD é o modelo de dados no qual é baseado. A grande maioria dos SGBDs contemporâneos é baseada no modelo relacional, alguns em modelos conceituais e alguns em modelos orientados a objetos. Outras classificações são: Usuários: um SGBD pode ser monousuário, comumente utilizado em computadores pessoais ou multiusuários, utilizado em estações de trabalho, minicomputadores e máquinas de grande porte; Localização: um SGBD pode ser localizado ou distribuído; se ele for localizado, então todos os dados estarão em uma máquina (ou em um único disco) ou distribuído, onde os dados estarão distribuídos por diversas máquinas (ou diversos discos); Ambiente: ambiente homogêneo é o ambiente composto por um único SGBD e um ambiente heterogêneo é o ambiente composto por diferentes SGBDs. 2.3 O Modelo de Rede 3-3-1 4
  • 9.
    Banco de DadosI Os dados são representados por coleções de registros e os relacionamentos por elos. 2.4 O Modelo Hierárquico 3-3-2: Os dados e relacionamentos são representados por registros e ligações, respectivamente. Os registros são organizados como coleções arbitrárias de árvores. 2.5 O Modelo Relacional 3-3-3: 5
  • 10.
    Banco de DadosI Os meta dados são representados por tabelas, contendo linhas e colunas, onde são ligadas por colunas. Cada tabela contém uma ou mais colunas como identificadores. Laboratório 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 utilização de um sistema de banco de dados? _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ 6
  • 11.
    Banco de DadosI Descrever o modelo relacional de dados. _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ Definir os seguintes termos: Linguagem de definição de dados; _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ Linguagem de manipulação de dados. _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ 7
  • 12.
    Banco de DadosI 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 eficiência. Baseiam-se na percepção do mundo real, que consiste em uma coleção de objetos básicos, chamados entidades e em relacionamentos entre esses objetos. Para identificar um modelo relacional, utilizamos o Diagrama de Estrutura de Dados. Abaixo identificaremos todas as características do Modelo E-R Entidade: objeto do mundo real, concreto ou abstrato e que possui existência independente. O objeto básico tratado pelo modelo ER é a ―entidade‖. Uma entidade pode ser concreta, como uma caneta ou uma pessoa, ou abstrata, como um conceito ou uma sensação. No banco de dados de uma empresa, por exemplo, são entidades: Funcionário, cliente, Departamento, etc. Cada entidade representa objetos com as mesmas características. Um banco de dados, portanto, compreende uma coleção de conjuntos de entidades do mesmo tipo. O símbolo que representa a entidade no modelo E-R é um retângulo 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: São propriedades (características) que identificam as entidades. Cada entidade possui uma coleção de elementos de dados. A cada atributo de uma entidade é associado um domínio de valores. Esses domínios podem ser um conjunto de números inteiros, números reais, cadeias de caracteres ou qualquer outro tipo de valor que o atributo pode assumir. Os atributos são representados apenas pelo seu nome ligado à entidade por uma linha reta, por exemplo: FUNCIONÁRIO Nome 8
  • 13.
    Banco de DadosI Podemos ter vários tipos de atributos: simples, composto, multivalorado e determinante. Vejamos as características de cada um deles: Simples ou atômico: não possui qualquer característica especial. Por exemplo, o nome Da empresa é um atributo sem qualquer característica especial. EMPRESA Nome Composto: o seu conteúdo é formado por itens menores. O conteúdo de um atributo composto pode ser dividido em vários atributos simples. Rua EMPRESA Endereço CEP Bairro Multivalorado: o seu conteúdo pode ser formado por mais de uma informação. É 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 instâncias de uma entidade, ou seja, é único para as instâncias de uma entidade. É indicado sublinhando-se o nome do atributo. No exemplo de uma empresa, o CNPJ é um atributo determinante, pois não podem existir duas empresas com o mesmo valor nesse atributo. EMPRESA CNPJ Vejamos um exemplo no qual se aplicam os conceitos vistos até aqui: Uma empresa necessita armazenar os dados de seus funcionários, atualmente em um fichário. Os dados são a Matrícula, o Nome, o Endereço (Rua, CEP e Bairro), o Telefone (o funcionário pode ter mais de um) e o cargo. 9
  • 14.
    Banco de DadosI Matrícula Nome Rua EMPRESA Endereço CEP Bairro * Telefone Cargo Laboratório Identifique os atributos e o tipo do atributo nas seguintes entidades. CLIENTES - FUNCIONARIOS - EMPRESA - PRODUTOS 3.2 Tipos e Instâncias de Relacionamento: Além de conhecer detalhadamente os tipos entidade, é muito importante conhecer também os relacionamentos entre estes tipos entidades. Relacionamento: é o tipo de ocorrência existente entre entidades. O Símbolo 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 três tipos de relacionamentos entre entidades: um-para-um, um-para-vários e vários-para- vários. 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 funcionário-gerente só pode chefiar um único departamento. 10
  • 15.
    Banco de DadosI A Gerencia B Funcionário Departamento e1 e2 d1 e3 e4 d2 e5 d3 e6 e7 1:1 1 chefia 1 Funcionário Departamento Este é um caso particular, pois outra empresa poderia ter o mesmo gerente chefiando vários departamentos. Vale lembrar que os modelos de dados são utilizados num determinado contexto. Muda-se o contexto, muda-se também o modelo de dados. Um-para-Vários: é 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 funcionário só pode ser alocado em um único departamento, porém num departamento podem trabalhar vários funcionários. A Trabalha Para B Funcionário Departamento e1 d1 e2 e3 d2 e4 d3 e5 e6 e7 N:1 N Trabalha para 1 Funcionário Departamento Esta representação acaba resultando num relacionamento 1: N invertido. 11
  • 16.
    Banco de DadosI Vários-para-vários: é quando várias (N) entidade de A se relacionam com várias(M) entidade de B. Exemplo para esse tipo de relacionamento é o que ocorre entre um funcionário e os projetos de uma empresa. Um funcionário pode trabalhar em vários projetos, e um projeto pode ser executado por mais de um funcionário. A Trabalha Em B Funcionário Projeto e1 e2 p1 e3 e4 p2 p3 N:M N Trabalha M Funcionário Projeto em 1 Cardinalidade: define o número máximo de ocorrências em um relacionamento Para se determinar a cardinalidade, deve-se fazer a pergunta relativa ao relacionamento em ambas as direções. No exemplo a seguir, temos: 1 N possui Departamento Funcionário (1:N) (1:1) - Um departamento possui quantos funcionários? No mínimo 1 e no máximo N. - Um funcionário está alocado em quantos departamentos? Em no mínimo 1 e no máximo 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 relação de locação e outra de gerência com a entidade Funcionário. Nesse caso, existem dois relacionamentos entre as entidades. 12
  • 17.
    Banco de DadosI gerência 1 N Funcionário Departamento 1 1 locação Traduzindo o diagrama temos: - cada departamento da empresa possui vários (N) funcionários lotados nele. - um departamento possui um único funcionário que ocupa o cargo de gerente. Grau de um Relacionamento: O ―grau‖ de um tipo relacionamento é o número de tipos entidade que participam do tipo relacionamento. O grau de um relacionamento é ilimitado, porém, a partir do grau três (ternário), a compreensão e a dificuldade de se desenvolver a relação corretamente se tornam extremamente complexas. Relacionamento Ternário: alguns relacionamentos precisam ligar 3 entidades, como no exemplo que se segue. Numa indústria, um fornecedor pode fornecer várias peças para vários projetos. Um projeto pode ter vários fornecedores para várias peças. E uma peça pode ter vários fornecedores para vários projetos. N M 1 PFPj Fornecedor Peça Projeto Auto relacionamento: uma entidade pode se relacionar com ela mesma. Observe o exemplo: Numa empresa, um funcionário pode chefiar vários funcionários, porém ele também é um funcionário. N Chefia Funcionário 1 Entidade Dependente: uma entidade pode ter sua existência vinculada à existência de outra entidade. 13
  • 18.
    Banco de DadosI Uma empresa necessita armazenar os dados dos dependentes menores dos funcionários. A entidade Dependente só existe porque existe a entidade Funcionário 1 N Funcionário Possui Dependente O símbolo que representa a entidade dependente é um retângulo dentro de outro retângulo, com o nome da entidade escrito no seu interior. Relacionamento É-Um (Generalização/Especialização): ocorre quando uma entidade com seus atributos englobam entidades especializadas com seus atributos específicos. No esquema a seguir, a entidade Cliente engloba seus atributos e também os atributos específicos da entidade Pessoa Física, assim como os de Pessoa Jurídica. Cliente Pessoa Pessoa Jurídica Física 3.3 Resumo dos objetos gráficos: O diagrama Entidade Relacionamento é composto por um conjunto de objetos gráficos que visa representar todos os objetos do modelo Entidade Relacionamento tais como entidades, atributos, atributos chaves, relacionamentos, restrições estruturais, etc. O diagrama ER fornece uma visão lógica do banco de dados, fornecendo um conceito mais generalizado de como estão estruturados os dados de um sistema. Os objetos que compõem o diagrama ER estão listados a seguir, ENTIDADE ATRIBUTO ATRIBUTO CHAVE ENTIDADE * ATRIBUTO MULTIVALORADO FRACA ATRIBUTO COMPOSTO RELACIONAMENT O 14
  • 19.
    Banco de DadosI 1 1 1 N N M E1 R E2 E1 R E2 E1 R E2 1 Taxa de Cardinalidade Taxa de Cardinalidade Taxa de Cardinalidade 1:1 para E1:E2 em R 1:N para E1:E2 em R N:M para E1:E2 em R Figura - Objetos que Compõem o Diagrama ER 3.4 Modelo Entidade Relacionamento Estendido: Os conceitos do modelo Entidade Relacionamento discutidos anteriormente são suficientes para representar logicamente a maioria das aplicações de banco de dados. Porém, com o surgimento de novas aplicações, surgiu também a necessidade de novas semânticas para a modelagem de informações mais complexas. O modelo Entidade Relacionamento Estendido (ERE) visa fornecer esta semântica para permitir a representação de informações complexas. É importante frisar que embora o modelo ERE trate classes e subclasses, ele não possui a mesma semântica de um modelo orientado a objetos. O modelo ERE engloba todos os conceitos do modelo ER mais os conceitos de subclasse, superclasse, generalização e especialização e o conceito de herança de atributos. Subclasses, Superclasses e Especializações: 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 são significativas e precisam ser representadas explicitamente devido ao seu significado à aplicação de banco de dados. Leve em consideração o seguinte exemplo: Para um banco de dados de uma empresa temos o tipo entidade empregado, o qual possui as seguintes características: nome, RG, CIC, número funcional, endereço completo (rua, número, complemento, CEP, bairro, cidade), sexo, data de nascimento e telefone (DDD e número); caso o (a) funcionário (a) seja um (a) engenheiro (a), então se deseja armazenar as seguintes informações: número do CREA e especialidade (Civil, Mecânico, Eletro/Eletrônico); caso o (a) funcionário (a) seja um (a) secretário (a), então se deseja armazenar as seguintes informações: qualificação (bi ou tri língua) e os idiomas no qual possui fluência verbal e escrita. Se as informações número do CREA, especialidade, tipo e idiomas forem representadas diretamente no tipo entidade empregado estaremos representando informações de um conjunto limitados de entidades empregado para os todos os funcionários da empresa. Neste caso, podemos criar duas subclasses do tipo entidade empregado: engenheiro e secretária, as quais irão conter as informações acima citadas. Além disto, engenheiro e secretária podem ter relacionamentos específicos. Uma entidade não pode existir meramente como componente de uma subclasse. Antes de ser componente de uma subclasse, uma entidade deve ser componente de uma superclasse. 15
  • 20.
    Banco de DadosI Isto leva ao conceito de herança de atributos; ou seja, a subclasse herda todos os atributos da superclasse. Isto porque a entidade de subclasse representa as mesmas características de uma mesma entidade da superclasse. Uma subclasse pode herdar atributos de superclasses diferentes. A figura abaixo mostra a representação diagramática do exemplo acima. nome dt. nasc. no. funcional sexo rg Empregado endereç o Função d qualificação No registro Engenheiro Secretária idiomas especialização Figura - Representação de Superclasse e Subclasses 3.5 Especialização Especialização é o processo de definição de um conjunto de classes de um tipo entidade; este tipo entidade é chamado de superclasse da especialização. O conjunto de subclasses é formado baseado em alguma característica que distingue as entidades entre si. No exemplo da figura 12, temos uma especialização, a qual pode chamar de função. Veja agora no exemplo da figura 13, temos a entidade empregado e duas especializações. Empregado Função Categoria Salarial d d Engenheiro Secretária Horista Mensalista 16
  • 21.
    Banco de DadosI Figura - Duas Especializações para Empregado: Função e Categoria Como visto anteriormente, uma subclasse pode ter relacionamentos específicos com outras entidades ou com a própria entidade que é a sua superclasse. Veja o exemplo da figura 14. N Projeto Empregado é liderado Função é N desenvolvid o por 1 lidera d N Engenheiro Secretária participa Figura - Relacionamentos Entre Subclasses e Entidades O processo de especialização nos permite: Definir um conjunto de subclasses de um tipo entidade; Associar atributos específicos adicionais para cada subclasse; Estabelecer tipos relacionamentos específicos entre subclasses e outros tipos entidades. 3.6 Generalização: A generalização pode ser pensada como um processo de abstração reverso ao da especialização, no qual são suprimidas as diferenças entre diversos tipos entidades, identificando suas características comuns e generalizando estas entidades em uma superclasse. no. funcional no. funcional qualificação No registro Engenheiro Secretária idiomas especialização nome rg nome rg 17
  • 22.
    Banco de DadosI Figura - Tipos Entidades Engenheiro e Secretária nome no. funcional Empregado rg d qualificação o n registro Engenheiro Função Secretária idiomas especialização Figura - Generalização Empregado para os Tipos Entidades Engenheiro e Secretária É importante destacar que existe diferença semântica entre a especialização e a generalização. Na especialização, podemos notar que a ligação entre a superclasse e as subclasses é feita através de um traço simples, indicando participação parcial por parte da superclasse. Analisando o exemplo da figura 12, é observado que um empregado não é obrigado a ser um engenheiro ou uma secretária. Na generalização, podemos notar que a ligação entre a superclasse e as subclasses é feita através de um traço duplo, indicando participação total por parte da superclasse. Analisando o exemplo da figura 16, é observado que um empregado é obrigado a ser um engenheiro ou uma secretária. A letra d dentro do círculo que especifica uma especialização ou uma generalização significa disjunção. Uma disjunção em uma especialização ou generalização indica que uma entidade do tipo entidade que representa a superclasse pode assumir apenas um papel dentro da mesma. 18
  • 23.
    Banco de DadosI Analisando o exemplo da figura 13 temos duas especializações para a superclasse Empregado, as quais são restringidas através de uma disjunção. Neste caso, um empregado pode ser um engenheiro ou uma secretária e o mesmo pode ser horista ou mensalista. Além da disjunção 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 especialização ou generalização. Analise a generalização no exemplo da figura 17. Suponha que uma peça fabricada em uma tornearia pode ser manufaturada ou torneada ou ainda, pode ter sido manufaturada e torneada. Descriçã o no. da peça Peça o No. Projeto Data Manufaturada Torneada Preço Ordem Serviço Figura - Uma Generalização com ―Overlap‖ 3.7 “Lattice” ou Múltipla Herança: Uma subclasse pode ser definida através de um ―lattice‖, ou múltipla herança, ou seja, ela pode ter diversas superclasses, herdando características de todas. Leve em consideração o seguinte exemplo: Uma construtora possui diversos funcionários, os quais podem ser engenheiros ou secretárias. Um funcionário pode também ser assalariado ou horista. Todo gerente de departamento da construtora deve ser um engenheiro e assalariado. Empregado Função Categoria Salarial d d 19 Secretaria Engenheiro Mensalista Horista
  • 24.
    Banco de DadosI Figura 18 - Um ―Lattice‖ com a Subclasse Gerente Compartilhada Neste caso então, um gerente será um funcionário que além de possuir as características próprias de Gerente, herdará as características de Engenheiro e de Mensalista. 3.8 Dicas para a elaboração de um diagrama E-R: A presença de um substantivo usualmente indica uma entidade; A presença de um verbo é uma forte indicação de um relacionamento; Um adjetivo, que é uma qualidade, é uma forte indicação de um atributo; Um advérbio temporal, qualificando o verbo, é uma indicação de um atributo do relacionamento. Laboratório Etapas 1) Construa um diagrama E-R para um hospital com um conjunto de pacientes e um conjunto de médicos. Registros de diversos testes realizados são associados a cada paciente. 2) Construa um diagrama E-R para uma companhia de seguros de automóveis com um conjunto de clientes, onde cada um possui certo número de carros. Cada carro tem um número de acidentes associados a ele. 3) Explique a diferença entre uma entidade (conjunto entidade) e uma ocorrência (instância) de uma entidade. 4) O que é o papel de uma entidade em um relacionamento? Quando é necessário 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 binários. 20
  • 25.
    Banco de DadosI 7) Modifique o diagrama abaixo para especificar o seguinte: a) Um curso não pode estar vazio, isto é, deve possuir alguma disciplina em seu currículo. b) Um aluno, mesmo que não 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 exercício anterior na notação de Peter Chen, especificando as cardinalidades mínimas e máximas (min. Max). 21
  • 26.
    Banco de DadosI Unidade 4 - O Modelo Relacional 4.1 O Modelo Relacional Nesta unidade é apresentado o modelo relacional de forma teórica e a forma como o mesmo pode ser derivado do modelo Entidade-Relacionamento apresentado na unidade anterior. Assim, com o conteúdo visto na unidade anterior podemos modelar os dados de uma aplicação, através do modelo ER, e mapeá-los para o modelo relacional, de forma a implementar no banco de dados. 4.2 Domínios, Tuplas, Atributos e Relações Um domínio D é um conjunto de valores atômicos, sendo que por atômico, podemos compreender que cada valor do domínio é indivisível. Durante a especificação do domínio é importante destacar o tipo, o tamanho e a faixa do atributo que está sendo especificado. Por exemplo: Coluna Tipo Tamanho Faixa RG Numérico 10,0 03000000- 25999999 Nome Caractere 30 a-z, A-Z Salário Numérico 5,2 00100,00- 12999,99 Um esquema de relação R, denotado por R(A1, A2,..., An), onde cada atributo Ai é o nome do papel desempenhado por um domínio D no esquema relação R, onde D é chamado domínio de Ai e é denotado por dom (Ai). O grau de uma relação R é o número de atributos presentes em seu esquema de relação. A instância r de um esquema relação denotado por r(R) é um conjunto de n-tuplas: r = [t1, t2, ... , tn] onde os valores de [t1, t2, ... , tn] devem estar contidos no domínio D. O valor nulo também pode fazer parte do domínio de um atributo e representa um valor não conhecido para uma determinada tupla. 22
  • 27.
    Banco de DadosI 4.3 Atributo Chave de uma Relação Uma relação pode ser definida como um conjunto de tuplas distintas. Isto implica que a combinação dos valores dos atributos em uma tupla não pode se repetir na mesma tabela. Existirá sempre um subconjunto de atributos em uma tabela que garantem que não haverá valores repetidos para as diversas tuplas da mesma, garantindo que t1[SC]  t2[SC]. SC é chamada de superchave de um esquema de relação. Toda relação possui ao menos uma superchave - o conjunto de todos os seus atributos. Uma chave C de um esquema de relação R é uma superchave de R com a propriedade adicional que removendo qualquer atributo A de K, resta ainda um conjunto de atributos K‘ que não é uma superchave de R. Uma chave é uma superchave da qual não se pode extrair atributos. Por exemplo, o conjunto: (RA, Nome, Endereço) é uma superchave para estudante, porém, não é uma chave, pois se tirarmos o campo Endereço 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) não 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 Nome Dt. Relação Sexo Responsável Dependente Nascimento 10101010 Jorge 27/12/86 Filho Masculin o 10101010 Luiz 18/11/79 Filho Masculin o 20202020 Fernanda 14/02/69 Cônjuge Feminin o 20202020 Ângelo 10/02/95 Filho Masculin o Quando uma relação possui mais que uma chave (não confundir com chave composta) - como, por exemplo, RG e CIC para empregados - cada uma destas chaves são chamadas de chaves candidatas. Uma destas chaves candidatas deve ser escolhida como chave primária. Uma chave estrangeira CE de uma tabela R1 em R2 ou vice-versa, especifica um relacionamento entre as tabelas R1 e R2. 23
  • 28.
    Banco de DadosI Tabela DEPARTAMENTO Nome Númer RG o Gerente Contabilidade 1 10101010 Engenharia 2 30303030 Civil Engenharia 3 20202020 Mecânica Tabela EMPREGADO Nome RG CIC Depto. RG Salário Supervisor João Luiz 10101010 11111111 1 NULO 3.000,00 Fernando 20202020 22222222 2 10101010 2.500,00 Ricardo 30303030 33333333 2 10101010 2.300,00 Jorge 40404040 44444444 2 20202020 4.200,00 Renato 50505050 55555555 3 20202020 1.300,00 4.4 Chave Primária É 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 Código, denominado, portanto, chave primária (PRIMARY KEY). 24
  • 29.
    Banco de DadosI 4.5 Chave Candidata É qualquer conjunto de atributos que consegue satisfazer ao critério de chave primária. Toda tabela tem pelo menos uma chave candidata. Quando existe mais de uma chave candidata, deve- se escolher para chave primária o campo que tenha a menor possibilidade de ter um valor nulo. 4.6 Chave Estrangeira É o atributo de uma tabela que é chave primária 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 primária 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 básicos, 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, são inseridos apenas os componentes simples de cada um; um dos atributos chaves de E deve ser escolhida como a chave primária de T1; Funcionário Código (PK) Nome Rua Numero CEP Bairro Data_nascimento CPF 25
  • 30.
    Banco de DadosI 2. Para cada entidade fraca EF com entidade proprietária E no modelo ER, é criada uma tabela T1 no Modelo Relacional incluindo todos os atributos simples de EF; para cada atributo composto, são inseridos apenas os componentes simples de cada um; a chave primária desta relação T1 será composta pela chave parcial da entidade fraca EF mais a chave primária da entidade proprietária E; Funcionário Dependente Codigo CodigoFuncionario (PK) Nome CodigoDependente Rua Nome Numero Data_nascimento CEP Tipo_parentesco Bairro Data_nascimento CPF 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 primária de uma das relações (T1, T2)e inseri-la como chave estrangeira na outra relação; se um dos lados do relacionamento tiver participação total e outro parcial, então é interessante que a chave do lado com participação parcial seja inserida como chave estrangeira no lado que tem participação total; Relacionamento Gerência Funcionario Departamento Codigo Codigo Nome CodigoFuncionario (PK) Rua Nome Numero CEP Bairro 26
  • 31.
    Banco de DadosI 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 primária de T1 como chave estrangeira em T2; Relacionamento Trabalha Funcionario Departamento Codigo Codigo CodigoDepartamento (PK) Nome 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 primária de T1 será composta pelos atributos chave de E1 e E2; Funcionario FuncionarioProjeto Projeto Codigo CodigoFuncionario (PK) Codigo Nome CodigoProjeto (PK) Nome Rua Descrição Numero Tempo_previsto 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 contém A1; a chave primária de T1 será composta por A1 mais C; se A1 for composto, então a tabela T1 deverá conter todos os atributos de A1; Funcionario Telefone Codigo CodigoFuncionario (PK) 27
  • 32.
    Banco de DadosI Nome CodigoTelefone Rua DDD Numero Numero CEP Tipo Bairro Data_nascimento CPF 7. Para cada relacionamento n-ário, n > 2, cria-se uma tabela T1, contendo todos os atributos do relacionamento; a chave primária de T1 será composta pelos atributos chaves das entidades participantes do relacionamento; 8. Converta cada especialização com m subclasses {S1, S2, ..., Sm} e superclasse SC, onde os atributos de SC são {c, a1, a2, ..., an} onde c é a chave primária de SC, em tabelas utilizando uma das seguintes opções: 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 opção é para generalizações com ―overlapping‖, e todos os ti, 1  i  m, é um atributo ―booleano‖ indicando se a tupla pertence ou não à subclasse Si; embora funcional esta opção possa gerar uma quantidade muito grande de valores nulos; Figura - Mapeamento para o Modelo Relacional o o 1 Passo - Entidades Normais 2 Passo - Entidades Fracas E E EF c o o o 3 Passo - Relacionamentos 4 Passo - Relacionamentos 1:N 5 Passo - Relacionamentos 1:1 N:N 1 N N N E E E E E E 28 o
  • 33.
    Banco de DadosI 4.8 Normalização de Dados Consiste em definir o formato conceitual adequado para as estruturas de dados identificados no projeto lógico do sistema, com o objetivo de minimizar o espaço utilizado pelos dados e garantir a integridade e confiabilidade das informações. A normalização é feita, através da análise dos dados que compõem as estruturas utilizando o conceito chamado "Formas Normais (FN)". As FN são conjuntos de restrições 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 compõem satisfizerem as restrições definidas para esta etapa. A normalização completa dos dados é feita, seguindo as restrições 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 normalização dos dados, é primordial que seja definido um campo chave para a estrutura, campo este que garanta identificar apenas uma tupla da relação. Primeira Forma Normal (1FN) Uma tabela está na primeira forma normal se no domínio de seus atributos, isto é, na interseção de uma linha com uma coluna (célula) da tabela, só existirem valores atômicos. Valor atômico é uma unidade indivisível, simples. Assim, não pode ocorrer um domínio Endereço com subdomínios Cidade, Rua, Número, Complemento. Uma tabela normalizada teria estes campos separados. Situação Solução Funcionario Funcionario Codigo Codigo 29
  • 34.
    Banco de DadosI Nome Nome Endereco 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 não-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 são funcionalmente dependentes de parte da chave. Podemos afirmar que uma estrutura está na 2FN, se ela estiver na 1FN e não possuir campos que são funcionalmente dependentes de parte da chave. Exemplo: Situação Solução Venda Vendas Mercadoria NumeroNF NumNF CodigoMercadoria CodigoMercadoria CodigoMercadoria DescricaoMercadoria DescricaoMercadoria Quantidade PrecoVenda QuantidadeVendida Valor PreçoVenda TotalVenda Como resultado desta etapa, houve um desdobramento do arquivo de Vendas em duas estruturas, a saber: Primeira estrutura (Arquivo de Vendas): Contém os elementos originais, sendo excluídos os dados que são dependentes apenas do campo Código da Mercadoria. Segunda estrutura (Arquivo de Mercadorias): Contém os elementos que são identificados apenas pelo Código da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrição e o preço de venda serão constantes. Terceira Forma Normal (3FN) Consistem em retirar das estruturas os campos que são funcionalmente dependentes de outros campos que não são chaves. Podemos afirmar que uma estrutura está na 3FN, se ela estiver na 2FN e não possuir campos dependentes de outros campos não chaves. Exemplo: Situação Solução 30
  • 35.
    Banco de DadosI NotaFiscal NotaFiscal Cliente NumeroNF NumeroNF Código Serie Serie NomeCliente DataEmissao DataEmissao CGCCliente CodigoCliente CodigoCliente NomeCliente TotalGeral CGCCliente TotalGeral Como resultado desta etapa, houve um desdobramento do arquivo de Notas Fiscais, por ser o único que possuía campos que não eram dependentes da chave principal (Num. NF), uma vez que independente da Nota Fiscal, o Nome e CGC do cliente são inalterados. Este procedimento permite evitar inconsistência nos dados dos arquivos e economizar espaço 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 divergência entre eles. Depois das alterações: Primeira estrutura (Arquivo de Notas Fiscais): Contém os elementos originais, sendo excluídos os dados que são dependentes apenas do campo Código do Cliente (informações referentes ao cliente). Segundo estrutura (Arquivo de Clientes): Contém os elementos que são identificados apenas pelo Código do Cliente, ou seja, independente da Nota Fiscal, o Nome, Endereço e CGC dos clientes serão constantes. Após a normalização, as estruturas dos dados estão projetadas para eliminar as inconsistências e redundâncias dos dados, eliminando desta forma qualquer problema de atualização e operacionalização do sistema. A versão final dos dados poderá sofrer alguma alteração, para atender as necessidades específicas do sistema, a critério do analista de desenvolvimento durante o projeto físico do sistema. Resumo da Unidade O modelo relacional foi criado por Codd em 1970 e tem por finalidade representar os dados como uma coleção de relações, onde cada relação é representada por uma tabela, ou falando de uma forma mais direta, um arquivo. Porém, um arquivo é mais restrito que uma tabela. Toda tabela pode ser considerada um arquivo, porém, nem todo arquivo pode ser considerado uma tabela. Quando uma relação é pensada como uma tabela de valores, cada linha nesta tabela representa uma coleção de dados relacionados. Estes valores podem ser interpretados como fatos descrevendo uma instância de uma entidade ou de um relacionamento. O nome da tabela e das colunas desta tabela é utilizado para facilitar a interpretação dos valores armazenados em cada linha da tabela. Todos os valores em uma coluna são necessariamente do mesmo tipo. Na terminologia do modelo relacional, cada tabela é chamada de relação; 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 domínio. 31
  • 36.
    Banco de DadosI IMPORTANTE Antes de começar o conteúdo sobre SQL, fazer o exercício abaixo para servir de exemplo no próximo assunto. * Criar um banco de dados que represente uma empresa. Este banco deve ser capaz de informar: a) Dados sobre os funcionários; b) Quantos funcionários trabalham em um determinado setor; c) Qual é o salário médio dos funcionários. 32
  • 37.
    Banco de DadosI Unidade 5 - SQL (structured query language) 5.1 Introdução Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. De todas, sem dúvida a que mais se popularizou foi a linguagem SQL. A linguagem SQL permite a criação e manipulação de dados do banco de dados sem que o programador precise se preocupar com detalhes internos do banco, como a forma como os dados são 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 extensões próprias para a linguagem. Como exemplo, temos: Transact/SQL, Sysbase, Microsoft, PL/SQL, etc. Para evitar problemas na manipulação do código, devido à quantidade plataformas, um comitê foi criado para torná-la independente. Este comitê é o comitê da ANSI (american National Standards Institute). A linguagem SQL não é 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, através de uma ferramenta que permite a execução direta do código SQL. A forma Embutida introduz o código SQL “dentro” das linhas do programa, que através de variáveis é tratado adequadamente. A linguagem SQL é subdividida em três grupos de comando de forma parecida com a estrutura de um banco de dados: DDL (Data Definition Language): Comandos responsáveis pela criação de objetos. Ex.: Create Table, Create View, Create Index. 5.2 DML (Data Manipulation Language): Comando responsável pela alteração de dados. Ex.: Select, Update, Delete. 5.3 DCL (Data Control Language): 33
  • 38.
    Banco de DadosI Comandos responsáveis pela segurança do banco de dados. Ex.: Grant, Revoke. 5.4 Tipos de Dados: Na construção de uma tabela é necessário que os dados sejam definidos quanto à forma de armazenamento. As “variações” do SQL criaram outros tipos de dados, como por exemplo: armazenagem de imagens, filmes, vetores, entre outros. O padrão SQL ANSI reconhece apenas os tipos Text e Number. A tabela abaixo demonstra estes dois tipos: Texto Varchar Caracteres de tamanho Até 254 caracteres variável Char caracteres de tamanho fixo Até 254 caracteres Numérico Dec Número decimal com casas Até 15 dígitos definidas Numeric Número com precisão Até 22 dígitos especificada Int Inteiro sem parte decimal Smallint idêntico a Int com limite de tamanho Float Número de ponto flutuante com base exponencial 10 Real Idêntico a Float exceto que não é usado um argumento para especificar o tamanho Double Idêntico a Real, só que com precisão maior. Data e Hora Date Armazena datas Time Armazena horas 5.5 Expressões e Operadores: 34
  • 39.
    Banco de DadosI Os operadores têm por finalidade permitir uma flexibilidade maior na manipulação dos dados de um banco. Estes seguem precedências de utilização conjunta. 5.6 Tipos de Operadores Multiplicação * Divisão / Subtração - Adição + Módulo % Aritméticos Caracteres Concatenação de campos || Comparação Igualdade = Desigualdade <> Maior que > Menor que < Maior ou Igual a >= Menor ou Igual a <= Não menor que !< Não maior que !> Não Igual a != Lógicos NOT Inverter o valor Booleano AND Verdadeiro se ambos forem verdadeiros OR Verdadeiro se for verdadeiro um dos lados BETWEEN Verdadeiro se estiver dentro da faixa LIKE Verdadeiro se operador encontrar um padrão IN Verdadeiro se algum item for verdadeiro SOME Verdadeiro se qualquer item for verdadeiro 35
  • 40.
    Banco de DadosI ANY Verdadeiro se algum item for verdadeiro ALL Verdadeiro se todo o conjunto for verdadeiro Bitwise & ! ^ Unários + Positivo - Bitwise NOT ~ Negativo 36
  • 41.
    Banco de DadosI Unidade 6 - Criação de Tabelas 6.1 Tutorial: Na construção de uma tabela é necessário que os dados sejam definidos quanto à forma de armazenamento. As “variações” do SQL criaram outros tipos de dados, como por exemplo: armazenagem de imagens, filmes, vetores, entre outros. O padrão 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 instrução SQL que irá criar as tabelas é fundamental um planejamento e um reconhecimento da estrutura que se propõe 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 máquinas estão acessando uma única base de dados, se todos executarem o comando de criação de uma única tabela, apenas o primeiro será bem sucedido, e os outros retornarão 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 máquina. Sempre que for mencionada nos comandos a palavra "NOME_DE_SUA_MAQUINA", substitua pelo nome da máquina que estiver utilizando. Comando: Create Table NOME_DE_SUA_MAQUINA ( Id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT Nome VARCHAR (20) ) Este comando permitiu a criação 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 conteúdo: Comando: 37
  • 42.
    Banco de DadosI 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 criação da tabela foi bem sucedida. 6.3 Parâmetros de Campos na Criação de Tabelas: 6.4 Valores Nulos Pode-se definir se o campo receberá valores NULOS ou não. Quando os valores não são NULOS tornam-se obrigatórios, o que significa que não será possível inserir dados na tabela em que tais campos não tenham um valor. 6.5 Chave Primária Por definição é 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 Primária, ele não poderá receber um valor NULO. Por exemplo, muitas vezes criamos uma tabela com um campo de identificação (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 exercícios com Select. É mais eficiente para certas consultas que este campo seja a chave primária, mesmo porque ele necessariamente será único. Observe a sintaxe para criarmos a tabela novamente com o Id como sendo obrigatório e chave primária. Não se esqueça de remover a tabela, se já não 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
  • 43.
    Banco de DadosI 6.6 Chave Estrangeira: Por definição é o campo de outra tabela que recebe os valores do campo da Chave Primária. Esta ligação a um campo de Chave Primária possibilita que os dados mantenham a integridade referencial. Esta integridade significa que os dados de uma tabela só poderão ser inseridos de forma válida e correspondente. Execute o comando select * from pedidos e confira que a tabela contém duas chaves estrangeiras. Veja se consegue descobrir quais são. 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-Vários entre a tabela Clientes e a tabela Pedidos (um cliente pode fazer vários pedidos). Com a Integridade Referencial, o banco de dados não permite que seja cadastrado um pedido para um cliente que ainda não foi cadastrado. Em outras palavras, ao cadastrar um pedido, o banco de dados verifica se o código do cliente que foi digitado já existe na tabela Clientes. Se não existir, o cadastro do pedido não será aceito. Com o uso da Integridade Referencial é possível ter as seguintes garantias (ainda usando o exemplo entre as tabelas Clientes e Pedidos): Quando o Código de um cliente for alterado na Tabela Clientes, podemos configurar para o banco de dados atualizar, automaticamente, todos os Códigos do Cliente na Tabela Pedidos, de tal maneira que não fiquem Registros Órfãos, isto é, registros de Pedidos com um Código de Cliente para o qual não existe mais um correspondente na Tabela Clientes. Essa ação é conhecida como "Propagar atualização dos campos relacionados". Quando um Cliente for excluído 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 Excluído. Essa opção é conhecida como "Propagar exclusão dos registros relacionados". 6.8 ON UPDATE: NO ACTION (RESTRICT) - quando o campo chave primária está para ser atualizado a atualização é abortada caso um registro em uma tabela referenciada tenha um valor mais antigo. Este parâmetro é o default quando esta cláusula não recebe nenhum parâmetro. Exemplo: ERRO Ao tentar usar "UPDATE clientes SET código = 5 WHERE código = 2. 39
  • 44.
    Banco de DadosI Ele vai tentar atualizar o código para 5, mas como em pedidos existem registros do cliente 2 haverá o erro. CASCADE (Em Cascata) - Quando o campo da chave primária é atualizado, registros na tabela referenciada são atualizados. Exemplo: Funciona: Ao tentar usar "UPDATE clientes SET código = 5 WHERE código =2. Ele vai tentar atualizar o código para 5 e vai atualizar esta chave também na tabela pedidos. SET NULL - Quando um registro na chave primária é atualizado, todos os campos dos registros referenciados a este são setados para NULL. Exemplo: UPDATE clientes SET código = 9 WHERE código = 5; Na clientes o código vai para 5 e em pedidos, todos os campos cod_cliente com valor 5 serão setados para NULL. SET DEFAULT - Quando um registro na chave primária é atualizado, todos os campos nos registros relacionados são setados para seu valor DEFAULT. Exemplo: se o valor default do código de clientes é 999, então. UPDATE clientes SET codigo = 10 WHERE codigo = 2. Após esta consulta o campo código com valor 2 em clientes vai para 999 e também todos os campos cod_cliente em pedidos. 6.9 ON DELETE: NO ACTION (RESTRICT) - Quando um campo de chave primária está para ser deletado, a exclusão será abortada caso o valor de um registro na tabela referenciada seja mais velho. Este parâmetro é o default quando esta cláusula não recebe nenhum parâmetro. Exemplo: ERRO em DELETE FROM clientes WHERE código = 2. Não funcionará caso o cod_cliente em pedidos contenha um valor mais antigo que código em clientes. CASCADE - Quando um registro com a chave primária é excluído, todos os registros relacionados com aquela chave são excluídos. SET NULL - Quando um registro com a chave primária é excluídos, os respectivos campos na tabela relacionada são setados para NULL. SET DEFAULT - Quando um registro com a chave primária é excluído, os campos respectivos da tabela relacionada são setados para seu valor DEFAULT. 40
  • 45.
    Banco de DadosI 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 Laboratório Crie as seguintes Tabelas: 41
  • 46.
    Banco de DadosI Unidade 7 - Comandos para Alterar Tabelas 7.1 Alteração de Tabelas Criadas Após a criação das tabelas pode ser necessário incluir ou remover colunas. Sempre é possível remover a tabela e criá-la novamente com a estrutura nova, mas com isto perderíamos todos os dados previamente cadastrados. Por isto da importância 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 serão 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 também serão 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 não serão perdidos. Comando: ALTER TABLE NOME_DE_SUA_MAQUNIA RENAME Sobrenome SegundoNome 42
  • 47.
    Banco de DadosI 7.5 Modificando colunas de uma tabela – MODIFY Modifica uma coluna de uma tabela. Caso a coluna já possua dados digitados, eles não serão perdidos. Comando: ALTER TABLE NOME_DE_SUA_MAQUNIA MODIFY SegundoNome varchar(30) Laboratório Modifique as tabelas do exercício anterior para que fiquem com o seguinte formato: 43
  • 48.
    Banco de DadosI Unidade 8 - Modificando Dados 8.1 Inserindo Dados Além dos comandos de consulta ao banco de dados, uma aplicação geralmente irá também 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 especificações ele não conseguirá fazer a inserção, pois os dados serão 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 Criação de Tabela Create Table NOME_DE_SUA_MAQUINA(Id INT, Nome VARCHAR (20)) Comando de Inserção de Dados Insert Into NOME_DE_SUA_MAQUINA (Id, Nome) values(1,'João') Com esta instrução SQL obteremos o seguinte resultado: Comando: Select * from NOME_DE_SUA_MAQUINA; Resultado: Id Nome ------- ----------- - 1 João 8.2 Inserindo dados por meio de um SELECT É possível fazer a inserção de dados através de uma instrução SQL com o comando Select, com todas as suas variações. Esta possibilidade é muito útil, pois dependendo do caso não será necessário digitar os dados nesta tabela, uma vez que eles podem ser reproduzidos através de tabelas existentes no Banco de Dados. Exemplificando: Crie sua tabela com um único campo 'nome' (não se esqueça de dar um DROP TABLE antes): Comando: Create Table NOME_DE_SUA_MAQUINA(Nome VarChar (50)) 44
  • 49.
    Banco de DadosI Agora vamos colocar nesta tabela todos os nomes de funcionários 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 funcionários. 8.3 Excluindo informações Este comando remove linhas das tabelas. Podemos remover todo o conteúdo da tabela, ou definir as linhas a serem removidas utilizando a cláusula WHERE. A sintaxe é mostrada abaixo: Sintaxe: DELETE FROM [nome da tabela] WHERE [Condição]; Comando: Delete from NOME_DE_SUA_MAQUINA where Nome = „José‟ Lembre-se que ao excluir uma linha de registro relacionada à exclusão poderá ser bloqueada pelo SQL devido as PRIMARY KEY e FOREIGN KEY existentes. Para remover todos os itens de uma tabela basta não incluir a cláusula WHERE. 8.4 Atualizando dados de uma tabela Através deste comando é possível atualizar um ou mais campos de uma tabela. A sintaxe é mostrada abaixo: Sintaxe: UPDATE [nome da tabela] SET [nome da coluna] = [novo valor] É possível utilizar as cláusulas FROM e WHERE para determinar a atualização vinda de outras tabelas ou quais os critérios utilizados para a atualização. Expressões poderão ser utilizadas para realizar as alterações 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 estão alterando a mesma tabela, neste caso. Esta alteração está permitindo ao usuário aumentar em 100% o preço de todos os produtos. Esta alteração poderia ser feita utilizando-se uma restrição com a cláusula Where, para atualizar apenas um produto. Comando: update produtos set preco=20 where id = 2 Este comando define como 20 o preço do produto 2, ou seja, da carne. Laboratório Baseado nas tabelas criadas e as alterações realizadas nas tabelas das unidades anteriores realize os seguintes comandos: 45
  • 50.
    Banco de DadosI Insira 3 registros em cada tabela Delete 1 registro da tabela tbfornecedores Atualize o valor da matéria 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
  • 51.
    Banco de DadosI Unidade 9 - Consulta em uma única Tabela SQL 9.1 Sintaxe Básica de Consultas SQL Em bancos de dados relacionais, temos a informação armazenada em tabelas, como visto anteriormente. Cada tabela contém um conjunto de informações armazenadas em linhas da tabela, cada linha representando uma entrada, sendo que as colunas representam os parâmetros associados àquela informação. Uma das consultas mais simples que podemos realizar em SQL, portanto, é a consulta que retorna os parâmetros que desejamos de todas as entradas da tabela. Sua sintaxe é mostrada abaixo: SELECT [nome do campo1], [nome do campo2], ... FROM [nome da tabela] O campo “nome da tabela” define a tabela que estamos consultando, enquanto os campos “nome do campoN” representam os parâmetros, 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 conteúdo é mostrado abaixo. O instrutor poderá utilizar os mesmos exemplos ou criar junto com os alunos tabelas próprias, 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 Telefone Transportadora Fulano (51) 2111-1666 Transportes Pedrão (51) 0000-0000 Expresso Marte (51) 1234-5678 9.3 Seleção de Todos os Registros com Colunas Específicas Execute a consulta abaixo, ou siga as instruções do instrutor, executando uma consulta equivalente: 47
  • 52.
    Banco de DadosI Select Nome from transportadoras Executando a consulta acima na tabela Transportadoras, contendo os dados mostrados, teremos o seguinte resultado: Nome ---------------------- Transportadora Fulano Transportes Pedrão Expresso Marte Na mesma tabela, também podemos consultar mais parâmetros, bastando especificá-los separados por vírgulas. Confira a consulta a seguir e o resultado correspondente: Select Nome, Telefone from transportadoras Resultado: Nome Telefone ------------- -------------- Transportadora Fulano (51) 3346-7300 Transportes Pedrão (51) 0000-0000 Expresso Marte (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, porém, 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
  • 53.
    Banco de DadosI Transportadora Fulano Transportes Pedrão Expresso Marte 9.5 Seleção de Registros com Exibição de Strings É possível 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: Nome ‗ocupa o cargo de‘ Cargo ------- -------------------- --------------------- José ocupa o cargo de Presidente Maurício ocupa o cargo de Gerente de Vendas Luís ocupa o cargo de Boy Lígia ocupa o cargo de Telefonista Consulta com Execução de Cálculos: Com o SQL podemos efetuar cálculos entre elementos lidos do banco de dados e retorná-los na consulta. Para selecionar registros de uma tabela com a execução de cálculos matemáticos é necessário utilizar os operadores '+' ,' -' , '/' , '*' e '^'. Sintaxe: SELECT [nome do campo]*[nome do campo] as [nome da expressão] FROM [nome da tabela]; Para demonstrarmos este recurso do SQL, utilizaremos uma nova tabela, com dados numéricos. Novamente, o instrutor poderá utilizar estes mesmos dados ou criar exemplos próprios ao longo da aula: Nome Preço Estoque Leite 10 500 Carne 20 330 Pão 18.6 200 Suco 20 330 Comando: 49
  • 54.
    Banco de DadosI select nome, preco*estoque as total from produtos Resultado: Nome total --------------------- ----------- Leite 5000 Carne 6600 Pão 37200 Suco 6600 Laboratório Baseado nas tabelas criadas e as alterações realizadas nas tabelas das unidades anteriores exiba os seguintes resultados: O fornecedor ―x‖ tem a razão social ―y‖ A matéria prima ―x‖ tem o valor de ―y‖ e a quantidade ―z‖ A matéria prima ―x‖ tem um valor total de ―quantidade * valor‖ A quantidade ―x‖ no estoque não pode chegar a ―20% da quantidade‖ O tipo de matéria ―x‖ tem o valor de ―y‖ e com desconto fica em ―80% do valor‖ A matéria ―x‖ é descrita como ―y‖ ―12% do valor‖ são considerados custo da matéria prima ―x‖ Acesse o site ―x‖ da empresa ―y‖ ―1/3 do valor * quantidade‖ é destinado ao pagamento de imposto da matéria prima ―y‖ Após um aumento de 13% no estoque, a quantidade vai de ―x‖para ―y‖ 50
  • 55.
    Banco de DadosI Unidade 10 - Unidade 10: Funções com strings 10.1 Funções com Strings Funções que tratam de strings permitem fazer uma série de manipulações de textos que são recuperadas das tabelas do banco de dados. Nesta unidade apresentamos algumas das funções mais comumente utilizadas em situações reais, para o aluno se familiarizar com o conceito de funções de manipulação de strings. Na prática pode ser interessante consultar as funções que o banco de dados que estiver sendo utilizado fornece, quando for necessário manipular strings. 10.2 Sintaxe da Função de Concatenação de Strings Para juntar duas ou mais strings existe uma função, chamada concat, mostrada a seguir: Sintaxe: concat( string1, string2,...) O exemplo a seguir mostra o uso desta função para juntar o nome e sobrenome dos funcionários em uma única coluna. Observem o uso do espaço para garantir que o nome e sobrenome vão ter uma separação. Exemplo: select concat(Nome, ' ', Sobrenome) from funcionarios 10.3 Controle de Maiúsculas e Minúsculas Duas funções permitem transformar o retorno de uma consulta em letras maiúsculas e minúsculas. Lower Transforma as letras em minúsculas na resposta da instrução SQL. Como exemplo: Select Lower(Nome) from clientes; Upper Transforma as letras em maiúsculas na resposta da instrução SQL. Como exemplo: Select Upper(NomeDoContato) from clientes; 51
  • 56.
    Banco de DadosI 10.4 Segmentando uma String Alguns comandos permitem separar uma string, recuperando apenas determinada parte da informação 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 começa a ser feita a separação Valor 2 é o número de caracteres que serão 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 número de caracteres que serão 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 número de caracteres que serão 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
  • 57.
    Banco de DadosI Exemplo: Select LENGTH(Nome) from clientes; Locate(Charindex) Retorna a posição do texto procurado: LOCATE (Valor1, String1) Onde, Valor1 é o texto procurado. String1 é a string de origem Exemplo: Select LOCATE(„João‟, Nome) from clientes; Laboratório Baseado nas tabelas criadas e as alterações realizadas nas tabelas das unidades anteriores exiba os seguintes resultados: O fornecedor ―apenas o 1º nome‖ é do tipo ―final da razão social ―‖ A matéria prima ―em maiúscula‖ tem o valor de ―y‖ e a quantidade ―z‖ A matéria prima iniciadas em ―1º letra‖ tem um valor total de ―quantidade * valor‖ O tipo de matéria ―em minúsculo‖ tem o valor de ―y‖ e com desconto fica em ―80% do valor‖ A matéria ―duas letras iniciais‖ é descrita como ―em maiúsculo‖ ―12% do valor‖ são considerados custo da matéria prima ―1 letra em maiúsculo,‖. Acesse o site ―retirar o WWW‖ da empresa ―y‖ ―1/3 do valor * quantidade‖ é destinado ao pagamento de imposto da matéria prima ―em maiúscula‖ A matéria prima ―x‖ é formada por ―quantidade de letras‖ letras O fornecedor ―x‖ tem um fax de ―quantidade de letras‖ letras 53
  • 58.
    Banco de DadosI Unidade 11 - Critérios de Consulta – Cláusula WHERE 11.1 Cláusula Where Até o momento todas as consultas apresentadas retornaram todas as entradas das tabelas, restringindo unicamente os atributos que desejávamos 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 específica, por exemplo, quando desejarmos recuperar dados sobre um cliente específico. Nestes casos, nossa consulta SQL terá uma cláusula Where, conforme sintaxe mostrada abaixo: SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] UDPATE [nome da tabela] SET [nome do campo] = [novo valor] WHERE [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] DELETE FROM [nome da tabela] WHERE [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] Uma consulta pode ter uma quantidade infinita de condições ou cláusulas, sendo que as mesmas devem ser separadas por um operador lógico (AND ou OR). Veja o exemplo abaixo: SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] AND [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] Ou SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] OR [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] Os campos que são utilizados nos critérios das consultas, não são obrigatoriamente os mesmo utilizados como saída de informação (para consultas de seleção) ou como objetos de alteração. Podendo, por exemplo, exibir o nome de produtos que tenha um preço inferior a um determinado valor. Veja o exemplo, sendo ―nomeproduto‖ o campo a ser exibido e ―preco‖ o campo que recebe a condição de exibição: SELECT nomeproduto FROM produtos WHERE preco <= 2.5 54
  • 59.
    Banco de DadosI Observe, também, que é possível a utilização de um mesmo campo, mais de uma vez como critério de uma consulta. Por exemplo, se desejar exibir os filmes lançados após o ano 2000 com a exceção do ano de 2005, o comando seria desenhado da seguinte forma. SELECT nomefilame FROM filmes WHERE ano >= 2000 AND ano <> 2005 Estes critérios podem ser utilizados em qualquer tipo de consulta (seleção, exclusão ou atualização). Principalmente em consultas que realizam alterações, recomenda-se atentar para o uso quase que obrigatório da cláusula ―where‖, pois sua omissão resulta na execução da alteração em todo o conjunto de dados contemplados na sentença. Vejamos a seguinte situação: para os funcionários com mais de 1 ano de tempo de trabalho a empresa deseja conceder um aumento de 15% em seus salários. Se executarmos uma consulta conforme exemplo abaixo, todos os funcionários receberam aumento independente do seu tempo na empresa: UPDATE funcionarios SET salario = salario * 1.15 Para que apenas os funcionários que possuem o critério estabelecido pela empresa para receber o aumento, sejam efetivamente beneficiados, é necessário incluir uma cláusula. Observe a sintaxe correta abaixo. UPDATE funcionarios SET salario = salario * 1.15 WHERE tempo >= 1 Em consultas de deleção o cuidado deve ser ainda maior, pois uma execução de uma sentença sem um critério de forma correta ou mesmo sem a existência de um, pode acarretar na perda significativa de dados importantes para a instituição. Como regra geral recomenda-se iniciar a escrita de seu script SQL, para consultas de alterações, pelos critérios que as mesmas devem considerar, reduzindo assim, a chance de cometer qualquer tipo de equivoco, com consequências mais graves. 11.2 Consultas Simples com Cláusula Where Vamos definir uma consulta bastante simples, restringindo a lista de clientes apenas aqueles cujo país é o Brasil. Utilizaremos a tabela clientes, mostrada a seguir: Tabela Clientes Nome País Empresa W Brasil Empresa A Brasil Empresa B Brasil Empresa C Argentina Empresa X Brasil Comando: SELECT NOME FROM CLIENTES WHERE PAIS='BRASIL' Resultado: 55
  • 60.
    Banco de DadosI nome ---------------- Empresa A Empresa B Empresa X O sinal de igualdade (=) foi utilizado porque o usuário sabia exatamente o que estava procurando. Verifique os operadores de comparação que estão no inicio da apostila. Cabe também, ressaltar que devemos sempre atentar para o tipo de dado armazenado nos campos que serão utilizados nos critérios de consulta. Pois esta observação nos mostra que tipos de critérios podem ser utilizados (para datas, por exemplo) e qual a forma correta de montagem do critério ou seleção. No exemplo da consulta acima, podemos perceber que o critério 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 numéricos não há a necessidade, além de não ser recomendado, do uso de aspas simples. Entretendo, se estiver utilizando um banco de dados que você não tenha estruturado, utilize comandos (veremos nas próximas unidades) que exibam a estrutura da tabela, pois podemos encontrar campos com valores numéricos que tenham sido tipados como texto, o que pode atrapalhar a percepção do resultado final. 11.3 Selecionando Dados Não Repetidos Algumas vezes não queremos recuperar todas as entradas de determinada tabela, mas apenas aquelas não repetidas. Podemos, por exemplo, querer listar todas as cidades em que a empresa tem clientes, ou todas as faixas de salário dos funcionários, e nestes casos não faz sentido repetir inúmeras vezes a mesma cidade ou faixa salarial apenas por ter mais de um dado com aquela informação. Existe um comando para resolver esta questão, chamado DISTINCT, cuja sintaxe é mostrada abaixo: SELECT DISTINCT [nome do campo] FROM [nome da tabela]; Executando a consulta abaixo, veremos que retornará os países em que existem clientes armazenados no banco de dados: select distinct pais from clientes Resultado: País Argentina 56
  • 61.
    Banco de DadosI Brasil Case o comando seja executado novamente, porém sem a cláusula DISTINCT e observe a teremos a repetição dos países. O comando DISTINCT realiza um agrupamento dos dados exibidos, portanto devemos sempre estar atentos aos campos que inserimos antes da expressão FROM, pois se os mesmos forem únicos, pode não ocorrer o agrupamento de forma correta. No exemplo aqui citado os países, aparecerão apenas uma vez, pois somente a coluna ―país‖ foi exibida, se fosse inserido o campo ―nome‖, por exemplo, haveria a duplicação dos mesmos. Vejamos o caso na prática select distinct nome, pais from clientes Resultado: Nome País Brasil Empresa A Brasil Empresa B Brasil Empresa C Argentina Empresa X Brasil 11.4 Selecionando alguns dados Em determinadas situações desejamos apenas obter alguns registos de uma consulta, pois apenas uma amostra de dados pode ser suficiente para chegarmos ao resultado esperado da sentença. Esta sintaxe para construção de um limite dos resultados leva em consideração o banco de dados no qual as informações estão 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 comparação ou restrição] [critério de comparação ou restrição] MySQL 57
  • 62.
    Banco de DadosI SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] LIMIT [valor] Se desejarmos, por exemplo, exibir apenas 5 clientes que sejam do país ‗Brasil‘, devemos construir a consulta no SQL SERVER. SELECT TOP 5 nome FROM clientes WHERE pais='brasil' A utilização da cláusula de limite de registros é muito utilizada em testes de verificação do conteúdo de uma tabela. Também é amplamente aplicada em subconsultas (tema do curso avançado). Laboratório. Para a realização dos exercícios abaixo crie a seguinte tabela e insira os dados listados abaixo dela. Após execute uma consulta que exiba cada Cod_Celula Modelo Marca Camera MP3 Bateria Valor Lancamento r 1 Star Sansung Sim Sim 3.2 600.00 2009-04-12 2 N97 Nokia Sim Sim 4.1 700.00 2010-01-20 3 IPhone Apple Sim Sim 3.4 1.100 2007-12-30 4 Corby Sansung Sim Sim 4.2 800.00 2008-06-25 5 N95 Nokia Sim Sim 2.7 950.00 2005-05-05 6 Jet Sansung Sim Sim 3.3 650.00 2008-10-09 7 2160 Nokia Não Não 8.7 50.00 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
  • 63.
    Banco de DadosI Liste nome de todos os celulares, junto com seus valores, para todos os celulares que foram lançados há pelo menos de 2 anos. Liste o modelo, marca e bateria do celular código 4. Liste os celulares lançados 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 câmera 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 informação MP3 para NÃO em celulares com bateria inferior a 3 horas e valor superior a R$ R$ 500,00 Mude o nome do celular de código 7 para ―MP15‖ Atualize o valor dos celulares em 2% para celulares com câmera e valor inferior a R$ 800,00 Atualize 3 celulares para câmera NÃO 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
  • 64.
    Banco de DadosI Unidade 12 - Predicados 12.1 Predicados LIKE e NOT LIKE: Na unidade anterior, vimos como selecionar apenas algumas entradas de uma tabela, com o uso da cláusula Where. Entretanto, apenas com os operadores de igualdade, que foi mostrado, e outros operadores aritméticos, como “<”, “>”, etc., não 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 não temos todo o nome, mas apenas um dos sobrenomes. Utilizar o operador „=‟ não irá nos atender neste caso. O predicado “LIKE” serve para este fim. Funciona como um tipo de pesquisador de sequências podendo ser auxiliado por um % que significa qualquer caractere. Pode ser precedido por um NOT que expressa à negação. 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 didáticos, sendo possível que o instrutor opte por construir exemplos mais complexos junto com a turma. Tabela clientes: Nome João da Silva Borges Pedro Álvaro João Augusto Comando: select nome from clientes where nome = 'João' Resultado: nome ------------- A resposta para esta instrução será uma tabela vazia. Apesar de existir um 'João' na tabela, o critério de igualdade exige o nome completo. A consulta apenas retornaria o cliente se fosse colocado o nome completo: „João da Silva' Assim, utilizar o sinal de igualdade nos retorna o resultado desejado somente se conhecermos o nome completo da pessoa. O comparativo lógico LIKE, permite selecionar por semelhança: Comando: select nome from clientes where nome like 'João%' 60
  • 65.
    Banco de DadosI Resultado: nome ---------------- João da Silva Borges João Augusto Da mesma forma como podemos pesquisar por informações que comecem por um determinado conjunto de caracteres, também podemos definir que certas letras estejam no final ou em qualquer posição 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 ---------------- João 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 incluído. 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 Estoque --------------- ------------- Leite 1000 12.3 Predicados IN e NOT IN: O predicado IN compara um valor com uma lista ou coleção de valores. Lembre-se que os critérios do tipo texto devem ser escritos entre aspas simples. Sintaxe: 61
  • 66.
    Banco de DadosI 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 País ------------------- --------------- Brasil Empresa A Brasil Empresa B Brasil Empresa C Argentina Empresa X Brasil 12.4 Predicado IS NULL e IS NOT NULL Separa os registros NULOS. Quando precedido por um NOT, separa os registros com valor válido. Sintaxe: Select * from [nome da tabela] WHERE [nome do campo] {IS NOT NULL} {IS NULL}; Este predicado pode ser útil para determinadas situações em que algum campo esteja null porque não foi processado ainda, por exemplo, numa compra que não foi finalizada, ou em um pedido que não foi entregue. Observe o exemplo abaixo, que é um exemplo típico de uma consulta utilizando este predicado para identificar pedidos ainda não 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) também pode ser utilizado na exibição de algum valor caso um campo esteja nulo. Comando: select ISNULL(taxa, „‟) Cobrança from pedidos 62
  • 67.
    Banco de DadosI 12.5 Seleção com Operadores Lógicos Para selecionar registros de uma tabela com a determinação de critérios o usuário deverá utilizar a cláusula WHERE combinada com os operadores lógicos AND, OR e NOT. A sintaxe é mostrada abaixo: Sintaxe: SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] AND [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] OR [nome do campo] [operador de comparação ou restrição] [critério de comparação ou restrição] Como exemplo, vamos selecionar todos os produtos cujo estoque seja maior que 500 e tenham um preço menor que 10. Comando: select Nome, Estoque, Preco from produtos where estoque > 500 and preco < 10 Neste exemplo, a cláusula AND obrigou que ambas as condições fossem atendidas. Podemos também definir que o item seja selecionado caso qualquer das condições seja atendida, como mostra o exemplo abaixo em que selecionamos os itens que tenham. preço menor que 10 ou um estoque maior que 1000. Comando: select Nome, Estoque, preco from produtos where preco < 10 or estoque > 1000 Laboratório. Para a realização dos exercícios abaixo utilize a tabela criada no exercício anterior Os dados de todos os celulares com mp3 não 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 não sejam da ―Nokia‖. Liste o modelo, marca e bateria do celular código 4, 6, 2. Liste os celulares lançados 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 câmera com valor nulo Liste as marcas de celular existentes em letra maiúscula 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 duração. 63
  • 68.
    Banco de DadosI Unidade 13 - Funções de Agrupamento e Ordenação 13.1 Obtendo Informações Estatísticas Muitas vezes não queremos recuperar os dados armazenados no banco de dados, mas sim informações estatísticas sobre os mesmos, como totais e médias de valores. Para tanto utilizamos as chamadas funções de agrupamento. A sintaxe das funções de agrupamento é mostrada abaixo: Sintaxe: SELECT {ALL} {DISTINCT} Função([nome do campo]) FROM [nome da tabela] As funções de agrupamento utilizadas no SQL são: COUNT( ), AVG( ), MAX( ), MIN( ) e SUM( ). Abaixo mostramos um exemplo simples, mas bastante completo do uso de todas estas funções para processar cálculos em cima de uma tabela de produtos, e um exemplo de retorno. Comando: select SUM(Estoque) as 'Total no Estoque', MAX(Preco) as 'Preço mais caro', MIN(Preco) as 'Preço mais barato', AVG(Preco) as 'Preço médio', COUNT(Preco) as 'Total de Registros' from produtos Exemplo de Resultado: Total no Preço mais Preço mais Preço médio Total de Estoque caro barato Registros --------- --------- ---------- --------- -------------- 3600 31 5 16.0000 4 As funções agregadas não podem ser utilizadas dentro de uma cláusula WHERE, porem é possível utilizar esta cláusula para restringir o número de linhas que serão consideradas no cálculo da resposta, como mostra o exemplo abaixo: Comando: SELECT AVG(preco) from produtos where preco > 10 Nesta consulta acima o que estamos obtendo é a média entre todos os produtos cujo preço é maior que 10. 64
  • 69.
    Banco de DadosI 13.2 Agrupamento Utilizando GROUP BY: A cláusula GROUP BY agrupa os registros de acordo com uma condição 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 países para obtermos uma listagem de todos os países de clientes. Comando: select Pais from clientes group by pais Resultado: Pais --------------- Argentina Brasil O resultado acima poderia ser obtido também com o uso do comando DISTINCT. Na realidade, geralmente o uso do comando GROUP BY só é adequado em conjunto com funções de agrupamento, como mostramos no exemplo a seguir: select count(*) as 'Total', pais from clientes group by pais Resultado: Total País --------- --------------- 1 Argentina 4 Brasil Como agrupamos por países, conseguimos utilizar o comando de COUNT e descobrir quantas vezes cada um dos países 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 comparação ou restrição] [critério de comparação ou restrição] GROUP BY [nome do campo] 65
  • 70.
    Banco de DadosI 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(*), pais from clientes where CargoContato = 'Gerente de Vendas' GROUP BY pais 13.4 Seleção de registros com Agrupamento pela Cláusula GROUP BY e HAVING: Enquanto a cláusula WHERE filtra os registros antes de agrupá-los, diminuindo assim a quantidade de registros gerados pela cláusula GROUP BY, a cláusula HAVING faz um filtro também, porém. permitindo a utilização de uma função agregada. A sintaxe é mostrada abaixo: SELECT [nome do campo] FROM [nome da tabela] GROUP BY [nome do campo] HAVING Função Agregada([nome do campo]) Por exemplo, se quisermos ver o total de clientes de países cujo total for maior que 3, usaríamos o comando abaixo: select count(*),pais from clientes group by pais having count(*) >= 3 Resultado: Count(*) País ------- ------------- 4 Brasil Como só existe uma referência a "Argentina", e portanto o total é menor que 3, não aparece no resultado. Para entender melhor a diferença entre WHERE, GROUP BY e HAVING, é preciso compreender a definição de cada uma, mostrada abaixo: a cláusula WHERE é utilizada para filtrar as linhas que resultam da consulta da tabela especificada pela cláusula FROM. A cláusula GROUP BY é utilizada para agrupar as linhas filtradas por WHERE. A cláusula HAVING é usada para filtrar as linhas do grupo criado por GROUP BY. 13.5 Ordenação das Consultas Até agora não nos preocupamos com a ordem em que são mostrados os resultados de uma consulta, mas em situações reais normalmente vamos querer controlar esta ordenação. A cláusula 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] ORDER BY[nome do campo] {ASC}{DESC} 66
  • 71.
    Banco de DadosI Se não utilizarmos a cláusula ORDER BY, o resultado da instrução será baseado no índice da tabela analisada. Ao utilizarmos a cláusula estamos definindo a ordem, como no caso abaixo em que os produtos são mostrados em ordem alfabética: Comando: select Nome from produtos order by Nome Não é necessário utilizar o complemento ASC para as ordenações crescentes, porém para as ordenações decrescentes deve-se utilizar DESC: Laboratório. Para a realização dos exercícios abaixo utilize a tabela criada no exercício anterior Some os valores dos celulares. Calcule o tempo médio de duração da bateria Encontre o maior e o menor valor dos celulares. Conte o número de celulares por Marca. Encontre e média de valores por Marca. Calcule a média 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 maiúscula e sem valores nulos Liste todos os celulares por em ordem decrescente de lançamento Calcule a média de duração dos celulares com câmera 67
  • 72.
    Banco de DadosI Unidade 14 - Consultas em Múltiplas Tabelas 14.1 Consultas em Múltiplas Tabelas Conforme visto nos capítulos anteriores, de teoria de modelagem de dados, as tabelas do banco de dados têm relações entre si, e é essencial dominar os recursos da linguagem SQL que nos permitem criar consultas com base nestas relações. 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 instrução SQL. Nem todos os bancos de dados utilizam a forma padrão de ANSI, existindo algumas variações na sintaxe do comando. 14.2 Join Podemos definir Join como a junção de duas tabelas. O resultado da união de duas tabelas será a multiplicação das linhas da primeira pela segunda tabela, ou seja, para cada linha da primeira tabela, todas as linhas da segunda serão repetidas. Na prática esta situação não é muito comum, mas serve como base para entendermos o funcionamento de outros tipos de Join. Sintaxe: Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do campo] from [nome da tabela1], [nome da tabela2]; Observe a operação de JOIN entre duas tabelas pedido e clientes, sem a utilização de nenhuma restrição na união. 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
  • 73.
    Banco de DadosI Resultado: Nome ID do pedido ------- ------------- 1 2 3 Empresa A 1 Empresa A 2 Empresa A 3 Empresa B 1 Empresa B 2 Empresa B 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 faça sentido, geralmente utilizamos a cláusula WHERE. 14.3 Equijoin – Join de Igualdade Também conhecido como join simples ou inner join, o Equijoin fará a união entre duas ou mais tabelas através de uma cláusula WHERE, que ligará a chave primária 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 código da categoria, e esta informação - 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
  • 74.
    Banco de DadosI Resultado: Nome Produto Categoria --------------- ------------------ Leite Bebidas Suco Bebidas Carne Carnes Pão Outros Alimentos 14.4 Exercícios Sugeridos Anteriormente foi apresentada a tabela clientes, com atributos Nome e País. Transforme esta informação em duas tabelas, Novo_Clientes e Países, definindo os atributos que fazem a relação entre as tabelas, e defina uma consulta SQL que retorne o mesmo resultado da tabela Clientes original, porém consultando as duas novas tabelas Tabela Clientes Nome País Brasil Empresa A Brasil Empresa B Brasil Empresa C Argentina Empresa X Brasil 14.5 Equijoins e Operadores Lógicos: É possível combinar em uma cláusula WHERE com equijoins os operadores lógicos: AND, OR e NOT. Isto será necessárias em boa parte das consultas SQL feitas em um sistema, pois geralmente queremos definir condições exatas para a recuperação 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] [Comparação] [valor ou „texto‟] OR [nome da tabelaN].[nome do campo] [Comparação] [valor ou „texto‟] NOT [nome da tabelaN].[nome do campo] [Comparação] [valor ou „texto‟] Como exemplo, vamos criar uma consulta em tabelas „produtos‟ e „categorias‟, selecionando produtos cujo preço é maior que 10 e ainda exibindo a categoria a que pertencem: Comando: 70
  • 75.
    Banco de DadosI 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 nível. 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 situações reais, muitas vezes serão criadas consultas entre diversas tabelas, geralmente com a ligação entre cada tabela e as demais sendo feita através de uma igualdade que ligue a chave primária de uma tabela com a chave estrangeira da outra. 14.7 Redefinição do Nome de Tabelas Para „facilitar‟ a vida do administrador da base de dados, não é necessário que este digite o nome das tabelas em sua totalidade. É possível criar um alias para cada tabela, diminuindo, assim, a quantidade de caracteres digitados. O exemplo abaixo ilustra esta técnica. 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 instrução SQL que utiliza Equijoin, exibe os resultados que são comuns entre os campos das duas tabelas. Neste método, ficam de fora as linhas que não encontram relação entre as duas tabelas. Porém esta informação de entradas que não aparecem num InnerJoin também pode ser útil. Por exemplo, para saber se existe algum Cliente que nunca tenha feito um pedido. Left e Right Join Para que a questão acima seja respondida, é necessário entender que existe um lado da relação que irá listar seus registros, baseado no Left ou Right. 71
  • 76.
    Banco de DadosI Em algumas plataformas é utilizado o * (asterisco) para determinar o lado do outer join. Em outras é utilizado o (+) (sinal de adição entre parênteses). 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 relação] = [nome da tabela2].[nome do campo de relação] Apenas a terceira sintaxe é aceita pelo MySQL, por exemplo. Iremos inicialmente utilizar um comando LEFT JOIN para identificar clientes que não tem nenhum pedido. Para tanto teremos que restringir o retorno àquelas linhas em que não existe uma ligação com a tabela 'pedidos' (portanto as entradas da tabela 'pedidos' retornam null): select clientes.nome from clientes left join pedidos on clientes.Id = IdCliente where pedidos.id is null Observação: o comando RIGHT JOIN não é implementado em MySQL, mas invertendo-se as tabelas pode- se obter efeito equivalente. 14.9 Outros Tipos de Joins - Self Joins Self Joins são relações estabelecidas entre uma mesma tabela, por intermédio de dois de seus campos. São utilizadas normalmente quando a tabela referencia a si mesmo para definir uma hierarquia, por exemplo entre funcionários. A única diferença 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 própria tabela, o campo 'chefe', que contém o Id do chefe de cada funcionário. Através de um self join podemos listar todos os funcionários que possuem um chefe, indicando quem é o mesmo: select F2.Nome as 'funcionário', 'é subordinado a', F1.Nome as 'chefe' from funcionarios as F1, funcionarios as F2 where F2.Chefe = F1.Id 72
  • 77.
    Banco de DadosI Laboratório Crie a seguinte estrutura de tabelas, para executar os exercícios Liste o nome e a quantidade de atendimentos por cliente Liste o nome e a quantidade de atendimentos por funcionário Conte quantos produtos estão em cada pedido Calcule a média de valor dos pedidos de cada cliente Calcule o valor total de cada pedido Mostre a quantidade, total e média de pedidos por data Liste a média 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 não tem pedido Liste os produtos por cliente que não foram solicitados por eles 73
  • 78.
    Banco de DadosI Liste quantos pedidos cada vendedor faz por data 74
  • 79.
    Banco de DadosI Unidade 15 - Trabalhando com datas 15.1 Datas em MySQL 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 Informações Específicas de Data Diversas funções permitem recuperar informações específicas com base em uma data, como o dia, mês 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 mês 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 cálculo ou para inserir no banco de dados, o formato é um texto (separado por aspas) na forma "ano-mês-dia". O exemplo abaixo retorna o ano do dia 19 de maio de 1980: Exemplo: select year('1980-05-19') 75
  • 80.
    Banco de DadosI Unidade 16 - Exercícios Extras 1. Uma loja de roupas deseja criar um cadastro com suas peças. Cada peça possui um código que a identifica, uma descrição, um preço-unitário e uma quantidade em estoque. Deseja também manter um cadastro de seus clientes com nome, telefone (o cliente pode ter mais de um, ou nenhum), e as peças que ele já comprou. A data em que o cliente comprou a peça é guardada. 2. Uma empresa bancária mantém um cadastro com os dados dos seus clientes( identidade, nome, endereço{ rua, CEP e bairro} e telefone { o cliente pode ter mais de um}) e de suas contas (número 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 mantém também um cadastro com as suas agências (código e nome), em que cada agência pode ter mais de uma conta. 3. desenhe o Modelo E-R que descreva a situação da Empresa Acme Problemas Ltda., que apresenta a seguinte estrutura: a) cada empregado é representado a partir das seguintes informações básicas: código-empresa, nome, endereço; b) cada departamento é representado por meio de: nome, código departamento; c) cada empregado chefia um ou mais departamentos; d) cada item vendido é representado pelo seu nome, preço, fornecedor, número do modelo (dado pelo fornecedor) e número interno do item ( dado pelo responsável pelo estoque); e) cada fornecedor é descrito pelo seu nome, endereço, itens fornecidos ao estoque e preço; f) os clientes cadastrados têm os seguintes dados: nome, endereço e telefone; g) os representantes da empresa junto aos clientes são empregados; 4. Um banco de dados, utilizado por uma faculdade, usa um sistema de cadastro de inscrição de disciplinas que contém as informações aluno e inscrição. As seguintes informações devem estar incluídas. Aluno: código de aluno, nome do aluno, ano da admissão e telefone de contato; Inscrição: código do aluno, código da disciplina, nome da disciplina, código do curso, nome do curso e data da matrícula. Projete o banco de dados para esses dados. Faça quaisquer suposições razoáveis sobre as dependências envolvidas. 76
  • 81.
  • 82.
    Banco de DadosI 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 deverão compor o sistema , com base nesta lista normalize a estrutura de dados de acordo com as formas normais. Lista de informações que deverão compor o sistema cadastro de clientes: Nome Nome do Pai Nome da Mãe Endereço Telefone1 Telefone2 Número do Fax Número do Celular Telefone do trabalho Data de Nascimento Naturalidade Nacionalidade Endereço de correspondência 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 Cônjuge Número do CPF Número da carteira de identidade 6. De acordo com as regras , normalize as estruturas abaixo. • Relação de Programadores: – Numero da Matrícula – Nome do Programador 78
  • 83.
    Banco de DadosI – Setor – Nível ( 1,2,3) – Descrição do Nível ( 1 - Júnior, 2 - Pleno, 3 - Sênior) • Programas – Codigo do Programa – Nome do Programa – Tempo Estimado – Nível de Dificuldade ( 1, 2 ou 3 ) – Descrição da Dificuldade ( Fácil, Médio, Difícil) Regras do negócio: - Um programa pode ser feito por mais de um Programador; - Um programador pode fazer um ou mais programas; - O Nível de dificuldade do programa depende do tempo estimado para a elaboração do mesmo; 7. Você deve representar usando o modelo lógico a situação descrita a seguir: O Departamento de Vendas da Indústria Beleza Ltda., após estudos de mercado, verificou que para atingir seus objetivos seria necessário adquirir frota de veículos próprios para motorizar seus vendedores. O mercado consumidor foi dividido em regiões de venda; foram estabelecidos percursos de entrega abrangendo pontos estratégicos dessas regiões e vendedores foram designados para cobrir estes percursos. Um sistema deve ser construído para administração da nova sistemática de vendas adotada pela empresa. Após entrevistas com o gerente da área, foram obtidas as seguintes informações: cada região é identificada por um código; uma região é composta de vários pontos estratégicos; as regiões não têm pontos estratégicos em comum; o vendedor tem a responsabilidade de cobrir uma região; uma região pode ser coberta por vários vendedores; a cada dia, um veículo fica sob-responsabilidade de um vendedor; um vendedor pode vender quaisquer itens ativos da tabela de produtos; o vendedor é responsável pela identificação de cada cliente consumidor na nota fiscal; a nota fiscal contendo identificação do vendedor, itens e quantidades vendidas é exigida para comprovação da venda. 79
  • 84.
    Banco de DadosI Unidade 17 - Projeto Final - Revisão Construa um Diagrama Entidade-Relacionamento (DER) para modelar cada um dos sistemas abaixo, mas, como as descrições são informais, elas se prestam a diferentes interpretações. Por este motivo, não existe somente uma solução correta, mas o diagrama deve refletir de forma coerente a descrição. No final, gere o script SQL e crie o banco de dados, cadastrando no mínimo 5 itens para cada tabela (faça todas as consultas necessárias e possíveis para verificar a funcionalidade do banco). 1) Sistema Locadora Uma pequena locadora de vídeos possui ao redor de 2000 fitas de vídeo, cujo empréstimo deve ser controlado. Cada fita possui um número. Para cada filme, é necessário saber seu título e sua categoria (comédia, drama, aventura,... ). Cada filme recebe um identificador próprio. Cada fita é controlada que filme ela contém. Para cada filme há pelo menos uma fita, e cada fita contém 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, é necessário manter a informação 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 é necessário saber seu prenome e seu sobrenome, seu telefone e seu endereço. Além disso, cada cliente recebe um número de associado. Finalmente desejamos saber que fitas cada cliente têm emprestadas. Um cliente pode ter várias fitas em um instante do tempo. Não são mantidos registros históricos de aluguéis. 80
  • 85.
    Banco de DadosI Unidade 18 - Principais Bancos de Dados O dinamismo da área de tecnologia da informação nos proporciona contatos cada vez mais frequentes com uma infinidade de modelos de banco de dados. A cada dia vemos a notícia do lançamento de uma nova plataforma de gerenciamento de dados. No entanto alguns bancos de dados obtiveram maior notoriedade no mundo da informática. Dentre estes bancos cabe destacar o Microsoft Access, que foi um dos precursores dos SGBDs. Sua inovação em termos de capacidade de armazenamento e dinamismo foi o principal responsável pelo seu enorme sucesso. entretanto com a popularização da Internet, e por sua vez, da distribuição das informações em redes de grande alcance, sua limitações foram fincando evidentes. Abriu-se então espaço 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 força na internet, sendo responsáveis por um grande mercado de sites pessoais e de pequeno-médias corporações. Quando nos referimos a grandes corporações, que dependem criticamente do controle de seus dados, nos deparamos com a necessidade de bancos de dados que trabalhem, com recursos mais avançados, tais como replicação, serviços de integração, bussines inteligence, etc. Neste contexto encontramos como grandes expoentes o SQL SERVER e o ORACLE além de outros com menor expressão. O SQL SERVER tem como grande diferencial ser da Microsoft o que faz com que sua integração com linguagens .Net ocorra de forma natural. Nas próximas 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 popularização do mesmo, o Microsoft Accces. Depois trataremos das principais características e formas de manipulação do MYSQL. Finalizando nosso trabalho falaremos do SQL SERVER e seus principais atributos. 81
  • 86.
    Banco de DadosI Unidade 19 - Microsoft Access 19.1 Introdução O Access é um poderoso software de gerenciamento de banco de dados, que possibilita ao usuário um gerenciamento preciso de dados e a possibilidade de geração de consultas, formulários, relatórios, etiquetas e a criação de aplicativos personalizados, bem como a integração com outros aplicativos. 19.2 ARQUIVOS DE BANCO DE DADOS DO ACCESS Com o Microsoft Access, você pode gerenciar todas as informações 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. Formulários para exibir, adicionar e atualizar dados em tabelas. Relatórios para analisar ou imprimir dados em um layout específico. Páginas de acesso a dados para exibir, atualizar ou analisar os dados do banco de dados na Internet ou em uma intranet. 82
  • 87.
    Banco de DadosI TABELAS E RELACIONAMENTOS Para armazenar dados, crie uma única tabela para cada tipo de informação rastreada. Para reunir os dados de várias tabelas em uma consulta, formulário, relatório ou página de acesso a dados, defina relacionamentos entre as tabelas. 83
  • 88.
    Banco de DadosI CONSULTAS Para localizar e recuperar somente os dados que atendem às condições especificadas, incluindo dados de várias tabelas, crie uma consulta. Uma consulta também pode atualizar ou excluir diversos registros simultaneamente, além de efetuar cálculos predefinidos ou personalizados em seus dados. FORMULÁRIOS Para exibir, inserir e alterar dados de maneira fácil e direta, crie um formulário. Quando você abre um formulário, o Microsoft Access recupera os dados de uma ou mais tabelas e exibe-os na tela com o layout escolhido no Assistente de formulário, ou com o layout criado por você no modo de design. RELATÓRIOS 84
  • 89.
    Banco de DadosI Para analisar os dados ou imprimi-los de determinada maneira, crie um relatório. Por exemplo, você poderia imprimir um relatório que agrupasse dados e calculasse totais, e outro relatório com outros dados formatados para impressão de etiquetas de endereçamento. 85
  • 90.
    Banco de DadosI PÁGINA DE ACESSO A DADOS Para disponibilizar dados na Internet ou em uma intranet para relatórios interativos, entrada ou análise de dados, use uma página 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 página. 19.3 INICIANDO O ACCESS Para acessar o Access basta utilizar a barra de ferramentas do Office ou através de IniciarProgramas(Todos os programas) ( Microsoft Office) Microsoft Access. É recomendável criar um atalho na área de trabalho para tornar o acesso ao Access mais rápido. 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 versão de seu Microsoft Office, e que poderá variar conforme a configuração que o usuário tenha definido inicialmente. Comparando com outros aplicativos do Office, o Access não abre automaticamente um novo arquivo como o Word e o Excel, desta forma o usuário deverá optar por uma das opções no Painel de Tarefa.. O Access grava seus arquivos com a extensão MDB e além desta extensão existe um arquivo com extensão 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
  • 91.
    Banco de DadosI Barra de Barra de menu título 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 botões, menus ou uma combinação dos dois. Seguem dois tipos de barras de ferramentas e menus 87
  • 92.
    Banco de DadosI 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, é possível criar ou utilizar qualquer objeto de banco de dados ou de projeto do Access. 88
  • 93.
    Banco de DadosI Os objetos de um banco de dados do Access se relacionam como mostrado na figura abaixo: 89
  • 94.
  • 95.
    Banco de DadosI 19.7 CRIANDO UM NOVO BANCO DE DADOS O Microsoft Access oferece dois métodos para criação de um banco de dados do Access. Você pode usar um Assistente de banco de dados para criar em uma operação as tabelas, formulários e relatórios necessários para o tipo de banco de dados que você escolheu - esse é o modo mais fácil para iniciar a criação do banco de dados. Ou você pode criar um banco de dados em branco e adicionar as tabelas, formulários, relatórios e outros objetos posteriormente - esse é o método mais flexível, mas exige que você defina cada elemento de banco de dados separadamente. Em qualquer dos métodos, você pode modificar e estender o banco de dados a qualquer momento após ele ter sido criado. Criar um banco de dados utilizando um Assistente de banco de dados: Clique em Novo na barra de ferramentas. No painel de tarefas Novo arquivo, em Novo com base em modelo, clique em Modelos gerais. Na guia Bancos de dados, clique no ícone do tipo de banco de dados que você deseja criar e, em seguida, clique em OK. Na caixa de diálogo Novo arquivo de banco de dados, especifique um nome e local para o banco de dados e, em seguida, clique em Criar. Siga as instruções do Assistente de banco de dados. Observação: Não é possível usar o Assistente de banco de dados para adicionar novas tabelas, formulários ou relatórios a um banco de dados existente. Em versões mais atuais a exibição do assistente para a criação de um novo banco de dados, baseia-se na possibilidade de baixar novos modelos de bancos de dados. Segue uma imagem que retrata esta opção 91
  • 96.
    Banco de DadosI 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 diálogo 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(Botão do Microsoft Office), clique em Abrir . Clique em um atalho no lado esquerdo da caixa de diálogo Abrir ou, na caixa Examinar, clique na unidade de disco ou pasta que contém o banco de dados do Microsoft Access que você deseja. Na lista de pastas, clique duas vezes nas pastas até abrir aquela que contém o banco de dados. Se você não conseguir localizar o banco de dados que deseja abrir, clique em Ferramentas na barra de ferramentas da caixa de diálogo Abrir e, em seguida, clique em Pesquisar . Na caixa de diálogo Pesquisar, digite critérios de pesquisa adicionais. 92
  • 97.
    Banco de DadosI Siga um destes procedimentos: Clique duas vezes no banco de dados. Para abrir o banco de dados para acesso compartilhado em um ambiente multiusuário, de modo que você e outros usuários 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 não editá-lo, clique na seta próxima ao botão Abrir e, em seguida, clique em Abrir como somente leitura. Para abrir o banco de dados com acesso exclusivo, clique na seta próxima ao botão Abrir e, em seguida, clique em Abrir exclusivo. Para abrir o banco de dados para acesso somente leitura e também impedir que outros usuários o abram, clique na seta próxima ao botão Abrir e, em seguida, clique em Abrir exclusivo como somente leitura. Observação: Você pode abrir diretamente um arquivo de dados em um formato de arquivo externo, como dBASE, Paradox, Microsoft Exchange, ou Microsoft Excel; você também 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 vínculos a cada tabela no banco de dados externo. 19.9 FECHANDO UM BANCO DE DADOS 93
  • 98.
    Banco de DadosI 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 opção Fechar do menu Arquivo do programa. Laboratório A. O que é um banco de dados? B. Cite 3 exemplos de banco de dados: C. Quais são os objetos de um banco de dados do Access? D. Quais são os dois tipos de arquivos padrão criados pelo Access? E. Ao copiar um arquivo de banco de dados, é necessário copiar também o arquivo com extensão LDB? Justifique: F. Como é possível abrir mais de um banco de dados ao mesmo tempo no Access? 94
  • 99.
    Banco de DadosI Unidade 20 - TABELAS Uma tabela é um conjunto de dados sobre um tópico específico, como produtos ou fornecedores. Utilizar uma tabela separada para cada tópico 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 são organizados em tabelas Tabelas organizam dados em colunas (chamadas campos) e linhas (chamados registros). Por exemplo, cada campo em uma tabela Produtos contém o mesmo tipo de informação para cada produto, como o nome do produto. Cada registro nessa tabela contém todas as informações sobre um produto, como o nome do produto, o número de identificação do fornecedor, as unidades em estoque etc. Modo de design da tabela No modo de design da tabela, é possível criar uma tabela inteira desde o início ou adicionar, excluir ou personalizar os campos em uma tabela existente. 95
  • 100.
    Banco de DadosI 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 visualização, edição ou impressão. Em uma tabela, o campo é uma chave primária que você define no modo de design da tabela. Esse mesmo campo também 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 necessárias 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 necessárias para localizar, editar e imprimir registros. 96
  • 101.
    Banco de DadosI Trabalhando com colunas, linhas e subfolhas de dados Você pode encontrar ferramentas para trabalhar com colunas, linhas e subfolhas de dados na própria folha de dados, ou clicando com o botão direito do mouse em um seletor de colunas. Percorrendo registros Você pode usar a barra de ferramentas de navegação para percorrer os registros de uma folha de dados. 97
  • 102.
    Banco de DadosI 20.1 CRIANDO UMA NOVA TABELA A criação de uma tabela no Access pode ser realizada de 3 maneiras diferentes como como vamos ver a seguir: Observação: As informações deste tópico se aplicam somente a um banco de dados do Microsoft Access (.mdb). Para criar uma tabela em branco (vazia) a fim de inserir seus próprios 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 instruções das caixas de diálogo do Assistente de tabela. 98
  • 103.
    Banco de DadosI 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 padrão das colunas são 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 própria 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 números, insira-os em um formato consistente para que o Microsoft Access possa criar um tipo de dados e um formato de exibição apropriados para a coluna. Qualquer coluna que você deixar vazia será excluída quando você salvar a folha de dados. 99
  • 104.
    Banco de DadosI 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 primária. Se você não inseriu dados que possam ser utilizados para identificar cada linha de sua tabela de forma exclusiva, como números de série ou de identificação, é recomendável que você clique em Sim. Se você inseriu dados que possam identificar cada linha de forma exclusiva, clique em Não e especifique o campo que contém os dados como sua chave primária 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 padrão (Texto) ou clique na coluna Tipo de dados, clique na seta e selecione o tipo de dados desejado. 100
  • 105.
    Banco de DadosI Na coluna Descrição, digite uma descrição das informações que constarão nesse campo. Essa descrição é exibida na barra de status quando dados são adicionados ao campo e ela é incluída na definição do objeto da tabela. A descrição é opcional. Defina um campo de chave primária antes de salvar sua tabela. Abra uma tabela no modo de design. Selecione o campo ou campos que você deseja definir como chave primária. Para selecionar um campo, clique no seletor de linha do campo desejado. Para selecionar vários campos, mantenha pressionada a tecla CTRL e, em seguida, clique no seletor de linha de cada campo. Clique em Chave primária na barra de ferramentas. Observação Se você deseja que a ordem dos campos em uma chave primária de campos múltiplos 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 Primária. Observação: Você não precisa definir uma chave primária, mas normalmente é recomendável fazê-lo. Se você não definir uma chave primária, 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 usuário deverá especificar o seu tipo de dados. A lista a seguir resume todos os tipos de dados de campos disponíveis no Microsoft Access, seus usos e tamanhos de armazenamento. Texto Use para texto ou combinações de texto e números, como endereços, ou para números que não exigem cálculos, como códigos postais, números de telefone ou de peças. Armazena até 255 caracteres. A propriedade FieldSize controla o número máximo de caracteres que podem ser inseridos. Memorando Use para texto longo e números, como anotações ou descrições. Armazena até 65.536 caracteres. 101
  • 106.
    Banco de DadosI Número Use para dados numéricos a serem incluídos em cálculos matemáticos, exceto os que envolvam valores monetários (use o tipo Moeda). Armazena 1, 2, 4 ou 8 bytes; 16 bytes para código de replicação (GUID). A propriedade FieldSize define o tipo Número específico. Data/Hora Use para datas e horas. Armazena 8 bytes. Moeda Use para valores monetários e para evitar arredondamento durante os cálculos. Armazena 8 bytes. AutoNumeração Use para números sequenciais (incremento de 1) ou aleatórios exclusivos que são automaticamente inseridos quando um registro é adicionado. Armazena 4 bytes; armazena 16 bytes para código de replicação (GUID). Sim/Não Use para dados que podem ter somente um de dois valores possíveis, como Sim/Não, Falso/Verdadeiro, Ativado/Desativado. Valores Nulo não são permitidos. Armazena 1 bit. Objeto OLE Use para objetos OLE (como documentos do Microsoft Word, planilhas do Microsoft Excel, imagens, sons ou outros dados binários) que foram criados em outros programas usando o protocolo OLE. Armazena até 1 gigabyte (limitado pelo espaço 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 combinação — a escolha desta opção na lista de tipos de dados iniciará um assistente que definirá isso para você. Requer o mesmo tamanho de armazenamento que a chave primária que corresponde ao campo Pesquisa —- normalmente 4 bytes. 102
  • 107.
    Banco de DadosI 20.6 PROPRIEDADES DE CAMPOS Além do tipo de dados outras propriedades podem ser definidas com o objetivo de restringir a entrada de dados ou mudar a sua exibição no qual listamos abaixo algumas: Propriedade Descrição O número de casas após a vírgula para dados do tipo Casas decimais número. Um texto que descreve o campo e serve como auxílio Descrição no modo folha de dados. O formato serve basicamente para alterar a exibição dos dados. Dependendo do tipo de dados o usuário poderá escolher entre um dos formatos pré-definidos. Como exemplo de formatação pode citar : Formato >[Vermelho] : Exibe os dados em letras maiúsculas e em vermelho mmm-aaaa : Exibe uma data no formato mês abreviado e ano completo. Quando for necessário emitir um relatório ou exibir uma consulta ordenada por um determinado campo o usuário Indexado poderá criar um índice para este campo que tornará a consulta ou relatório mais rápidos de serem executados. A legenda é o título da coluna na tabela. Se não for Legenda especificada o usuário utilizará o próprio nome do campo como título da coluna. Serve para restringir e auxiliar o usuário na entrada de dados. Máscara de entrada Por exemplo uma máscara de entrada para um campo CPF poderia ser informada da seguinte forma : 000.000.000-00 Define como o Access irá gerar os valores de um Novos valores campo do tipo de dados AutoNumeração. Permitir comprimento Define se um campo aceita somente espaços em 103
  • 108.
    Banco de DadosI Propriedade Descrição zero branco como conteúdo. Uma expressão que restringe a entrada de dados no campo. Por exemplo a Regra de Validação <=Data() Regra de validação não permite a entrada de um data maior que a data atual. Define se um campo deve ser obrigatoriamente Requerido preenchido ou não. De acordo com o tipo de dados o usuário poderá definir qual é o tamanho do campo. Por exemplo ao utilizar um Tamanho do campo campo do tipo número, o usuário deverá especificar um dos tamanhos permitidos de acordo com a tabela de tipos de dados. Um texto que é exibido quando o usuário excede a Texto de validação regra de validação. Um valor que será automaticamente colocado no Valor padrão campo evitando que o usuário digite sempre o mesmo valor para um campo que não sofre muitas alterações. 20.7 BARRA DE FERRAMENTAS DO MODO DESIGN DE TABELA A barra de ferramentas do modo design apresenta os seguintes botões, que tem por finalidade facilitar algumas ações. Os comandos não citados possuem a mesma função dos outros aplicativos Office. Novo objeto Alterna entre os modos Janela do banco de dados 104
  • 109.
    Banco de DadosI Construir (Expressões) Define um campo como chave primária Propriedades Permite a edição dos índices de uma tabela primária Inserir linha Excluir linha 20.8 EDITANDO DADOS NO MODO FOLHA DE DADOS Existem várias maneiras de cadastrar dados em um banco de dados do Access, uma das maneiras é através do modo folha de dados, muito semelhante ao modo no qual os dados são inseridos em uma planilha do Excel. Na base do modo folha de dados são encontrados os botões que servem para navegação de registros. 105
  • 110.
    Banco de DadosI A tabela abaixo descreve as alterações da barra de ferramentas quando alternamos para o modo folha de dados. Botão Nome Descrição Alterna para o modo estrutura que permite a alteração Exibir das definições da tabela. Inserir Em um campo do tipo hyperlink permite que o usuário hyperlink informe um caminho válido. Barra de Exibe a barra de ferramentas para navegação na ferramentas Web Internet. Classificação Classifica os dados na ordem crescente pelo campo crescente selecionado. Classificação Classifica os dados na ordem decrescente pelo campo decrescente selecionado. Filtrar por Ativa o modo de filtro exibindo somente os dados com a seleção seleção atual. Filtrar por Permite que o usuário defina um filtro mais complexo formulário para a tabela atual. Aplicar/remov Aplica ou remove um filtro ativado pelos dois botões er filtro anteriores. Localizar Ativa a caixa de diálogo Localizar. Novo registro Permite a inclusão de novos registros. Excluir Exclui o(s) registro(s) atualmente selecionados(s). registro 106
  • 111.
    Banco de DadosI LABORATÓRIO 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 Tipo de dados Tamanho Código do cargo AutoNumeração Inteiro Longo Descrição do cargo Texto 25 tblSetores Campo Tipo de dados Tamanho Código do setor AutoNumeração Inteiro Longo Descrição do setor Texto 25 tblEmpresas Campo Tipo de dados Tamanho Máscara Código da AutoNumeração Inteiro Longo empresa Razão Social Texto 50 >[Azul] Fone Texto 10 (999) 999- 9999 Fax Texto 07 999-9999 Observações Memorando tblFuncionários Campo Tipo de dados Tamanho Código do funcionário AutoNumeração Inteiro Longo Código da empresa Número Inteiro Longo Nome do funcionário Texto 30 107
  • 112.
    Banco de DadosI Código do cargo Número Inteiro Longo Código do setor Número Inteiro Longo Salário Moeda J. Na tabela tblCargos cadastre os seguintes cargos: Gerente, Auxiliar administrativo, Diretor: K. Na tabela tblSetores cadastre os seguintes setores: Produção, Administração, Recursos Humanos: L. Feche o banco de dados criado e saia do Access: 108
  • 113.
    Banco de DadosI Unidade 21 - RELACIONAMENTOS 21.1 BANCO DE DADOS RELACIONAL Um banco de dados relacional armazena suas informações em diversas tabelas que se relacionam através de determinados campos (chave-primária). O Access é um sistema de gerenciamento de banco de dados relacional, pois as diversas informações de um banco de dados em Access podem ser divididas em diversas tabelas e relacionadas entre si para a emissão de relatórios e geração de consultas, porém 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, não necessariamente como o mesmo nome, mas com o mesmo tamanho e tipo de dados. 21.2 TIPOS DE RELACIONAMENTOS Os tipos de relacionamentos são divididos em três tipos básicos e são descritos a seguir: Relacionamentos Um-Para-Vários Ocorre quando um registro na tabela primária se relaciona com vários registros na tabela secundária. 109
  • 114.
    Banco de DadosI Relacionamentos Um-Para-Um Ocorre quando um registro na tabela primária se relaciona com apenas um registro na tabela secundária. Relacionamentos Vários-Para-Vários Os relacionamentos vários-para-vários não são gerenciados diretamente pelo Access e devem ser evitados com a adição de uma tabela intermediária como no exemplo abaixo: A inclusão da tabela Detalhes da obra quebrou o relacionamento vários-para-vários existente entre as duas tabelas relacionando-as indiretamente. 110
  • 115.
    Banco de DadosI 21.3 DEFININDO OS RELACIONAMENTOS Para definir os relacionamentos no Access basta utilizar o botão relacionamentos da barra de ferramentas ou através do menu FerramentasRelacionamentos. Em primeiro lugar o usuário deverá adicionar as tabelas que farão parte do relacionamento, logo após basta arrastar o campo, que será relacionado, da tabela primária para a tabela secundária e a seguinte caixa de diálogo será exibida. Além do relacionamento em si também podem ser definidas algumas propriedades que são descritas abaixo: Botão Nome A integridade referencial é um sistema de regras que o Microsoft Access utiliza para garantir que os relacionamentos entre registros de tabelas Impor integridade referencial relacionadas sejam válidos e que você não exclua ou altere, acidentalmente, dados relacionados. Atualiza dados na tabela secundária Propagar atualização dos automaticamente quando os dados forem alterados campos relacionados na tabela primária. Exclui dados na tabela secundária Propagar exclusão dos automaticamente quando os dados forem excluídos registros selecionados na tabela primária. 111
  • 116.
    Banco de DadosI As botões descritos abaixo são exibidos na tela de relacionamentos : Botão Nome Descrição Adiciona novas tabelas a tela de Adicionar tabelas 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 Limpar layout Limpa todos os relacionamentos. Para excluir um relacionamento existente basta apenas marcar a linha que representa o relacionamento desejado e pressionar a tecla DELETE. Caso o usuário exclua uma tabela da tela de relacionamentos, as relações não serão excluídas. Definindo as Propriedades de Pesquisa Um dos objetivos de relacionar tabelas é evitar dados redundantes, após ter criado as tabelas do banco de dados o usuário poderá definir no modo estrutura de tabela as propriedades de pesquisa, que permitirão que determinados campos exibam dados de outras tabelas. Por exemplo, ao cadastrar um novo produto ao invés de termos que digitar o código da categoria podemos definir as propriedades de pesquisa do campo código da categoria para que seja exibida uma caixa de combinação com o nome das categorias. A maneira mais simples de definirmos as propriedades de pesquisa de um campo é utilizarmos a opção Assistente de pesquisa no tipo de dados do campo. Ao definir as propriedades de pesquisa através do Assistente de pesquisa o Access criará automaticamente o relacionamento, porém não definirá as regras de integridade referencial e propagação de atualização e exclusão. 112
  • 117.
    Banco de DadosI LABORATÓRIO 3 Através do comando relacionamentos, relacione as tabelas criadas no laboratório 2. Através do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de pesquisa para o campo Código da empresa na tabela tblFuncionários: Através do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de pesquisa para o campo Código do cargo na tabela tblFuncionários: Através do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de pesquisa para o campo Código do setor na tabela tblFuncionários: Quais tabelas seriam necessárias para criar um banco de dados de uma locadora de veículos? Elabore um modelo. (Este laboratório deverá ser realizado em conjunto com o instrutor e a turma) 113
  • 118.
    Banco de DadosI Unidade 22 - CONSULTAS 22.1 O QUE SÃO AS CONSULTAS NO ACCESS Como foi descrito anteriormente as consultas são perguntas feitas sobre os dados de um banco de dados ou ações que modificam estes dados. Quando você abre uma consulta no modo de design, ou abre um formulário, relatório ou folha de dados e mostra a janela Filtrar/classificar avançado, é exibida a grade de design, que pode ser utilizada para fazer uma variedade de alterações 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
  • 119.
    Banco de DadosI Clique no botão Avançar e na próxima 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 botão Adicionar e logo após no botão Fechar. 115
  • 120.
    Banco de DadosI Na caixa de dialogo Consulta1: consulta seleção, 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 botão Executar na barra de ferramentas Design de consulta. As consultas no Access são realizadas na grade QBE (query by exemple) que permite a definição de consultas complexas sem a necessidade de programação 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
  • 121.
    Banco de DadosI Os botões descritos abaixo são exibidos na tela de consultas : Botão Nome Descrição Tipo de Alterna entre os tipos de consultas permitidos pelo consulta Access. Executar Executa a consulta atualmente definida. Adicionar Adiciona novas tabelas a tela de consultas. tabelas Exibe a linha de Totais na grade QBE que permite a Totais totalização de dados. Valores Permite a definição de percentuais de registros a serem principais exibidos como resultado. 117
  • 122.
    Banco de DadosI 22.4 TIPOS DE CONSULTAS Como foi descrito anteriormente as consultas são perguntas feitas sobre os dados de um banco de dados ou ações que modificam estes dados. Consulta Seleção É o tipo mais comum de consulta do Access, tem por objetivo retornar ao usuário uma série de dados de uma ou mais tabelas. Através do botão de Totais poderá também retornar dados resumidos. O exemplo abaixo mostra a definição de uma consulta de seleção simples com dados de duas tabelas. O exemplo abaixo mostra a definição de uma consulta de seleção com totais. 118
  • 123.
    Banco de DadosI Consulta de Tabela de Referência Cruzada As consultas de referência cruzada têm por objetivo resumir dados e utilizam basicamente um recurso semelhante ao utilizado nas tabelas dinâmicas do Excel. A figura abaixo mostra um exemplo de consulta de referência cruzada: Consulta Criar Tabela A consulta do tipo Criar tabela permite que dados de uma ou mais tabelas sejam lançados em uma nova tabela. A interface é semelhante ao das consultas de seleção a única diferença que ao alterar o tipo de consulta o usuário 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 três tabelas existentes: 119
  • 124.
    Banco de DadosI Consulta Atualização A consulta do tipo Atualização 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
  • 125.
    Banco de DadosI Consulta Acréscimo A consulta do tipo acréscimo é 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 Exclusão A consulta do tipo exclusão serve para excluir um conjunto de registro de uma tabela baseado em critérios informados. Os registros são excluídos definitivamente. A tela abaixo exibe a definição de uma consulta que exclui todos os produtos da categoria ―Brinquedos‖ da tabela de Produtos: 121
  • 126.
    Banco de DadosI ‘ Utilizando Parâmetros Os parâmetros são variáveis definidas pelo usuário que têm seus valores informados na execução da consulta. Por exemplo ao invés do usuário fornecer um critério do tipo ―Bebidas‖ para uma consulta que lista os produtos de uma categoria específica o usuário pode utilizar um critério do tipo [Entre com o nome da categoria]. No exemplo abaixo ilustramos a consulta descrita acima: O texto utilizado como parâmetro não pode ser um nome de campo e deve ter o seu tipo de dados especificado através do comando ConsultaParâmetros. 122
  • 127.
  • 128.
    Banco de DadosI LABORATÓRIO 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 Classificação Critérios/Obs Produtos: Nome do Critério: Nome do Lista de produtos Produto Preço Unitário Produto Preço Unitário >95 País dos Funcionários : Nome Nome Funcionários País Funcionários por Funcionários: País Consulta com País país Código Totais Categorias: Nome da Consulta com Produtos por Categoria Nome da Totais categoria Produtos: Código do Categoria Produto Produtos: Nome do Critério: Produtos com produto Nome do Entre 10 e 20 estoque crítico Unidades em produto estoque Clientes: Nome da Critério: Nome da Empresas com fax empresa Negado é nulo empresa Fax Clientes: Nome da Critério: Clientes do Brasil e empresa Nome da Brasil ou Argentina Fone empresa Argentina País Produtos: Preço Atualizar para: Atualização do Unitário [PreçoUnitário]*1 preço em 10% ,1 Exclusão dos Clientes: País Critério: clientes da Argentina 124
  • 129.
    Banco de DadosI Argentina Funcionários: Nome do Criação de Funcionário tabela Exporta Cidade Cidade Critério : Funcionários USA País Estados Unidos Clientes: Nome da Tabela Quantidade de empresa Nome da referência pedidos por cliente Funcionários: Nome empresa cruzada e funcionário Pedidos: Número do Funcionário Pedido Categorias: Nome da Consulta com Média de preço por categoria Nome da Totais categoria Produtos: Preço categoria Unitário 125
  • 130.
    Banco de DadosI Unidade 23 - FORMULÁRIOS 23.1 O QUE SÃO FORMULÁRIOS? Como foi descrito anteriormente um formulário é uma forma de visualizar e editar os dados de um banco de dados do Access. Os formulários fornecem facilidade na edição de registros e apresentam os dados em uma forma personalizada. Você pode utilizar diversos tipos de efeitos (cores/linha e fontes) em seus formulários. Abaixo ilustramos o exemplo de um formulário de um cadastro de clientes. 126
  • 131.
    Banco de DadosI 23.2 CRIANDO UM NOVO FORMULÁRIO É possível criar um formulário de três maneiras. Com base em uma única tabela ou consulta utilizando o Auto Formulário. O Auto Formulário cria um formulário que exibe todos os campos e registros na tabela ou consulta base. Se a origem do registro selecionada tiver tabelas ou consultas relacionadas, o formulário também incluirá todos os campos e registros dessas origens do registro. Na janela Banco de dados, clique em Formulários em Objetos. Clique no botão Novo na barra de ferramentas da janela Banco de dados. Na caixa de diálogo Novo formulário, clique em um destes assistentes: Auto Formulário: Colunar: Cada campo aparece em uma linha separada com um rótulo à sua esquerda. Auto Formulário: Tabular: Os campos em cada registro aparecem em uma linha, com os rótulos exibidos uma vez na parte superior do formulário. Auto Formulário: Folha de dados: Os campos em cada registro aparecem em um formato linha-e-coluna, com um registro em cada linha e um campo em cada coluna. Os nomes dos campos aparecem na parte superior de cada coluna. Auto Formulário: Tabela dinâmica: O formulário abre em modo de tabela dinâmica. É possível adicionar campos arrastando-os da lista de campos para as diferentes áreas no modo de exibição. Auto Formulário: Gráfico dinâmico: O formulário abre em modo de gráfico dinâmico. É possível adicionar campos arrastando-os da lista de campos para as diferentes áreas no modo de exibição. Clique na tabela ou consulta que contém os dados em que você deseja basear o formulário. Clique em OK. O Microsoft Access aplica o último autoformato usado para o formulário. Caso você ainda não tenha criado um formulário com um assistente ou não tenha usado o comando Auto Formatação no menu Formatar, ele usará o autoformato Padrão 127
  • 132.
    Banco de DadosI DICA: Uma das maneiras mais rápidas para se criar um formulário padrão é utilizar um dos Assistentes de Auto formulário que automaticamente criarão formulários com a mínima intervenção do usuário. Basta clicar na barra de ferramentas banco de dados no comando Novo objeto No modo de design: Você cria um formulário básico e o personaliza no modo de design para atender às suas necessidades. Na janela Banco de Dados, clique em Formulários em Objetos. Clique no botão Novo na barra de ferramentas da janela Banco de dados. Na caixa de diálogo Novo formulário, 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 formulário. Se o formulário não for conter dados (por exemplo, se for para utilizar como um menu de controle para abrir outros formulários ou relatórios ou se você desejar criar uma caixa de diálogo personalizada), não selecione nada nessa lista. Dica: Se você deseja criar um formulário que utilize dados de mais de uma tabela, baseie o seu formulário em uma consulta. Clique em OK. O Microsoft Access exibe o formulário no modo de design. Conforme figura abaixo: Barra de ferramentas Barra de ferramentas de Design do formulário formatação (formulário/relatório) 128
  • 133.
    Banco de DadosI Layout Barra de ferramentas Caixa de ferramentas 129
  • 134.
    Banco de DadosI 23.3 CAIXA DE FERRAMENTAS Ao trabalharmos com a estrutura de formulários e relatórios poderemos acrescentar objetos (controles) através da caixa de ferramentas. Caso o botão de Assistente(segundo botão da caixa de ferramentas) esteja ativado, será automaticamente exibido para alguns controles um Assistente que auxiliará o usuário na inclusão do mesmo. Por exemplo, ao escolher a ferramenta de botão de comando o usuário ativará automaticamente um assistente que perguntará ao usuário qual a ação que o botão executará. A figura abaixo exibe os botões da caixa de ferramentas: Retângulo ActiveX Para utilizar a caixa de ferramentas, basta selecionar uma de suas opções e clicar na área do formulário onde o conteúdo será colocado. Além das barras de ferramentas e da caixa de ferramentas o usuário poderá utilizar o botão direito do mouse para acessar as opções de um determinado objeto. Os menus do modo estrutura fornecem uma maneira simples de alinhar, distribuir e alterar a disposição dos objetos em um formulário. Definir uma propriedade no modo de design 130
  • 135.
    Banco de DadosI Abra uma tabela, consulta, formulário, relatório ou uma página de acesso a dados no modo de design. Abra a folha de propriedades seguindo um destes procedimentos: No caso de um formulário ou relatório, clique duas vezes no seletor de formulários ou no seletor de relatórios. Em uma página de acesso a dados, clique em Selecionar página no menu Editar. Em uma tabela ou consulta, clique em Propriedades , na barra de ferramentas. Para uma seção em um formulário ou relatório, clique duas vezes no seletor de seções. Para uma seção em uma página de acesso a dados, clique duas vezes na barra de seções. Para definir propriedades de um campo de consulta, clique na célula 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 página de acesso a dados, clique acima da primeira seção, e em Propriedades na barra de ferramentas. Para definir propriedades de um controle, clique no controle, e em Propriedades na barra de 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 configuração ou expressão na caixa da propriedade. 131
  • 136.
    Banco de DadosI Se aparecer um botão Construir próximo 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 espaço para inserir ou editar uma configuração de propriedade, pressione SHIFT+F2 para abrir a caixa Zoom Observação: Se a propriedade AllowDesignChanges de um formulário estiver definida como Todos os modos, você também poderá definir propriedades de formulário no modo de formulário e no modo de folha de dados. Outro item importante no modo design de formulário é a folha de propriedades dos objetos que pode ser acessada pelo botão da barra de ferramentas ou através do botão direito do mouse propriedades. Cada objeto possui várias propriedades que podem ser definidas através da folha de propriedades. Na ilustração abaixo é exibida a folha de propriedades para o objeto formulário: 132
  • 137.
    Banco de DadosI As propriedades de um objeto são divididas em categorias para facilitar a localização de uma propriedade específica. 23.4 SOBRE AS SEÇÕES DE UM FORMULÁRIO É possível dividir as informações de um formulário em seções. Todos os formulários têm uma seção de detalhes, mas um formulário também pode incluir seções de cabeçalho do formulário, cabeçalho da página, rodapé da página e rodapé do formulário. Cada seção tem uma finalidade específica e é impressa em uma ordem previsível no formulário. No modo de design, as seções são representadas como faixas e cada seção contida no formulário é representada uma vez. Em um formulário impresso, o cabeçalho e o rodapé da página podem ser repetidos uma vez em cada página. É possível determinar onde as informações aparecem em cada seção ao posicionar controles, como etiquetas e caixas de texto. Esta ilustração mostra o formulário Adicionar produtos no modo de design. 133
  • 138.
    Banco de DadosI Esta ilustração mostra a aparência que o formulário Adicionar produtos terá ao ser impresso. Um subformulário também pode ter seções. Por exemplo, este subformulário possui um cabeçalho e um rodapé de formulário, além da seção de detalhes. 134
  • 139.
    Banco de DadosI Você pode ocultar ou redimensionar uma seção, adicionar uma imagem ou definir a cor do plano de fundo de uma seção. Também é possível definir propriedades da seção para personalizar a maneira como o conteúdo de uma seção será impresso. 23.5 SUBFORMULÁRIOS Um subformulário é um formulário dentro de outro. O formulário primário é chamado de formulário principal e o formulário dentro do formulário é denominado subformulário. Uma combinação formulário/subformulário é sempre citada como um formulário hierárquico, um formulário mestre/detalhe ou um formulário pai/filho. Os subformulários são eficientes principalmente quando se deseja exibir dados de tabelas ou consultas com um relacionamento um-para-muitos. Por exemplo, você poderia criar um formulário com um subformulário 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 formulário principal e o subformulário neste tipo de formulário são vinculados de tal forma que o subformulário exiba apenas registros que estão relacionados ao registro atual no formulário principal. Por exemplo, quando o formulário principal exibir a categoria Bebidas, o subformulário exibirá apenas os produtos na categoria Bebidas. Exibindo um subformulário em um formulário 135
  • 140.
    Banco de DadosI Quando você cria um subformulário, é possível criá-lo de forma a ser exibido em modo folha de dados, modo de formulário, modo de tabela dinâmica ou modo de gráfico dinâmico. Também é possível definir o modo de exibição padrão do subformulário e desativar um ou mais modos de exibição. É possível alternar o modo de exibição de uma subformulário quando o formulário principal é exibido em modo de formulário. Os subformulários não são exibidos quando um formulário é aberto no modo de tabela dinâmica ou modo de gráfico dinâmico. 136
  • 141.
    Banco de DadosI Sincronizando um formulário e um subformulário Quando você cria um formulário e um subformulário com base em tabelas que possuem um relacionamento um-para-muitos, o formulário principal exibe o lado "um" e o subformulário exibe o lado "muitos" do relacionamento. O formulário principal é sincronizado com o subformulário de tal forma que o subformulário exiba apenas registros relacionados ao registro no formulário principal. Se você utilizar um assistente para criar um subformulário ou se arrastar um formulário, tabela ou consulta da janela Banco de dados para outro formulário a fim de criar um subformulário, o Microsoft Access sincronizará automaticamente o formulário principal com o subformulário se uma das seguintes condições for verdadeira. Se: Você tiver definido relacionamentos para as tabelas selecionadas ou para as tabelas base das consultas selecionadas. O formulário principal for baseado em uma tabela com uma chave primária e o subformulário for baseado em uma tabela que contém um campo com o mesmo nome da chave primária e com o tipo de dados e tamanho de campo igual ou compatível. Por exemplo, em um banco de dados do Microsoft Access, se a chave primária da tabela base do formulário principal for um campo AutoNumeração e sua propriedade FieldSize for definida com Inteiro longo, o campo 137
  • 142.
    Banco de DadosI correspondente na tabela base do subformulário deve ser um campo numérico com a propriedade FieldSize definida como Inteiro longo. Se você selecionar uma ou mais consultas, as tabelas base da consulta ou consultas deverão atender a essas condições. Aninhando níveis Um formulário principal poderá ter qualquer número de subformulários se você colocar cada um deles no formulário principal. Você também pode aninhar até sete níveis de subformulários. Isto significa que você pode ter um subformulário dentro de um formulário principal e um outro subformulário dentro daquele subformulário e assim por diante. Por exemplo, você pode ter um formulário principal que exiba clientes, um subformulário que exiba pedidos e outro subformulário que exiba detalhes do pedido. Entretanto, um formulário não exibirá subformulários em modo de tabela dinâmica ou modo de gráfico dinâmico. Inserindo dados usando um formulário e subformulário Quando você utiliza um formulário com um subformulário para inserir novos registros, o Microsoft Access salva o registro atual no formulário principal quando você insere dados no subformulário. Isto assegura que os registros na tabela "muitos" terão um registro na tabela "um" com o qual se relacionar. Isto também salva automaticamente cada registro à medida que são adicionados ao subformulário. Criar um subformulário Se o subformulário for vinculado ao formulário principal, certifique-se de que as origens do registro base estejam relacionadas antes de usar este procedimento. Não é possível adicionar um subformulário a um formulário quando ele é exibido em modo de tabela dinâmica ou em modo de gráfico dinâmico. Criar um formulário e um subformulário ao mesmo tempo Na janela Banco de Dados, clique em Formulários em Objetos. Clique no botão Novo na barra de ferramentas da janela Banco de dados. Na caixa de diálogo Novo formulário, clique duas vezes em Assistente de formulário. Na primeira caixa de diálogo do assistente, selecione uma tabela ou consulta na lista. Por exemplo, para criar um formulário Categorias que exiba produtos para cada categoria em um subformulário, selecione a tabela Categorias (o lado "um" do relacionamento um-para-muitos). Observação: Não importa qual tabela ou consulta você escolhe primeiro. Clique duas vezes nos campos que você deseja incluir desta tabela ou consulta. 138
  • 143.
    Banco de DadosI Na mesma caixa de diálogo do assistente, selecione outra tabela ou consulta da lista. Utilizando o mesmo exemplo, selecione a tabela Produtos (o lado " muitos" da relação um-para-muitos). Clique duas vezes nos campos que você deseja incluir desta tabela ou consulta . Quando você clicar em Avançar, 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 formulário Categorias, clique em Por categorias. Na mesma caixa de diálogo do assistente, selecione a opção Formulário com subformulário (s) . Siga as instruções nas demais caixas de diálogo do assistente. Quando você clicar em Concluir, o Microsoft Access criará dois formulários, um para o formulário principal e controle de subformulário, e um para o subformulário. LABORATÓRIO O. Abra o banco de dados criado no laboratório 2: P. Com a ajuda do Assistente de Auto formulário Colunar crie um formulário para cada tabela do banco de dados: Q. Em cada um dos formulários criados no item anterior coloque um botão que feche o formulário: R. Crie um formulário chamado Menu Principal, que possua um botão que abra cada um dos formulários criados no item B: S. No formulário Menu Principal crie um botão que feche o Access: T. Crie um formulário com um subformulário utilizando as tblSetores e tblFuncionários. 139
  • 144.
    Banco de DadosI Unidade 24 - RELATÓRIOS 24.1 O QUE SÃO RELATÓRIOS? Como foi descrito anteriormente um relatório é uma forma de criar listagens e etiquetas de um banco de dados do Access. Os relatórios fornecem facilidade na criação de apresentações personalizadas com a utilização de diferentes tipos de efeitos (fontes, linhas, cores), além de permitir a inclusão de fórmulas de totalização de dados. Abaixo ilustramos o exemplo de um relatório de produtos e preços: 140
  • 145.
    Banco de DadosI 24.2 CRIANDO UM NOVO RELATÓRIO Para criar um novo relatório o usuário poderá utilizar a opção Novo Objeto da barra de ferramentas da janela banco de dados ou o botão Novo na guia Relatórios. Ao escolher o botão Novo da guia Relatórios, será exibida a seguinte caixa de diálogo que permitirá ao usuário escolher um dos Assistentes do Access que auxiliam na criação de novos relatórios. Uma das maneiras mais rápidas para se criar um relatório padrão é utilizar um dos Assistentes de Auto relatório que automaticamente criará um relatório com a mínima intervenção do usuário. Clique no botão Novo Objeto na barra de ferramentas banco de dados em seguida no comando Relatório. Conforme figura ao lado. 141
  • 146.
    Banco de DadosI No modo design que serve apara alterar relatórios existentes ou criação de novos relatórios será exibida a seguinte tela: 142
  • 147.
    Banco de DadosI No modo estrutura de relatório são exibidos os seguintes botões nas barras de ferramentas. Botão Nome Descrição Permite selecionar um objeto na estrutura atual Objeto através do seu nome. Altera o tipo de fonte de um objeto que possua esta Fonte propriedade. Tamanho da Altera o tamanho da fonte. fonte Negrito Aplica o estilo negrito. Itálico Aplica o estilo itálico. Sublinhado Aplica o estilo sublinhado. Esquerda Alinha o texto à esquerda. Centro Centraliza o texto. Direita Alinha o texto à direita. Cor Altera a cor de preenchimento de um objeto. preenchimento Cor fonte Altera a cor da fonte de um objeto. Cor contorno Altera a cor de contorno de um objeto. Contorno Altera a caneta de contorno de um objeto. Aplica um dos diferentes efeitos de sombra aos Sombra objetos. Alterna a exibição entre o modo estrutura/relatório e Exibir folha de dados. Exibe uma lista de campos, caso o relatório esteja Campos baseado em uma consulta ou tabela. Ferramentas Exibe/Oculta a caixa de ferramentas. Classifica dados de um relatório e/ou cria novas Subtotais seções (quebras de relatório). Auto Permite a escolha de um estilo pronto de formatação. formatar Exibe a janela de código do relatório ou relatório Módulo atual. Propriedade Exibe as propriedades de um objeto. s Permite a construção de expressões/macros e código Construtor VBA que pode ser utilizado nas propriedades de um de expressões objeto. 143
  • 148.
    Banco de DadosI 24.3 CAIXA DE FERRAMENTAS Ao trabalharmos com a estrutura de relatórios poderemos acrescentar objetos (controles) através da caixa de ferramentas. A caixa de ferramentas a ser utilizada no modo design de relatórios é a mesma já vista na seção de formulários. Para utilizar a caixa de ferramentas, basta selecionar uma de suas opções e clicar na área do relatório onde o conteúdo será colocado. Além das barras de ferramentas e da caixa de ferramentas o usuário poderá utilizar o botão direito do mouse para acessar as opções de um determinado objeto. Os menus do modo estrutura fornecem uma maneira simples de alinhar, distribuir e alterar a disposição dos objetos em um relatório. Outro item importante no modo design de relatórios é a folha de propriedades dos objetos que pode ser acessada pelo botão da barra de ferramentas ou através do botão direito do mouse propriedades. Cada objeto possui várias propriedades que podem ser definidas através da folha de propriedades. Na ilustração abaixo é exibida a folha de propriedades para o objeto relatório: As propriedades de um objeto são divididas em categorias para facilitar a localização de uma propriedade específica. 144
  • 149.
    Banco de DadosI LABORATÓRIO 6 U. Abra o banco de dados criado no laboratório 2: V. Com a ajuda do Assistente de Auto relatório tabular crie um relatório para cada tabela do banco de dados: W. Crie um novo formulário no modo estrutura que possua um botão para visualizar cada um dos relatórios criados no item B: X. Abra a estrutura do formulário Menu Principal e crie um botão que abra o formulário criado no item C: 145
  • 150.
    Banco de DadosI Unidade 25 - Página de dados 25.1 PARA CRIAR UMA PÁGINA DE ACESSO A DADOS Página de acesso a dados: uma página da Web, publicada a partir do Access, que tem uma conexão com um banco de dados. Em uma página de acesso a dados, é possível exibir, adicionar, editar e manipular os dados armazenados no banco de dados. Uma página pode também incluir dados de outras fontes, como o Excel, ou para abrir uma página no modo Design, modo Página (modo Página: uma janela do Access na qual é possível pesquisar o conteúdo de uma página de acesso a dados. No modo Página, as páginas têm a mesma funcionalidade que têm no Internet Explorer 5.0 ou posterior.) ou no Microsoft Internet Explorer, é necessário instalar o Microsoft Internet Explorer 5.01 com Service Pack 2 (SP2) ou posterior. Se você criar uma página de acesso a dados quando um banco de dados é aberto, o Microsoft Access cria um atalho para a página e exibe o atalho na janela Banco de dados. Se você criar uma página sem abrir um banco de dados, o Microsoft Access criará uma página autônoma. A partir do Microsoft Office Access 2007 já não são suportadas páginas de acesso a dados. Se pretender implementar um formulário de introdução de dados através 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 versão anterior do Access (um arquivo .mdb) e essa base de dados contiver páginas de acesso a dados, poderá ver as páginas no Windows Internet Explorer. Contudo, não poderá efetuar nenhuma ação com essas páginas. 25.2 CRIAR UMA PÁGINA DE ACESSO Criar uma página de acesso a dados que contém todos os campos de uma fonte de registro única (AutoPágina) O comando AutoPágina cria uma página de acesso a dados que contém todos os campos (exceto campos que armazenem imagens) e registros na tabela, consulta ou modo de exibição base. Na guia Objetos da janela Banco de Dados, clique em Páginas . Na barra de ferramentas da janela Banco de dados, clique em Novo. Na caixa de diálogo Nova página de acesso a dados, clique em AutoPágina: Colunar. 146
  • 151.
    Banco de DadosI Clique na tabela, na consulta ou no modo de exibição que contenha os dados nos quais você deseja basear sua página. Clique em OK. Na página de acesso a dados concluída, cada campo será exibido em uma linha separada com um rótulo à esquerda. Se a página resultante não tiver a aparência desejada, você pode modificar a página no modo de design. Observação: Se você definiu um tema padrão, o Microsoft Access o aplica à página. Criar uma página de acesso a dados que contém campos de várias tabelas e consultas (Assistente de página) O assistente formula perguntas detalhadas sobre origens do registro, campos, layout e formato desejados e cria uma página com base nas suas respostas. Se o assistente não for iniciado Essa situação pode ocorrer porque o Access está em execução no modo seguro, mas o componente Microsoft Jet 4.0 SP8 ou posterior não está instalado no computador. É necessário que o Jet 4.0 SP8 ou posterior esteja instalado para que o Access funcione plenamente quando o modo seguro estiver habilitado. Observação: Para obter mais informações sobre a instalação da atualização 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 informações 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 Páginas . Na barra de ferramentas da janela Banco de dados, clique em Novo. Na caixa de diálogo Nova página de acesso a dados, clique em Assistente de página. Clique no nome da tabela, consulta ou modo de exibição que inclua os dados nos quais você deseja basear sua página de acesso a dados. Observação Você não precisa fazer isso agora — você pode especificar as origens do registro para a página no assistente. Clique em OK. Siga as instruções das caixas de diálogo do assistente. 147
  • 152.
    Banco de DadosI Se a página resultante não tiver a aparência desejada, você pode modificar a página no modo de design. Observações: a) Caso você queira incluir campos de várias tabelas e consultas em sua página, não clique em Avançar nem em Concluir após selecionar os campos da primeira tabela ou consulta no Assistente de página. Repita as etapas para selecionar uma tabela ou consulta e escolha os campos que deseja incluir no relatório, até ter selecionado todos os campos necessários. b) Se você incluir campos de várias tabelas ou consultas mas não criar níveis de grupo, os campos de uma das tabelas base podem oferecer suporte a atualizações no modo de página ou no Microsoft Internet Explorer. O assistente listará as origens de registro da página e solicitará que você especifique a fonte do recurso atualizável. 148
  • 153.
    Banco de DadosI Criar uma página de acesso a dados no modo de design. Na guia Objetos da janela Banco de Dados, clique em Páginas . Na barra de ferramentas da janela Banco de dados, clique em Novo. Na caixa de diálogo Nova página de acesso a dados, clique em Modo de design. Clique no nome da tabela, consulta ou modo de exibição que inclua os dados nos quais você deseja basear sua página de acesso a dados. Observação Se você quiser criar uma página em branco, não selecione uma fonte do registro nesta caixa de diálogo. Clique em OK. O Microsoft Access exibe a página de acesso a dados no modo de design, no qual você poderá modificar a página. Para adicionar dados à página, arraste os campos da lista de campos para a página. Transformar uma página da Web existente em uma página de acesso a dados Na janela Banco de Dados, clique em Páginas , em Objetos. Clique no botão Novo na barra de ferramentas da janela Banco de dados. Na caixa de diálogo Nova página de acesso a dados, clique em Página da Web existente. Clique em OK. Na caixa de diálogo Localizar página da Web, procure a página da Web ou arquivo HTML que você deseja abrir. Observação: Você pode localizar uma página da Web clicando em Pesquisar na Web na caixa de diálogo Localizar página da Web. Salve uma cópia da página usando o comando Salvar como no menu Arquivo do Microsoft Internet Explorer e inicie esse procedimento novamente para abrir a página no modo design. Clique em Abrir. O Microsoft Access cria um atalho para o arquivo HTML na janela Banco de dados e exibe a página no modo de design, onde você pode modificá-la. Observação: Se você especificou um arquivo de conexão padrão para o banco de dados na guia Páginas da caixa de diálogo Opções, o Microsoft Access automaticamente definirá as propriedades ConnectionFile e ConnectionString para todas as novas páginas. Criar uma página de acesso a dados autônoma Se um banco de dados for aberto no Microsoft Access, feche-o. No menu Arquivo, clique em Novo. Na caixa de diálogo Novo, clique em Página de acesso a dados. Na caixa de diálogo Selecionar fonte de dados, siga um destes procedimentos: 149
  • 154.
  • 155.
    Banco de DadosI Conectar a página a um banco de dados do Microsoft Access Use o seguinte procedimento se você quiser criar uma página 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 página. Se você não vir o banco de dados que deseja usar, navegue até a pasta que contém o arquivo e, em seguida, clique duas vezes no nome do arquivo. Clique em OK duas vezes. O Microsoft Access criará uma página em branco e a abrirá em modo de design. A propriedade ConnectionString da página será definida para conectar a página ao banco de dados selecionado. Para adicionar dados à página, arraste os campos da lista de campos para a página LABORATÓRIO 7 Y. Como base nas tabelas criadas no laboratório 2, crie uma pagina de acesso. Layout Livre. 151
  • 156.
    Banco de DadosI Unidade 26 - PERSONALIZAÇÃO E UTILITÁRIOS 26.1 CONFIGURAÇÕES DE INICIALIZAÇÃO Após concluir toda a estrutura do aplicativo o usuário poderá definir configurações que farão com que ao entrar em um banco de dados seja exibido automaticamente um formulário especifico. Desta forma e com o que foi visto nos capítulos anteriores o usuário poderá criar um aplicativo personalizado de acordo com suas necessidades. Para definir as opções de inicialização de um banco de dados o usuário deverá selecionar a opção FerramentasInicializar. Além do título, ícone e formulário padrão o usuário poderá definir se os menus poderão ser utilizados ou não e se a Janela Banco de Dados será exibida. No Access 2007 selecione o botão do Office (canto superior esquerdo) e clique em "Opções 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
  • 157.
    Banco de DadosI 26.2 Compactando um banco de dados A compactação de um banco de dados do Access reduz o tamanho do arquivo em disco, otimizando-o, além de desfragmentar o arquivo em disco. Para compactar um banco de dados basta escolher a opção FerramentasUtilitários de banco de dadosCompactar e Reparar banco de dados. No Access 2007 a opção é encontrada no botão do Office 153
  • 158.
    Banco de DadosI 26.3 REPARANDO UM BANCO DE DADOS Caso ocorra algum problema no nível de arquivo e o Access não consiga efetuar a leitura do mesmo, a ferramenta de reparação poderá solucionar o problema. Para reparar um arquivo de banco de dados danificado basta escolher o comando FerramentasUtilitários de banco de dadosCompactar e Reparar banco de dados. 26.4 PROTEGENDO UM APLICATIVO Após criar o seu aplicativo no Access qualquer usuário poderia alterar a estrutura dos objetos do banco de dados. As principais maneiras de se proteger um de banco de dados no Access são: 154
  • 159.
    Banco de DadosI Protegendo o Arquivo A proteção de arquivo solicitará uma senha do usuário todas as vezes que o mesmo tentar abrir o arquivo de banco de dados. Para ativar a proteção por senha escolha FerramentasSegurançaDefinir senha do banco de dados. Criando um Arquivo Mde Um arquivo MDE é na verdade uma versão ―compilada‖ do arquivo MDB. Um arquivo MDE permitirá apenas alterações e visualização de estrutura para tabelas e consultas. Para criar um arquivo MDE menu FerramentasUtilitários de Banco de dadosCriar um MDE Criptografando o Arquivo A criptografia tornará impossível 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 usuário. No Access 2007 encontramos estas opções na barra de ferramentas 155
  • 160.
    Banco de DadosI LABORATÓRIO 8 Z. Defina o formulário Menu Principal como formulário de inicialização do seu banco de dados criado no laboratório 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
  • 161.
    Banco de DadosI Unidade 27 - MySQL 27.1 Introdução 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 são específicas deste banco. É um dos bancos de dados mais utilizados por empresas e usuários pessoais Podemos citar vários grandes exemplos de usuários deste sistema de gerenciamento de banco de dados, mas o maior case de sucesso, não poderia deixar de ser outro: o Google. Este sistema teve seu lançamento na década de 1980, de lá para cá o numero de usuários e pessoas responsáveis por sua manutenção e testes só tem aumentado. Além disso uma série de sistemas satélite 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 intenção de gerar concorrência. No entanto a sua grande expansão fez com que grandes corporações 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 integração com uma das linguagens de programação de maior sucesso na Internet, o PHP. Esta configuração de uso do Linux(Sistema Operacional), MySQL, PHP e o Apache(Servidor), criou uma sigla conhecida como LAMP, que é uma das opções mais aceitas pelos usuários na hora de hospedar seus sites. Também é comum a visualização da sigla WAMP, que nada mais é do que troca do sistema operacional Linux pelo Windows Em seu princípio 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 gestão de dados com grande volume de acesso como o Google e a Wikipédia além de ter sua utilização empregada em instituições que lidam com a segurança e precisão da informação como fatores determinantes de seu negócio. Podemos citar como exemplo a NASA e o exército Americano, além de exemplos nacionais como o banco Bradesco e tantas outras instituições financeiras 157
  • 162.
    Banco de DadosI Unidade 28 - O Front-End 28.1 Alguns Exemplos Manipular os dados armazenados em um banco de dados requer o uso de ferramentas específicas para esta operação. Estes sistemas são os chamados fron-ends. A instalação completa do MySQL acompanha o aplicativo desktop chamado MySQL Query Browser: Este sistema é bem completo e oferece suporte a linguagem, bem como interface amigável ao banco em si. Além desta possibilidade nativa, possuímos uma série de outros sistemas desktop, cabendo um destaque ao Navicat. Entretanto como a maior popularização do MySQL se deu pelo grande casamento com a linguagem para web(PHP), não 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 manipulação de dados utilizando o phpMyAdmin bem como do MySQL Query Browser 158
  • 163.
    Banco de DadosI Unidade 29 - Conectando ao Banco de Dados 29.1 Através de linguagens de programação Um banco de dados tem por objetivo maior ser um local de armazenamento de informações para ser acessada a qualquer momento e preferencialmente de qualquer local. No entanto seu uso mais comum está ligado à integração com sistemas web e desktop. A banco de dados MySQL, como já referido anteriormente, tem uma forte ligação com a linguagem PHP, mas pode, interagir com qualquer outro sistema independente de sua linguagem. Para estabelecer esta conexão as linguagens se utilizam de scripts próprios. Exemplo de script em PHP para conexão 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 usuário que tem acesso $password=" "; // Indique a senha do usuário //1º passo - Conecta ao servidor MySQL if(!($id = mysql_connect("localhost",$usuario,$password))) { echo "Não foi possível estabelecer uma conexão com o gerenciador MySQL. Favor Contactar o Administrador."; exit; } //2º passo - Seleciona o Banco de Dados if(!($con=mysql_select_db($dbname,$id))) { echo "Não foi possível estabelecer uma conexão com o gerenciador MySQL. Favor Contactar o Administrador."; exit; } ?> Além deste exemplo existe outras linguagem que possuem seu próprio script de conexão 159
  • 164.
    Banco de DadosI 29.2 Através do Front-End Para acessarmos nosso banco de dados, com a intenção de realizar manutenções, extração de informações, gerenciamento de performance, criação de regras, etc. podemos fazê-lo de forma mais rápida e dinâmica através de nossos fron-ends. O phpMyAdmin pode ser acessado através do endereço IP e porta fornecidos pelo provedor onde o site de encontra hospedado. Esta informação ou link, normalmente encontra-se disponíveis em painéis de controle para sites fornecidos por estes provedores de hospedagem. Será exibida uma tela solicitando o usuário e senha que serão utilizados nesta conexão. Abaixo podemos ver um exemplo desta tela. No caso de instalação 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 rápida e sem a necessidade de informar usuário e senha a todo o momento 160
  • 165.
    Banco de DadosI Vela uma tela de como acessar o phpMyAdmim pelo WAMP. Por sua vez o MySQL Query Browser é um software desktop, portanto, fica instalado na máquina que irá acessar o banco. Este programa pode ser facilmente baixado através do site da MYSQL ou em local próprios para download de aplicativos, tais como o superdownloads e o baixaki. A acessar este sistema a seguinte tela será exibida: 161
  • 166.
    Banco de DadosI Nesta tela deverá ser informado;  O IP e a porta de conexão(normalmente 3306) com o servidor(localhost se for localmente)  O usuário(normalmente o mesmo do painel de controle ou root se for localmente)  A senha(definida pelo usuário)  Base de dados padrão(A base do projeto) 162
  • 167.
    Banco de DadosI Unidade 30 - Conhecendo a Interface 30.1 phpMyAdmin 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 informações sobre a configuração do servidor em que o banco está hospedado bem como estatísticas 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 utilização. Diferentemente do phpMyAdmin esta interface não exibe incialmente informações sobre o servidor, mas sim, traz uma caixa de texto para a digitação de sentenças SQL. Também podemos observar à existência de botões que representam sintaxes da linguagem SQL, que são utilizados para tornar mais ágil a criação dos scripts. Veja uma tela de exemplo deste layout inicial 163
  • 168.
    Banco de DadosI 30.3 Acessando uma Base de Dados No phpMyAdmim possuímos na parte superior esquerda da tela uma lista das bases de dados disponíveis, basta clicar sobre a mesma 164
  • 169.
    Banco de DadosI No MySQL Query Browser localizamos estas mesmas opções no canto superior direito: 165
  • 170.
    Banco de DadosI Unidade 31 - Criando uma nova Base de Dados 31.1 Interface e Comando Para criar uma nova base de dados, bem como para a execução de qualquer consulta, deleção, ou outra atividade em nosso banco de dados, podemos utilizar de instruções SQL digitadas diretamente ou nos fazer valer de front-ends. No caso da criação de uma nova base de dados utilizáramos a sentença: CREATE DATABASE nomedabase Pelo phpMyAdmin realizamos esta operação, estando na tela inicial (clicar no botão Home - ) basta digitar o nome da nova base e clicar em ―Criar‖ No MySQL Query Browser clicamos com o botão direito sobre uma base qualquer e escolhemos a opção ―Create New Schema‖ Por fim digitamos o nome do banco e clicamos em ―OK‖ 166
  • 171.
    Banco de DadosI Unidade 32 - Criando Tabelas 32.1 Interface A criação de tabelas com a utilização de scripts já foi vista em unidades anteriores, estão vamos nos deter na facilidade da criação de tabelas com a interação da interface dos font-ends phpMyAdmin Com a base de dados selecionada basta digitar o nome da nova tabela e o número de campos que a mesma terá (número de arquivos) Logo apões este passo será exibida uma tela para as devidas configurações: Valores Nulos Tamanho do Campo Tipo de dado Opções numéricas ou update Nome do campo Formatação Campo Autoincremento Comentário Texto Completo Valor padrão Vavio ünico Indice Chave Primária 167
  • 172.
    Banco de DadosI Cometários Tipo de tabela Formatação Salvar Incluir campos Executar O preenchimento das informações solicitadas nos campos, na realidade gera um script em SQL para a criação da referida tabela. Podemos verificar os scripts criados para a criação de tabelas bem como para inserção do dados das mesmas através do botão ―exportar‖ Esta opção é muito útil quando precisamos criar uma série de tabelas que desenvolvemos localmente para um servidor remoto. Além disto este script, também é utilizado para a ―instalação‖ de sistemas web baseado em banco de dados MySQL MySQL Query Browser Para o MySQL Query Browser o processo é simples, basta clicar com o botão direito sobre a base de dados na qual desejas que a tabela seja criada. 168
  • 173.
    Banco de DadosI Nome table Base de Dados Comentário Opções numéricas ou update Autoincremento Comentário Nulo Tipo Dados Nome Campo Salvar Além da informações apontadas nas caixas de texto cabe destacar que na parte inferior da tela é exibida a chave primária selecionada bem como os índices. Além disso também encontramos mais detalhes sobre a configuração de cada campo. 169
  • 174.
    Banco de DadosI Unidade 33 - Criando Consultas 33.1 Interface A exemplo da criação de bases de dados e tabelas, no caso das consultas, também 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 botão de suas propriedades( ). Para a execução de um script direto em SQL basta clicar na aba . Para utilizar um ―assistente‖ na criação de suas consultas clique na aba A seguinte tela será exibida; Limite de registros(limit) Ordernação(order by) Campos de resultado Critérios(where) Critérios(where) 170
  • 175.
    Banco de DadosI MySQL Query Browser No Query Browser possuímos botões que representam instruções em SQL. A clicar nestes botões e após em um campo ou tabela a expressão é montada na tela de consulta. Botões que representam o SQL Ao arrastar uma tabela veja o resultado 171
  • 176.
    Banco de DadosI Unidade 34 - SQL Server 34.1 Introdução O SQL Server é um SGDB criado e mantido pela Microsoft. Ele é utilizado em muitas empresas, principalmente por sua grande capacidade de gerenciamento de informações em alto volume de dados. Este SGBD tem muitas ferramentas integradas ao núcleo que permitem um ganho realmente significativo em termos de controle de desempenho e extração de informações. Podemos citar a sua enorme capacidade de geração de cubos de decisão, bem como seu elevado e confiável controle de espelhamento e distribuição de dados. Esta alta confiabilidade na gestão dos dados, bem como a solidez de sua empresa mantenedora fazem do SQL Server uma das que melhor equilibra a relação custo benefício. Para empresas de pequeno porte ou mesmo usuário individual a Microsoft disponibiliza uma versão Express de seu banco de dados, que apesar de algumas limitações de recursos, tais como replicação 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 avaliação fria(sem bandeiras a defender), veremos que cada um deles possui seus pontos positivos e negativos. A conclusão 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 são uma boa opção para qualquer linguagem adotada. 172
  • 177.
    Banco de DadosI 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 instalação deste bando de dados em um sistema operacional baseado no núcleo do Linux, esta configuração não se mostra eficiente sob a ótica de performance e confiabilidade dos dados armazenados. Neste tipo de servidor(com Linux), recomenda-se a utilização de outro SGBD, tal como o ORACLE, MySQL, PostGre e tantos outros 173
  • 178.
    Banco de DadosI Unidade 35 - O Front-End 35.1 Ferramenta nativa O SQL Server possui uma ferramenta nativa de acesso a sua base de dados, não sendo necessária a utilização de qualquer outro sistema paralelo. Mesmo que o banco de dados não esteja fisicamente localizado em sua máquina, este aplicativo nativo do SQL Server, pode fazer o acesso a bases de dados remotas. Existem algumas empresas que desenvolvem aplicações front-end para SQL Server, tais como o EMS SQL Manager for SQL Server. No entanto, esta ferramenta paga, não traz todas as funcionalidades que o aplicativo padrão possui. Portanto em nosso material, vamos nos deter única e exclusivamente na ferramenta padrão deste SGBD. 174
  • 179.
    Banco de DadosI Unidade 36 - Conectando ao Banco de Dados 36.1 Através de linguagens de programação Um banco de dados tem por objetivo maior ser um local de armazenamento de informações para ser acessada a qualquer momento e preferencialmente de qualquer local. No entanto seu uso mais comum está ligado a integração com sistemas web e desktop. A banco de dados SQL Server, por ser da Microsoft tem uma enorme facilidade de conexão com sistemas desenvolvidos em linguagem .net(ASP.net, VB.net, etc.). Para estabelecer esta conexão as linguagens se utilizam de scripts próprios. Exemplo de script em ASP.net para conexão com SQL Server: <%@ Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.SqlClient" %> <% Dim conexao As SqlConnection conexao = New SqlConnection( "server=localhost; database=nomedabase; uid=sa" ) conexao.Open() %> Além deste exemplo existem outras linguagens que possuem seu próprio script de conexão 175
  • 180.
    Banco de DadosI 36.2 Através do Front-End Para acessarmos nosso banco de dados, com a intenção de realizar manutenções, extração de informações, gerenciamento de desempenho, criação de regras, etc. podemos fazê-lo de forma mais rápida e dinâmica através de nossos front-ends. O SQL Server pode ser acessado através do endereço IP e porta fornecidos pelo provedor onde o site de encontra hospedado. Esta informação ou link, normalmente encontra-se disponíveis em painéis de controle para sites fornecidos por estes provedores de hospedagem. Será exibida uma tela solicitando o usuário e senha que serão utilizados nesta conexão. Abaixo podemos ver um exemplo desta tela. No caso de instalação local basta digitar utilizar no nome de seu computador como o nome do servidor. 176
  • 181.
    Banco de DadosI Unidade 37 - Conhecendo a Interface 37.1 Aplicativo Nativo 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 informações sobre a configuração do servidor em que o banco está hospedado bem como estatísticas 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
  • 182.
    Banco de DadosI Unidade 38 - Criando uma nova Base de Dados 38.1 Interface e Comando Para criar uma nova base de dados, bem como para a execução de qualquer consulta, deleção, ou outra atividade em nosso banco de dados, podemos utilizar de instruções SQL digitadas diretamente ou nos fazer valer de front-ends. No caso da criação de uma nova base de dados utilizamos a sentença: CREATE DATABASE nomedabase Pelo front-end, basta clicar com o botão direito sobre a lista de bases de dados e utilizar a opção ―Novo banco de dados‖ Após isto será exibida uma tela para colocarmos o nome de nossa nova base de dados: 178
  • 183.
  • 184.
    Banco de DadosI Unidade 39 - Criando Tabelas 39.1 Interface A criação de tabelas com a utilização de scripts já foi vista em unidades anteriores, estão vamos nos deter na facilidade da criação de tabelas com a interação da interface dos font-ends Ao expandirmos as bases de dados existentes e posteriormente seu conteúdo, veremos que será exibida a opção de tabelas. Basta clicar com o botão direito sobre a opção tabelas e por fim utilizar ―Nova Tabela‖ Será exibida uma tela para informarmos quais serão os campos e quais são as suas principais características; Texto Completo Script alteração Espacial Chave primária Restrições Relacionamento XML Índices Nome Campo Tipo dado Nulo 180
  • 185.
    Banco de DadosI Unidade 40 - Criando Consultas 40.1 Interface A exemplo da criação de bases de dados e tabelas, no caso das consultas, também podemos realizá-las por scripts ou via interface. Vejamos como isso funciona em nosso front-ends No canto superior esquerdo encontramos a opção ―Nova Consulta‖, ao clicar nela em nossa direita será exibida uma tela para digitarmos nosso script em SQL 181
  • 186.
    Banco de DadosI Unidade 41 - Conhecendo XML 41.1 Introdução XML (eXtensible Markup Language) é uma linguagem marcação para necessidades especiais, muito utilizada na Web, em podcasts e rss . É um subtipo de SGML (acrônimo de Standard Generalized Markup Language, ou Linguagem Padronizada de Marcação Genérica) capaz de descrever diversos tipos de dados. Seu propósito principal é a facilidade de compartilhamento de informações através da Internet. Entre linguagens baseadas em XML incluem-se XHTML (formato para páginas Web), RDF,SDMX ,SMIL, MathML (formato para expressões matemáticas), NCL, XBRL, XSIL e SVG (formato gráfico vetorial). A principal característica do XML, de criar uma infraestrutura única para diversas linguagens, é que linguagens desconhecidas e de pouco uso também podem ser definidas sem maior trabalho e sem necessidade de serem submetidas aos comitês de padronização. 182
  • 187.
    Banco de DadosI Unidade 42 - XML no SQL Server 42.1 Criando colunas do tipo XML Com o tipo de dados XML como um padrão 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 padrão XML. O script para criar a tabela MinhaTabela com duas colunas é a seguinte: Create Table MinhaTabela (CodigoID int, dados xml) Como resultado da execução dessa instrução teríamos. Podemos usar o Front-end para também criar a coluna do tipo XML digitando diretamente a definição no editor conforme abaixo: 183
  • 188.
    Banco de DadosI 42.2 Inserindo valores Para inserir dados em uma tabela com um ou mais campos XML, devemos executar uma instrução 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 existência de aspas internas as mesmas devem ser duplas. Vamos então popular nossa tabela com 1 registro para a melhor compreensão do script de inserção deste tipo de informação. 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 seleção para visualizarmos o resultado, teríamos o seguinte retorno: 184
  • 189.
    Banco de DadosI 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 método modify. O método modify permite a realização de alterações (inclusões e atualizações) e exclusões 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 informação XML armazenado na tabela Minhatabela criada: Vamos inserir o elemento <produto descricao="Massa" valor="2.7" /> na coluna dados. A instrução 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 método modify em nosso update Para verificar se o comando foi executado corretamente vamos usar a instrução SELECT para exibir os dados da tabela : 185
  • 190.
    Banco de DadosI 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 utilização da cláusula before e que especificamos o produto (/cliente/compras/produto)[2]) através do índice 2 para indicar a posição depois da qual vamos incluir o elemento. Naturalmente da mesma forma poderíamos ter usado a cláusula after para incluir depois da posição indicada na instrução SQL. Para efetuar uma alteração em dados XML já cadastrados devemos usar a instrução replace que é idêntica a instrução Update e permite alterar valores já cadastrados. A utilização da instrução replace não pode ser usada para alterar nós, mas somente valores. Como exemplo vamos alterar o nome do produto Milho para Ervilha usando a instrução replace. UPDATE MinhaTabela Set dados.modify ('replace value of (/cliente/compras/produto[@descricao="Milho"] / @descricao)[1] with "Ervilha"') 186
  • 191.
    Banco de DadosI Where codigoId = 1 A instrução XPath - (/cliente/compras/produto[@descricao="Milho"][1] - vai procurar o primeiro produto que tenha a descrição ―Milho‖ e vai substituí-lo pelo texto – ―Ervilha‖. Para especificar que desejamos substituir o primeiro usamos o índice [1]. Após a execução da instrução vamos novamente usar uma instrução 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 posição. Assim, para atualizar o valor do ultimo produto para 3.1 usamos a seguinte instrução: UPDATE MinhaTabela SET dados.modify ('replace value of (/cliente/compras/produto/@descricao)[last()] with "3.1"') WHERE codigoid = 1 Após a execução da instrução vamos novamente usar uma instrução SQL Select e posteriormente o link para verificar se o valor foi realmente alterado. 187
  • 192.
  • 193.
    Banco de DadosI 42.4 Deletando valores Para excluir usamos a cláusula 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 cláusula DELETE pois ela pode excluir valores, atributos, elementos e até mesmo todo o documento XML persistido na base de dados. Vamos então verificar alguns exemplos usando DELETE: UPDATE MinhaTabela SET dados.modify(' delete /cliente/compras/produto/@descricao[contains(.,"o")]') Esta instrução exclui todos os elementos descricao cujo atributo nome contenha a string "o" Por isso você sempre deve usar uma cláusula WHERE em uma instrução DELETE, como no exemplo abaixo: UPDATE MinhaTabela SET dados.modify(' delete /cliente') WHERE codigoid = 1 A instrução acima exclui todo o conteúdo XML para o cliente de código igual a 1. Como o cliente é a raiz do documento XML basta definir a raiz do documento que todos os elementos serão excluídos ao final o valor da coluna passa a conter uma string vazia (""). 189
  • 194.
    Banco de DadosI Unidade 43 - Trabalho Final 43.1 Situação problema Uma empresa de manipulação deseja automatizar o processo de compra de matéria prima, composição do produto acabado e venda dos produtos que manipulados. A empresa compra matéria prima dos fornecedores. Esta matéria prima é armazenada com o Código, Nome da Matéria, Tipo, Valor por Grama, Estoque. A matéria prima é atualizada no estoque através de requisição quando da sua saída. Para a compra da matéria prima é necessário gerar uma solicitação de compras. Quando a matéria prima atinge seu ponto de reposição é gerado uma solicitação de compras. A compra de matéria prima é efetuada através de uma nota fiscal, a qual obrigatoriamente contém Número da Nota Fiscal, Data da Emissão, Hora da Emissão, Unidade da Mercadoria, Preço Unitário, Descrição da Mercadoria comprada. A nota fiscal atualiza estoque de matéria prima e atualização a solicitação que a gerou através do número desta nota. O produto manipulado é composto por Código, Nome do Produto, Fórmula, Data de Validade, e Preço final. Um Produto pode possuir várias matérias primas e uma matéria prima pode ser um componente de vários produtos. Um Fornecedor pode fornecer várias matérias primas, e uma matéria prima pode ser fornecida por vários fornecedores. Um fornecedor é composto de Código do Fornecedor, Razão Social, CNPJ, IE, Endereço, 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 vão desde farmácias, clínicas, laboratórios, a atacados. Os clientes são atendidos no balcão, por vendedores (funcionários) tanto In loco como por televendas, gerando pedidos. As notas fiscais de vendas serão atendidas conforme os pedidos gerados, a qual contém obrigatoriamente as seguintes informações: Número da Nota Fiscal, Data da Emissão, Hora da Emissão, Unidade da Mercadoria, Preço Unitário, Preço Total do produto, total da nota fiscal, Descrição do produto, nome do vendedor, condições de pagamento, número do pedido. As vendas geram um arquivo de contas a receber, com as seguintes informações: Código, Código do Cliente, Data da Emissão, Data do vencimento, Número da Parcela, Valor da Parcela, e Número da Nota Fiscal. A nota fiscal de venda atualiza o estoque de produtos acabados. Em caso de devolução, é gerada uma nota de devolução e atualizado o estoque. 190
  • 195.