• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Banco de dados i
 

Banco de dados i

on

  • 3,498 views

 

Statistics

Views

Total Views
3,498
Views on SlideShare
3,498
Embed Views
0

Actions

Likes
3
Downloads
203
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Banco de dados i Banco de dados i Document Transcript

    • Banco de Dados I
    • UNIDADE 1 - INTRODUÇÃO AO BANCO DE DADOS ....................................................................................................... 3 1.1 INTRODUÇÃO ............................................................................................................................................................... 3UNIDADE 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: ..................................................................................................................................... 5UNIDADE 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: .......................................................................................................... 20UNIDADE 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 .......................................................................................................................................... 29UNIDADE 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 ................................................................................................................................................ 35UNIDADE 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................................................................................................................................................. 41UNIDADE 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 ...................................................................................................... 43UNIDADE 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............................................................................................................................ 45UNIDADE 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 .......................................................................................................... 49UNIDADE 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 ........................................................................................................................................ 52UNIDADE 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..................................................................................................................................... 57UNIDADE 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 ............................................................................................................................ 63UNIDADE 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 ....................................................................................................................................... 66UNIDADE 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......................................................................................................... 75UNIDADE 16 - EXERCÍCIOS EXTRAS ........................................................................................................................... 76UNIDADE 17 - PROJETO FINAL - REVISÃO ................................................................................................................. 80UNIDADE 18 - PRINCIPAIS BANCOS DE DADOS ......................................................................................................... 81UNIDADE 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 ........................................................................................................................ 93UNIDADE 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................................................................................................. 105UNIDADE 21 - RELACIONAMENTOS ........................................................................................................................ 109 21.1 BANCO DE DADOS RELACIONAL ........................................................................................................................... 109 21.2 TIPOS DE RELACIONAMENTOS ............................................................................................................................. 109 21.3 DEFININDO OS RELACIONAMENTOS .................................................................................................................... 111UNIDADE 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 .......................................................................................................................................... 118UNIDADE 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 .............................................................................................................................................. 135UNIDADE 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 .......................................................................................................................... 146UNIDADE 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............................................................................................................................ 154UNIDADE 27 - MYSQL ............................................................................................................................................. 157 27.1 INTRODUÇÃO ........................................................................................................................................................... 157UNIDADE 28 - O FRONT-END .................................................................................................................................. 158 28.1 ALGUNS EXEMPLOS................................................................................................................................................... 158UNIDADE 29 - CONECTANDO AO BANCO DE DADOS............................................................................................... 159 29.1 ATRAVÉS DE LINGUAGENS DE PROGRAMAÇÃO ................................................................................................................ 159 29.2 ATRAVÉS DO FRONT-END ........................................................................................................................................... 160UNIDADE 30 - CONHECENDO A INTERFACE ............................................................................................................. 163 30.1 PHPMYADMIN ......................................................................................................................................................... 163 30.2 MYSQL QUERY BROWSER ......................................................................................................................................... 163 30.3 ACESSANDO UMA BASE DE DADOS ............................................................................................................................... 164UNIDADE 31 - CRIANDO UMA NOVA BASE DE DADOS ............................................................................................ 166 31.1 INTERFACE E COMANDO............................................................................................................................................. 166UNIDADE 32 - CRIANDO TABELAS ........................................................................................................................... 167 32.1 INTERFACE .............................................................................................................................................................. 167UNIDADE 33 - CRIANDO CONSULTAS ...................................................................................................................... 170 33.1 INTERFACE .............................................................................................................................................................. 170UNIDADE 34 - SQL SERVER ...................................................................................................................................... 172 34.1 INTRODUÇÃO ........................................................................................................................................................... 172UNIDADE 35 - O FRONT-END .................................................................................................................................. 174 35.1 FERRAMENTA NATIVA ................................................................................................................................................ 174UNIDADE 36 - CONECTANDO AO BANCO DE DADOS............................................................................................... 175 36.1 ATRAVÉS DE LINGUAGENS DE PROGRAMAÇÃO ................................................................................................................ 175 36.2 ATRAVÉS DO FRONT-END ........................................................................................................................................... 176UNIDADE 37 - CONHECENDO A INTERFACE ............................................................................................................. 177 37.1 APLICATIVO NATIVO .................................................................................................................................................. 177 37.2 ACESSANDO UMA BASE DE DADOS ............................................................................................................................... 177UNIDADE 38 - CRIANDO UMA NOVA BASE DE DADOS ............................................................................................ 178 38.1 INTERFACE E COMANDO............................................................................................................................................. 178UNIDADE 39 - CRIANDO TABELAS ........................................................................................................................... 180 39.1 INTERFACE .............................................................................................................................................................. 180
    • UNIDADE 40 - CRIANDO CONSULTAS ...................................................................................................................... 181 40.1 INTERFACE .............................................................................................................................................................. 181UNIDADE 41 - CONHECENDO XML .......................................................................................................................... 182 41.1 INTRODUÇÃO ........................................................................................................................................................... 182UNIDADE 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 ............................................................................................................................................... 189UNIDADE 43 - TRABALHO FINAL ............................................................................................................................. 190 43.1 SITUAÇÃO PROBLEMA ................................................................................................................................................ 190
    • Banco de Dados I Unidade 1 - Introdução ao Banco de Dados1.1 IntroduçãoA tecnologia aplicada aos métodos de armazenamento de informações vem crescendo e gerandoum impacto cada vez maior no uso de computadores, em qualquer área em que os mesmospodem 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 quepossuem um significado implícito. Porém, o significado do termo ―banco de dados‖ é mais restritoque 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; umadisposiçã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; umbanco 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 desenvolvidasespecialmente para esta tarefa ou por um ―Sistema Gerenciador de Banco de Dados‖ (SGBD). UmSGBD permite aos usuários criarem e manipularem bancos de dados de propósito gerais. Oconjunto formado por um banco de dados mais as aplicações que manipulam o mesmo é chamadode ―Sistema de Banco de Dados‖.Banco de Dados: é uma coleção de dados inter-relacionados, representando informações sobreum domínio específico.Exemplos: lista telefônica, controle do acervo de uma biblioteca, sistema de controle dos recursoshumanos de uma empresa.Sistema de Gerenciamento de Bancos de Dados (SGBD): é um software com recursosespecíficos para facilitar a manipulação das informações dos bancos de dados e odesenvolvimento de programas aplicativos. 3
    • Banco de Dados I Unidade 2 - Conceitos e Arquiteturas - SGBD2.1 As Linguagens para Manipulação de Dados:Para a definição dos esquemas conceituais e internos pode-se utilizar uma linguagem chamadaDDL (Data Definition Language - Linguagem de Definição de Dados). O SGBD possui umcompilador DDL que permite a execução das declarações para identificar as descrições dosesquemas e para armazená-las no catálogo do SGBD. A DDL é utilizada em SGBDs onde aseparaçã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, é utilizadooutra linguagem, a SDL (Storage Definition Language - Linguagem de Definição deArmazenamento) para a especificação do esquema interno. A especificação do esquemaconceitual fica por conta da DDL. Em um SGBD que utiliza a arquitetura três esquemas, é necessária a utilização de mais umalinguagem para a definição de visões, a VDL (Vision Definition Language - Linguagem de Definiçãode Visões). Uma vez que o esquema esteja compilado e o banco de dados esteja populado, usa-se umalinguagem para fazer a manipulação dos dados, a DML (Data Manipulation Language - Linguagemde Manipulação de Dados).2.2 Classificação dos SGBDsO principal critério para se classificar um SGBD é o modelo de dados no qual é baseado. A grandemaioria dos SGBDs contemporâneos é baseada no modelo relacional, alguns em modelosconceituais 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 oumultiusuá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 osdados estarão em uma máquina (ou em um único disco) ou distribuído, onde os dados estarãodistribuídos por diversas máquinas (ou diversos discos);Ambiente: ambiente homogêneo é o ambiente composto por um único SGBD e um ambienteheterogêneo é o ambiente composto por diferentes SGBDs.2.3 O Modelo de Rede 3-3-1 4
    • Banco de Dados IOs 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 IOs meta dados são representados por tabelas, contendo linhas e colunas, onde são ligadas porcolunas. Cada tabela contém uma ou mais colunas como identificadores.LaboratórioDefinir 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 IDescrever 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 IUnidade 3 - Modelagem de Dados Utilizando o Modelo Entidade Relacionamento (ER)3.1 Elementos do Modelo Entidade-RelacionamentoEste é 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 modelorelacional, utilizamos o Diagrama de Estrutura de Dados.Abaixo identificaremos todas as características do Modelo E-REntidade: 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, comouma 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 mesmotipo.O símbolo que representa a entidade no modelo E-R é um retângulo como o nome da entidadeescrito no seu interior, por exemplo: FUNCIONARIOCada entidade possui um conjunto particular de propriedades que a descreve chamado ―atributos‖.Atributos: São propriedades (características) que identificam as entidades. Cada entidade possuiuma coleção de elementos de dados.A cada atributo de uma entidade é associado um domínio de valores. Esses domínios podem serum conjunto de números inteiros, números reais, cadeias de caracteres ou qualquer outro tipo devalor que o atributo pode assumir.Os atributos são representados apenas pelo seu nome ligado à entidade por uma linha reta, porexemplo: FUNCIONÁRIO Nome 8
    • Banco de Dados IPodemos ter vários tipos de atributos: simples, composto, multivalorado e determinante. Vejamosas características de cada um deles:Simples ou atômico: não possui qualquer característica especial. Por exemplo, o nome Daempresa é um atributo sem qualquer característica especial. EMPRESA NomeComposto: o seu conteúdo é formado por itens menores. O conteúdo de um atributo compostopode ser dividido em vários atributos simples. Rua EMPRESA Endereço CEP BairroMultivalorado: o seu conteúdo pode ser formado por mais de uma informação. É indicadocolocando-se um asterisco procedendo ao nome do atributo, como no caso da empresa que podepossuir mais de um telefone. EMPRESA * TelefoneDeterminante: o atributo determinante é aquele que define univocamente as instâncias de umaentidade, ou seja, é único para as instâncias de uma entidade. É indicado sublinhando-se o nomedo atributo. No exemplo de uma empresa, o CNPJ é um atributo determinante, pois não podemexistir duas empresas com o mesmo valor nesse atributo. EMPRESA CNPJVejamos 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. Osdados são a Matrícula, o Nome, o Endereço (Rua, CEP e Bairro), o Telefone (o funcionário podeter mais de um) e o cargo. 9
    • Banco de Dados I Matrícula Nome Rua EMPRESA Endereço CEP Bairro * Telefone CargoLaboratórioIdentifique os atributos e o tipo do atributo nas seguintes entidades.CLIENTES - FUNCIONARIOS - EMPRESA - PRODUTOS3.2 Tipos e Instâncias de Relacionamento:Além de conhecer detalhadamente os tipos entidade, é muito importante conhecer também osrelacionamentos entre estes tipos entidades. Relacionamento: é o tipo de ocorrência existente entre entidades. O Símbolo que representa orelacionamento no modelo E-R é um losango com o nome do relacionamento escrito no seuinterior, como no exemplo a seguir: PertenceExistem 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 cadadepartamento possui um único gerente e um funcionário-gerente só pode chefiar um únicodepartamento. 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 DepartamentoEste é um caso particular, pois outra empresa poderia ter o mesmo gerente chefiando váriosdepartamentos. 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 entidadesde 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 emum ú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 DepartamentoEsta representação acaba resultando num relacionamento 1: N invertido. 11
    • Banco de Dados IVários-para-vários: é quando várias (N) entidade de A se relacionam com várias(M) entidade deB.Exemplo para esse tipo de relacionamento é o que ocorre entre um funcionário e os projetos deuma empresa. Um funcionário pode trabalhar em vários projetos, e um projeto pode ser executadopor 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 1Cardinalidade: define o número máximo de ocorrências em um relacionamentoPara se determinar a cardinalidade, deve-se fazer a pergunta relativa ao relacionamento emambas 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, definimoso 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 coma 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çãoTraduzindo 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 entidadeque participam do tipo relacionamento. O grau de um relacionamento é ilimitado, porém, a partir dograu três (ternário), a compreensão e a dificuldade de se desenvolver a relação corretamente setornam extremamente complexas.Relacionamento Ternário: alguns relacionamentos precisam ligar 3 entidades, como no exemploque se segue. Numa indústria, um fornecedor pode fornecer várias peças para vários projetos. Um projeto podeter vários fornecedores para várias peças. E uma peça pode ter vários fornecedores para váriosprojetos. N M 1 PFPj Fornecedor Peça ProjetoAuto 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 é umfuncionário. N Chefia Funcionário 1Entidade Dependente: uma entidade pode ter sua existência vinculada à existência de outraentidade. 13
    • Banco de Dados IUma 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 DependenteO símbolo que representa a entidade dependente é um retângulo dentro de outro retângulo, com onome da entidade escrito no seu interior.Relacionamento É-Um (Generalização/Especialização): ocorre quando uma entidade com seusatributos englobam entidades especializadas com seus atributos específicos. No esquema aseguir, a entidade Cliente engloba seus atributos e também os atributos específicos da entidadePessoa Física, assim como os de Pessoa Jurídica. Cliente Pessoa Pessoa Jurídica Física3.3 Resumo dos objetos gráficos:O diagrama Entidade Relacionamento é composto por um conjunto de objetos gráficos que visarepresentar 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 maisgeneralizado 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 RFigura - Objetos que Compõem o Diagrama ER3.4 Modelo Entidade Relacionamento Estendido:Os conceitos do modelo Entidade Relacionamento discutidos anteriormente são suficientes pararepresentar 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 novassemânticas para a modelagem de informações mais complexas. O modelo EntidadeRelacionamentoEstendido (ERE) visa fornecer esta semântica para permitir a representação de informaçõescomplexas.É importante frisar que embora o modelo ERE trate classes e subclasses, ele não possui a mesmasemâ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 entidadesdo mesmo tipo.Em muitos casos, um tipo entidade possui diversos subgrupos adicionais de entidades que sãosignificativas e precisam ser representadas explicitamente devido ao seu significado à aplicaçãode 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 asseguintes 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 seguintesinformaçõ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 representadasdiretamente no tipo entidade empregado estaremos representando informações de um conjuntolimitados 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 terrelacionamentos específicos.Uma entidade não pode existir meramente como componente de uma subclasse. Antes de sercomponente de uma subclasse, uma entidade deve ser componente de uma superclasse. 15
    • Banco de Dados IIsto leva ao conceito de herança de atributos; ou seja, a subclasse herda todos os atributos dasuperclasse. Isto porque a entidade de subclasse representa as mesmas características de umamesma 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çãoFigura - Representação de Superclasse e Subclasses3.5 EspecializaçãoEspecialização é o processo de definição de um conjunto de classes de um tipo entidade; este tipoentidade é chamado de superclasse da especialização. O conjunto de subclasses é formadobaseado 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 agorano 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 IFigura - Duas Especializações para Empregado: Função e CategoriaComo visto anteriormente, uma subclasse pode ter relacionamentos específicos com outrasentidades 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 participaFigura - Relacionamentos Entre Subclasses e EntidadesO 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 suascaracterísticas comuns e generalizando estas entidades em uma superclasse. no. funcional no. funcional qualificação No registro Engenheiro Secretária idiomasespecialização nome rg nome rg 17
    • Banco de Dados IFigura - Tipos Entidades Engenheiro e Secretária nome no. funcional Empregado rg d qualificação o n registro Engenheiro Função Secretária idiomas especializaçãoFigura - 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 é feitaatravé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 umengenheiro ou uma secretária. Na generalização, podemos notar que a ligação entre asuperclasse e as subclasses é feita através de um traço duplo, indicando participação total porparte 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 significadisjunção.Uma disjunção em uma especialização ou generalização indica que uma entidade do tipo entidadeque representa a superclasse pode assumir apenas um papel dentro da mesma. 18
    • Banco de Dados IAnalisando 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 umengenheiro 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 umaespecialização ou generalização. Analise a generalização no exemplo da figura 17. Suponha queuma peça fabricada em uma tornearia pode ser manufaturada ou torneada ou ainda, pode ter sidomanufaturada e torneada. Descriçã o no. da peça Peça o No. Projeto Data Manufaturada Torneada Preço Ordem ServiçoFigura - 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 terdiversas superclasses, herdando características de todas. Leve em consideração o seguinteexemplo: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 daconstrutora deve ser um engenheiro e assalariado. Empregado Função Categoria Salarial d d 19 Secretaria Engenheiro Mensalista Horista
    • Banco de Dados IFigura 18 - Um ―Lattice‖ com a Subclasse Gerente CompartilhadaNeste caso então, um gerente será um funcionário que além de possuir as características própriasde 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órioEtapas1) Construa um diagrama E-R para um hospital com um conjunto de pacientes e um conjunto demé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 conjuntode clientes, onde cada um possui certo número de carros. Cada carro tem um número deacidentes associados a ele.3) Explique a diferença entre uma entidade (conjunto entidade) e uma ocorrência (instância) deuma 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 I7) 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 nobanco 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 ascardinalidades mínimas e máximas (min. Max). 21
    • Banco de Dados I Unidade 4 - O Modelo Relacional4.1 O Modelo RelacionalNesta unidade é apresentado o modelo relacional de forma teórica e a forma como o mesmo podeser derivado do modelo Entidade-Relacionamento apresentado na unidade anterior. Assim, com oconteúdo visto na unidade anterior podemos modelar os dados de uma aplicação, através domodelo 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, podemoscompreender 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. Porexemplo: 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,99Um esquema de relação R, denotado por R(A1, A2,..., An), onde cada atributo Ai é o nome dopapel desempenhado por um domínio D no esquema relação R, onde D é chamado domínio de Aie é denotado por dom (Ai). O grau de uma relação R é o número de atributos presentes em seuesquema 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 nulotambém pode fazer parte do domínio de um atributo e representa um valor não conhecido parauma determinada tupla. 22
    • Banco de Dados I4.3 Atributo Chave de uma RelaçãoUma relação pode ser definida como um conjunto de tuplas distintas. Isto implica que acombinaçã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á valoresrepetidos 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 umasuperchave - 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, restaainda um conjunto de atributos K‘ que não é uma superchave de R. Uma chave é uma superchaveda 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á oconjunto (Nome da Revista, Volume, No da Revista) é uma superchave e uma chave, poisqualquer um dos atributos que retirarmos, deixará de ter uma superchave, ou seja, (Nome daRevista, Volume) não identifica uma única tupla.Em outras palavras, uma superchave é uma chave composta, ou seja, uma chave formada pormais 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 oQuando 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 chavescandidatas. 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 relacionamentoentre 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,004.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 quandoinformado.Muitas vezes, precisamos criar um campo chave, mesmo que a tabela tenha atributosdeterminantes.Na tabela Fornecedor, criamos um campo determinante Código, denominado, portanto, chaveprimária (PRIMARY KEY). 24
    • Banco de Dados I4.5 Chave Candidata É qualquer conjunto de atributos que consegue satisfazer ao critério de chave primária. Todatabela 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 comoutra 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 dosrelacionamentos.4.7 Mapeamento do Modelo Entidade Relacionamento para o Modelo RelacionalO mapeamento do modelo entidade relacionamento para o Modelo Relacional segue oito passosbásicos, a saber: 1. Para cada entidade E no modelo ER é criada uma tabela T1 no Modelo Relacional que incluatodos os atributos simples de E; para cada atributo composto, são inseridos apenas oscomponentes simples de cada um; um dos atributos chaves de E deve ser escolhida como a chaveprimá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 T1no Modelo Relacional incluindo todos os atributos simples de EF; para cada atributo composto, sãoinseridos 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áriaE; Funcionário Dependente Codigo CodigoFuncionario (PK) Nome CodigoDependente Rua Nome Numero Data_nascimento CEP Tipo_parentesco Bairro Data_nascimento CPF3. Para cada relacionamento regular com cardinalidade 1:1 entre entidades E1 e E2 que geraramas 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 tiverparticipação total e outro parcial, então é interessante que a chave do lado com participaçãoparcial 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 I4. Para cada relacionamento regular com cardinalidade 1: N entre entidades E1 e E2respectivamente e que geraram as tabelas T1 e T2 respectivamente, deve-se inserir a chaveprimária de T1 como chave estrangeira em T2;Relacionamento Trabalha Funcionario Departamento Codigo Codigo CodigoDepartamento (PK) Nome Nome Rua Numero CEP Bairro5. Para cada relacionamento regular com cardinalidade N: N entre entidades E1 e E2, cria-se umanova tabela T1, contendo todos os atributos do relacionamento mais o atributo chave de E1 e oatributo 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 Bairro6. 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; achave 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 CPF7. Para cada relacionamento n-ário, n > 2, cria-se uma tabela T1, contendo todos os atributos dorelacionamento; a chave primária de T1 será composta pelos atributos chaves das entidadesparticipantes do relacionamento;8. Converta cada especialização com m subclasses {S1, S2, ..., Sm} e superclasse SC, onde osatributos de SC são {c, a1, a2, ..., an} onde c é a chave primária de SC, em tabelas utilizando umadas 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; crieuma tabela Ti para cada subclasse Si , 1  i  m, com os atributosA(Ti) = {c}  A(Si), onde C(T) = c;8.2. Crie uma tabela Ti para cada subclasse Si, 1  i  m, com os atributosA(Ti) = A(Si)  {c, a1, a2, ..., an} e C(Ti) = c;8.3. Crie uma tabela T com os atributosA(T) = {c, a1, a2, ..., an}  A(S1)  ...  A(Sm)  {t} e C(T) = c, onde t é um atributo tipo que indicaa subclasse à qual cada tupla pertence, caso isto venha a ocorrer;8.4. Crie uma tabela T com atributosA(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çãopossa 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 I4.8 Normalização de Dados Consiste em definir o formato conceitual adequado para as estruturas de dados identificados noprojeto lógico do sistema, com o objetivo de minimizar o espaço utilizado pelos dados e garantir aintegridade e confiabilidade das informações.A normalização é feita, através da análise dos dados que compõem as estruturas utilizando oconceito chamado "Formas Normais (FN)". As FN são conjuntos de restrições nos quais os dadosdevem 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 normaisexistentes, sendo que a passagem de uma FN para outra é feita tendo como base o resultadoobtido na etapa anterior, ou seja, na FN anterior.Para realizar a normalização dos dados, é primordial que seja definido um campo chave para aestrutura, 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çãode 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 BairroSegunda Forma Normal (2FN)Uma tabela está na segunda forma normal se ela estiver na primeira forma normal e se cadacoluna não-chave depender totalmente da coluna-chave. Consistem em retirar das estruturas que possuem chaves compostas (campo chave sendoformado por mais de um campo), os elementos que são funcionalmente dependentes de parte dachave. Podemos afirmar que uma estrutura está na 2FN, se ela estiver na 1FN e não possuircampos 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 TotalVendaComo 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 dadosque são dependentes apenas do campo Código da Mercadoria.Segunda estrutura (Arquivo de Mercadorias): Contém os elementos que são identificados apenaspelo Código da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrição e o preço devenda serão constantes.Terceira Forma Normal (3FN)Consistem em retirar das estruturas os campos que são funcionalmente dependentes de outroscampos que não são chaves. Podemos afirmar que uma estrutura está na 3FN, se ela estiver na2FN 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 queindependente da Nota Fiscal, o Nome e CGC do cliente são inalterados. Este procedimentopermite evitar inconsistência nos dados dos arquivos e economizar espaço por eliminar oarmazenamento frequente e repetidas vezes destes dados. A cada nota fiscal comprada pelocliente, 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 osdados que são dependentes apenas do campo Código do Cliente (informações referentes aocliente).Segundo estrutura (Arquivo de Clientes): Contém os elementos que são identificados apenas peloCódigo do Cliente, ou seja, independente da Nota Fiscal, o Nome, Endereço e CGC dos clientesserão constantes.Após a normalização, as estruturas dos dados estão projetadas para eliminar as inconsistências eredundâncias dos dados, eliminando desta forma qualquer problema de atualização eoperacionalização do sistema. A versão final dos dados poderá sofrer alguma alteração, paraatender as necessidades específicas do sistema, a critério do analista de desenvolvimento duranteo projeto físico do sistema.Resumo da UnidadeO modelo relacional foi criado por Codd em 1970 e tem por finalidade representar os dadoscomo uma coleção de relações, onde cada relação é representada por uma tabela, ou falando deuma forma mais direta, um arquivo. Porém, um arquivo é mais restrito que uma tabela. Toda tabelapode 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 representauma coleção de dados relacionados. Estes valores podem ser interpretados como fatosdescrevendo uma instância de uma entidade ou de um relacionamento. O nome da tabela e dascolunas desta tabela é utilizado para facilitar a interpretação dos valores armazenados em cadalinha 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 umatabela é chamada de tupla; o nome de cada coluna é chamado de atributo; o tipo de dado quedescreve cada coluna é chamado de domínio. 31
    • Banco de Dados IIMPORTANTEAntes de começar o conteúdo sobre SQL, fazer o exercício abaixo para servir de exemplo nopró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 linguagensdestinadas à 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 programadorprecise se preocupar com detalhes internos do banco, como a forma como os dados são armazenados eorganizados internamente. Foi criada para definir, modificar e consultar dados armazenados em banco de dados. Os grandesfabricantes 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 criadopara 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 oprogramador 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 serfeito e este se encarrega de fazê-lo. A linguagem SQL pode ser Interativa ou Embutida. A forma Interativa é usada diretamente para operar umbanco de dados, através de uma ferramenta que permite a execução direta do código SQL. A forma Embutidaintroduz 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 umbanco de dados: DDL (Data Definition Language):Comandos responsáveis pela criação de objetos. Ex.: Create Table, CreateView, 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 IComandos 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 definidosquanto à forma de armazenamento. As “variações” do SQL criaram outrostipos de dados, como por exemplo: armazenagem de imagens, filmes,vetores, entre outros. O padrão SQL ANSI reconhece apenas os tipos Text eNumber.A tabela abaixo demonstra estes dois tipos:TextoVarchar Caracteres de tamanho Até 254 caracteres variávelChar caracteres de tamanho fixo Até 254 caracteresNuméricoDec Número decimal com casas Até 15 dígitos definidasNumeric Número com precisão Até 22 dígitos especificadaInt Inteiro sem parte decimalSmallint idêntico a Int com limite de tamanhoFloat Número de ponto flutuante com base exponencial 10Real Idêntico a Float exceto que não é usado um argumento para especificar o tamanhoDouble Idêntico a Real, só que com precisão maior.Data e HoraDate Armazena datasTime Armazena horas5.5 Expressões e Operadores: 34
    • Banco de Dados IOs operadores têm por finalidade permitir uma flexibilidade maior namanipulação dos dados de um banco. Estes seguem precedências deutilização conjunta.5.6 Tipos de OperadoresMultiplicação *Divisão /Subtração -Adição +Módulo %AritméticosCaracteresConcatenação de campos ||ComparaçãoIgualdade =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ógicosNOT Inverter o valor BooleanoAND Verdadeiro se ambos forem verdadeirosOR Verdadeiro se for verdadeiro um dos ladosBETWEEN Verdadeiro se estiver dentro da faixaLIKE Verdadeiro se operador encontrar um padrãoIN Verdadeiro se algum item for verdadeiroSOME Verdadeiro se qualquer item for verdadeiro 35
    • Banco de Dados IANY Verdadeiro se algum item for verdadeiroALL Verdadeiro se todo o conjunto for verdadeiroBitwise&!^Unários+ Positivo- Bitwise NOT~ Negativo 36
    • Banco de Dados I Unidade 6 - Criação de Tabelas6.1 Tutorial:Na construção de uma tabela é necessário que os dados sejam definidosquanto à forma de armazenamento. As “variações” do SQL criaram outrostipos de dados, como por exemplo: armazenagem de imagens, filmes,vetores, entre outros. O padrão SQL ANSI reconhece apenas os tipos Text eNumber.O tipo char só deve ser utilizado quando todas as entradas ocupam otamanho definido, pois o banco de dados sempre aloca aquele tamanho. Já otipo Varchar aloca um tamanho diferente no banco de dados para cadaentrada, sendo mais recomendado quando cada entrada tem um tamanhodiferente.6.2 Criando TabelasAntes mesmo de executar a instrução SQL que irá criar as tabelas éfundamental um planejamento e um reconhecimento da estrutura que sepropõe criar.O comando Create Table tem por finalidade criar uma nova tabela no bancode 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 todosexecutarem o comando de criação de uma única tabela, apenas o primeiroserá bem sucedido, e os outros retornarão um erro de tabela já existente.Assim, para testarmos os comandos, cada aluno deve criar uma tabeladiferente, e para tanto iremos utilizar o nome de cada máquina. Sempreque 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_INCREMENTNome VARCHAR (20))Este comando permitiu a criação de uma tabela que contem dois campos, uminteiro 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 ISelect * from NOME_DE_SUA_MAQUINAResultado: Id Nome ------ -----------Observe que, embora a tabela esteja vazia, aparecem os nomes dos doiscampos 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 NulosPode-se definir se o campo receberá valores NULOS ou não. Quando osvalores não são NULOS tornam-se obrigatórios, o que significa que nãoserá possível inserir dados na tabela em que tais campos não tenham umvalor.6.5 Chave PrimáriaPor definição é o dado que diferencia uma linha de outra na tabelatornando-as únicas. Pode ser composta, ou seja, utiliza mais de umacoluna para compor um valor único.Para um campo ser definido como Chave Primária, ele não poderá receber umvalor NULO.Por exemplo, muitas vezes criamos uma tabela com um campo deidentificação (geralmente chamado de Id, Cod, Codigo ou outro nomesemelhante). Este campo será utilizado em consultas para relacionar estatabela com outras, como vimos nos exercícios com Select. É mais eficientepara certas consultas que este campo seja a chave primária, mesmo porqueele necessariamente será único.Observe a sintaxe para criarmos a tabela novamente com o Id como sendoobrigató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_INCREMENTNome VARCHAR (20),PRIMARY KEY(Id)) 38
    • Banco de Dados I6.6 Chave Estrangeira:Por definição é o campo de outra tabela que recebe os valores do campo daChave Primária.Esta ligação a um campo de Chave Primária possibilita que os dadosmantenham a integridade referencial. Esta integridade significa que osdados de uma tabela só poderão ser inseridos de forma válida ecorrespondente.Execute o comando select * from pedidos e confira que a tabela contémduas chaves estrangeiras. Veja se consegue descobrir quais são.6.7 Integridade Referencial:A Integridade Referencial é utilizada para garantir a Integridade dosdados entre as tabelas relacionadas. Por exemplo, considere umrelacionamento do tipo Um-para-Vários entre a tabela Clientes e a tabelaPedidos (um cliente pode fazer vários pedidos). Com a IntegridadeReferencial, o banco de dados não permite que seja cadastrado um pedidopara um cliente que ainda não foi cadastrado. Em outras palavras, aocadastrar um pedido, o banco de dados verifica se o código do cliente quefoi digitado já existe na tabela Clientes. Se não existir, o cadastro dopedido não será aceito. Com o uso da Integridade Referencial é possívelter as seguintes garantias (ainda usando o exemplo entre as tabelasClientes e Pedidos):Quando o Código de um cliente for alterado na Tabela Clientes, podemosconfigurar para o banco de dados atualizar, automaticamente, todos osCódigos do Cliente na Tabela Pedidos, de tal maneira que não fiquemRegistros Órfãos, isto é, registros de Pedidos com um Código de Clientepara o qual não existe mais um correspondente na Tabela Clientes. Essaação é conhecida como "Propagar atualização dos campos relacionados".Quando um Cliente for excluído da Tabela Clientes, podemos configurarpara 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 seratualizado a atualização é abortada caso um registro em uma tabela referenciada tenha um valormais 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 IEle vai tentar atualizar o código para 5, mas como em pedidos existem registros do cliente 2haverá 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 vaitentar 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 registrosreferenciados 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ãosetados para NULL.SET DEFAULT - Quando um registro na chave primária é atualizado, todos os campos nosregistros 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 comvalor 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 serdeletado, a exclusão será abortada caso o valor de um registro na tabela referenciada seja maisvelho. 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 ocod_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 relacionadoscom aquela chave são excluídos. SET NULL - Quando um registro com a chave primária é excluídos, os respectivos campos natabela relacionada são setados para NULL. SET DEFAULT - Quando um registro com a chave primária é excluído, os campos respectivos databela relacionada são setados para seu valor DEFAULT. 40
    • Banco de Dados I6.10 Removendo TabelasPara remover uma tabela de um banco de dados deve-se utilizar o comandoDrop Table seguido do nome da tabela:Sintaxe:Drop Table [nome da tabela]Execute o comando para remover a tabela criada anteriormente, parapodermos criá-la com novos campos.Comando:Drop Table NOME_DE_SUA_MAQUINALaboratórioCrie as seguintes Tabelas: 41
    • Banco de Dados I Unidade 7 - Comandos para Alterar Tabelas7.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 atabela e criá-la novamente com a estrutura nova, mas com isto perderíamos todos os dados previamentecadastrados. 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 – ADDEste comando adiciona colunas a uma tabela. As colunas serão criadas da mesma forma que no comandoCREATE TABLE.Comando: ALTER TABLE NOME_DE_SUA_MAQUINA ADD Sobrenome VarChar(20)7.3 Remover colunas de uma tabela – DROPRemove uma coluna de uma tabela. Caso a coluna já possua dados digitados, eles também serãoperdidos.Comando: ALTER TABLE NOME_DE_SUA_MAQUNIA DROP Sobrenome7.4 Renomeando colunas de uma tabela – RENAMERenomeia uma coluna de uma tabela. Caso a coluna já possua dados digitados, eles não serãoperdidos.Comando: ALTER TABLE NOME_DE_SUA_MAQUNIA RENAME Sobrenome SegundoNome 42
    • Banco de Dados I7.5 Modificando colunas de uma tabela – MODIFYModifica uma coluna de uma tabela. Caso a coluna já possua dados digitados, eles não serãoperdidos.Comando:ALTER TABLE NOME_DE_SUA_MAQUNIA MODIFY SegundoNome varchar(30)LaboratórioModifique as tabelas do exercício anterior para que fiquem com o seguinte formato: 43
    • Banco de Dados I Unidade 8 - Modificando Dados8.1 Inserindo DadosAlém dos comandos de consulta ao banco de dados, uma aplicação geralmente irá também inserirnovos dados e atualizar os existentes;Ao inserir dados em uma tabela, o administrador do banco de dados deverá conhecer qual aestrutura 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 TabelaCreate Table NOME_DE_SUA_MAQUINA(Id INT, Nome VARCHAR (20))Comando de Inserção de DadosInsert 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ão8.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, comtodas as suas variações.Esta possibilidade é muito útil, pois dependendo do caso não será necessário digitar os dadosnesta tabela, uma vez que eles podem ser reproduzidos através de tabelas existentes no Banco deDados.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 IAgora vamos colocar nesta tabela todos os nomes de funcionários da empresa:Comando:insert into NOME_DE_SUA_MAQUINA(Nome) select Nome from funcionariosConfira executando um comando SELECT * FROM NOME_DE_SUA_MAQUINA. Se tudo ocorrercorretamente, o resultado será que você terá uma nova tabela com todos os nomes presentes natabela funcionários.8.3 Excluindo informaçõesEste comando remove linhas das tabelas. Podemos remover todo o conteúdo da tabela, ou definiras 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 peloSQL 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 tabelaAtravé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 outrastabelas 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 * 2Observe que os valores podem ser diferentes, pois todos os alunos estão alterando a mesmatabela, neste caso.Esta alteração está permitindo ao usuário aumentar em 100% o preço de todos os produtos. Estaalteração poderia ser feita utilizando-se uma restrição com a cláusula Where, para atualizarapenas um produto.Comando:update produtos set preco=20 where id = 2Este comando define como 20 o preço do produto 2, ou seja, da carne.LaboratórioBaseado nas tabelas criadas e as alterações realizadas nas tabelas das unidades anterioresrealize os seguintes comandos: 45
    • Banco de Dados IInsira 3 registros em cada tabelaDelete 1 registro da tabela tbfornecedoresAtualize o valor da matéria prima em 20% Insira 2 registros na tabela tbmateriaprimaRemova o ultimo registro da tabela tbestoquematAtualize a tabela tbestoquemat para um aumento de 50% na quantidadeInsira 2 registros na tbfornecedoresDelete 1 registro da tabela tbtipomateriaInsira 2 registros na tabela tbtipomateriaReduza em 13% o valor da tabela tbmateriaprima 46
    • Banco de Dados I Unidade 9 - Consulta em uma única Tabela SQL9.1 Sintaxe Básica de Consultas SQLEm 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 representandouma 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 osparâ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 docampoN” representam os parâmetros, e, portanto colunas, que desejamos recuperar.9.2 Exemplos de Consultas SQLInicialmente faremos algumas consultas simples a uma única tabela. Nos exemplos desta unidade estaremosutilizando a tabela “transportadoras”, cujo conteúdo é mostrado abaixo. O instrutor poderá utilizar os mesmosexemplos ou criar junto com os alunos tabelas próprias, utilizando o banco de dados que for maisconveniente.Obs.: Neste e nos demais exemplos de tabelas do banco de dados, a primeira linha especifica o nome doatributo 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-56789.3 Seleção de Todos os Registros com Colunas EspecíficasExecute a consulta abaixo, ou siga as instruções do instrutor, executando uma consulta equivalente: 47
    • Banco de Dados I Select Nome from transportadorasExecutando a consulta acima na tabela Transportadoras, contendo os dados mostrados, teremos o seguinteresultado: Nome ---------------------- Transportadora Fulano Transportes Pedrão Expresso MarteNa mesma tabela, também podemos consultar mais parâmetros, bastando especificá-los separados porvírgulas. Confira a consulta a seguir e o resultado correspondente: Select Nome, Telefone from transportadorasResultado: Nome Telefone ------------- -------------- Transportadora Fulano (51) 3346-7300 Transportes Pedrão (51) 0000-0000 Expresso Marte (51) 1234-56789.4 Redefinindo o Nome das ColunasNormalmente as colunas retornadas por uma consulta SQL possuem o nome da coluna respectiva na tabelado 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 transportadorasResultado: Transportadoras ---------------------- 48
    • Banco de Dados I Transportadora Fulano Transportes Pedrão Expresso Marte9.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 registroSintaxe: SELECT ‘texto’, [nome do campo], ‘texto’, [nome do campo] FROM [nome databela]Comando: select nome, ocupa o cargo de, cargo from funcionariosResultado: 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 TelefonistaConsulta 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 osoperadores + , - , / , * e ^.Sintaxe: SELECT [nome do campo]*[nome do campo] as [nome da expressão] FROM [nomeda 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 330Comando: 49
    • Banco de Dados I select nome, preco*estoque as total from produtosResultado: Nome total --------------------- ----------- Leite 5000 Carne 6600 Pão 37200 Suco 6600LaboratórioBaseado nas tabelas criadas e as alterações realizadas nas tabelas dasunidades 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 strings10.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 dastabelas do banco de dados.Nesta unidade apresentamos algumas das funções mais comumente utilizadas em situações reais, para oaluno se familiarizar com o conceito de funções de manipulação de strings. Na prática pode ser interessanteconsultar as funções que o banco de dados que estiver sendo utilizado fornece, quando for necessáriomanipular strings.10.2 Sintaxe da Função de Concatenação de StringsPara 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 funcionarios10.3 Controle de Maiúsculas e MinúsculasDuas funções permitem transformar o retorno de uma consulta em letras maiúsculas e minúsculas.LowerTransforma as letras em minúsculas na resposta da instrução SQL. Como exemplo: Select Lower(Nome) from clientes;UpperTransforma as letras em maiúsculas na resposta da instrução SQL. Como exemplo: Select Upper(NomeDoContato) from clientes; 51
    • Banco de Dados I10.4 Segmentando uma StringAlguns comandos permitem separar uma string, recuperando apenas determinada parte da informação que sedeseja.SubstrSepara uma parte da linha baseada na seguinte forma: SUBSTR(String1, Valor1, Valor2),Onde:String1 é a string da qual vai ser recuperado um segmentoValor1 é onde começa a ser feita a separaçãoValor 2 é o número de caracteres que serão separados.Exemplo: Select Substring(Nome, 1, 3) from clientesLeftSepara uma parte da linha baseada na seguinte forma: LEFT (String1, Valor1)Onde,String1 é a string de origemValor1 é o número de caracteres que serão separados a partir da esquerda.Exemplo: Select Left(Nome, 1) from clientes;RightSepara uma parte da linha baseada na seguinte forma: RIGHT (String1, Valor1)Onde,String1 é a string de origemValor1 é 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 IExemplo: 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 origemExemplo: Select LOCATE(„João‟, Nome) from clientes;LaboratórioBaseado nas tabelas criadas e as alterações realizadas nas tabelas dasunidades 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 ―emmaiúscula‖A matéria prima ―x‖ é formada por ―quantidade de letras‖ letrasO fornecedor ―x‖ tem um fax de ―quantidade de letras‖ letras 53
    • Banco de Dados IUnidade 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 vezcomo critério de uma consulta. Por exemplo, se desejar exibir os filmes lançados após o ano 2000com 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 ouatualização). Principalmente em consultas que realizam alterações, recomenda-se atentar para ouso quase que obrigatório da cláusula ―where‖, pois sua omissão resulta na execução da alteraçãoem 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 trabalhoa empresa deseja conceder um aumento de 15% em seus salários. Se executarmos uma consultaconforme exemplo abaixo, todos os funcionários receberam aumento independente do seu tempona empresa: UPDATE funcionarios SET salario = salario * 1.15 Para que apenas os funcionários que possuem o critério estabelecido pela empresa parareceber o aumento, sejam efetivamente beneficiados, é necessário incluir uma cláusula. Observe asintaxe 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 umasentença sem um critério de forma correta ou mesmo sem a existência de um, pode acarretar naperda significativa de dados importantes para a instituição. Como regra geral recomenda-se iniciar a escrita de seu script SQL, para consultas dealterações, pelos critérios que as mesmas devem considerar, reduzindo assim, a chance decometer qualquer tipo de equivoco, com consequências mais graves.11.2 Consultas Simples com Cláusula WhereVamos definir uma consulta bastante simples, restringindo a lista de clientes apenas aqueles cujo país é oBrasil. 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 BrasilComando: SELECT NOME FROM CLIENTES WHERE PAIS=BRASILResultado: 55
    • Banco de Dados I nome ---------------- Empresa A Empresa B Empresa XO sinal de igualdade (=) foi utilizado porque o usuário sabia exatamente o que estava procurando. Verifiqueos 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ãoutilizados nos critérios de consulta. Pois esta observação nos mostra que tipos de critérios podem serutilizados (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 valordo campo é do tipo texto, a exemplo do aconteceria com um campo data (apenas devemos atentar para seuformato).Para campos tipados como numéricos não há a necessidade, além de não ser recomendado, do uso de aspassimples. Entretendo, se estiver utilizando um banco de dados que você não tenha estruturado, utilizecomandos (veremos nas próximas unidades) que exibam a estrutura da tabela, pois podemos encontrarcampos com valores numéricos que tenham sido tipados como texto, o que pode atrapalhar a percepção doresultado final.11.3 Selecionando Dados Não RepetidosAlgumas vezes não queremos recuperar todas as entradas de determinada tabela, mas apenas aquelas nãorepetidas. Podemos, por exemplo, querer listar todas as cidades em que a empresa tem clientes, ou todas asfaixas de salário dos funcionários, e nestes casos não faz sentido repetir inúmeras vezes a mesma cidade oufaixa 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 nobanco de dados: select distinct pais from clientesResultado: País Argentina 56
    • Banco de Dados I BrasilCase o comando seja executado novamente, porém sem a cláusula DISTINCT e observe a teremos arepetição dos países.O comando DISTINCT realiza um agrupamento dos dados exibidos, portanto devemos sempreestar 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‖ foiexibida, 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 clientesResultado: Nome País Brasil Empresa A Brasil Empresa B Brasil Empresa C Argentina Empresa X Brasil11.4 Selecionando alguns dadosEm determinadas situações desejamos apenas obter alguns registos de uma consulta, poisapenas uma amostra de dados pode ser suficiente para chegarmos ao resultado esperado dasentença.Esta sintaxe para construção de um limite dos resultados leva em consideração o banco de dadosno qual as informações estão armazenadas, sejamos abaixo a sintaxe para Access/SQL SERVERe para MySQL.Access/SQL SERVER:SELECT TOP [valor] [opcional PERCENT] [nome do campo] FROM [nome databela] 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 cadaCod_Celula Modelo Marca Camera MP3 Bateria Valor Lancamentor1 Star Sansung Sim Sim 3.2 600.00 2009-04-122 N97 Nokia Sim Sim 4.1 700.00 2010-01-203 IPhone Apple Sim Sim 3.4 1.100 2007-12-304 Corby Sansung Sim Sim 4.2 800.00 2008-06-255 N95 Nokia Sim Sim 2.7 950.00 2005-05-056 Jet Sansung Sim Sim 3.3 650.00 2008-10-097 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 foramlanç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 horasListe 2 celulares com câmeraListe as marcas de celular existentesListe celulares da marca ―Nokia‖ com bateria de mais e 3 horas e com valor inferior a R$ 700,00Atualize em 10% o valor dos celulares da ―Nokia‖Insira mais 4 modelos de celularDelete 2 celulares da SansungAtualize a informação MP3 para NÃO em celulares com bateria inferior a 3 horas e valor superiora R$ R$ 500,00Mude 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,00Atualize 3 celulares para câmera NÃOMude o valor dos celulares Samsung para 80% de seu valor atualInsira 2 celulares com nomes novos utilizando os dados de outro celularDelete todos os celulares com valor inferior a R$ 300,00 59
    • Banco de Dados I Unidade 12 - Predicados12.1 Predicados LIKE e NOT LIKE:Na unidade anterior, vimos como selecionar apenas algumas entradas de uma tabela, com o uso da cláusulaWhere. Entretanto, apenas com os operadores de igualdade, que foi mostrado, e outros operadoresaritmé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 maispoderosos. Por exemplo, podemos querer procurar por um cliente do qual não temos todo o nome, masapenas 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 serauxiliado 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 consultacom 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 AugustoComando: select nome from clientes where nome = JoãoResultado: nome ------------- A resposta para esta instrução será uma tabela vazia. Apesar de existir um João na tabela, o critério deigualdade exige o nome completo. A consulta apenas retornaria o cliente se fosse colocado o nome completo:„João da SilvaAssim, utilizar o sinal de igualdade nos retorna o resultado desejado somente se conhecermos o nomecompleto 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 IResultado: nome ---------------- João da Silva Borges João AugustoDa mesma forma como podemos pesquisar por informações que comecem por um determinado conjunto decaracteres, também podemos definir que certas letras estejam no final ou em qualquer posição do texto, comomostramos 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 Borges12.2 Predicados BETWEEN... AND e NOT BETWEEN... ANDO 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 1000Resultado: Nome Estoque --------------- ------------- Leite 100012.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 tipotexto devem ser escritos entre aspas simples.Sintaxe: 61
    • Banco de Dados I Select * from [nome da tabela] WHERE [campo da tabela] {NOT} IN (valor outexto, 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 Brasil12.4 Predicado IS NULL e IS NOT NULLSepara 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} {ISNULL}; Este predicado pode ser útil para determinadas situações em que algum campo esteja null porque não foiprocessado 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 paraidentificar pedidos ainda não enviados.Comando: select * from pedidos where DataEnvio Is NullAnalogamente, para verificarmos quais entradas possuem um valor de DataEnvio, e, portanto representampedidos 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 dealgum valor caso um campo esteja nulo. Comando: select ISNULL(taxa, „‟) Cobrança from pedidos 62
    • Banco de Dados I12.5 Seleção com Operadores LógicosPara selecionar registros de uma tabela com a determinação de critérios o usuário deverá utilizar a cláusulaWHERE 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 ourestrição] OR [nome do campo] [operador de comparação ou restrição] [critério decomparação ou restrição]Como exemplo, vamos selecionar todos os produtos cujo estoque seja maior que 500 e tenham um preçomenor que 10.Comando: select Nome, Estoque, Preco from produtos where estoque > 500 and preco <10Neste exemplo, a cláusula AND obrigou que ambas as condições fossem atendidas. Podemos também definirque o item seja selecionado caso qualquer das condições seja atendida, como mostra o exemplo abaixo emque 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 >1000Laboratório.Para a realização dos exercícios abaixo utilize a tabela criada no exercício anteriorOs 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 eR$ 500.Liste nome de todos os celulares, junto com seus valores, para todos os celulares que não sejamda ―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 horasListe 2 celulares com câmera com valor nuloListe as marcas de celular existentes em letra maiúscula e sem valores nulosListe celulares da marca ―Apple‖ com bateria de mais e 3 horas e com valor entre a R$ 700,00 eR$ 2.000,00Delete 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ção13.1 Obtendo Informações EstatísticasMuitas vezes não queremos recuperar os dados armazenados no banco de dados, mas sim informaçõesestatísticas sobre os mesmos, como totais e médias de valores. Para tanto utilizamos as chamadas funções deagrupamento.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 processarcá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 maiscaro, MIN(Preco) as Preço mais barato, AVG(Preco) as Preço médio,COUNT(Preco) as Total de Registros from produtosExemplo 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 4As funções agregadas não podem ser utilizadas dentro de uma cláusula WHERE, porem é possível utilizaresta cláusula para restringir o número de linhas que serão consideradas no cálculo da resposta, como mostra oexemplo abaixo:Comando: SELECT AVG(preco) from produtos where preco > 10Nesta consulta acima o que estamos obtendo é a média entre todos os produtos cujo preço é maior que 10. 64
    • Banco de Dados I13.2 Agrupamento Utilizando GROUP BY:A cláusula GROUP BY agrupa os registros de acordo com uma condição especificada. A sintaxe é mostradaabaixo: 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 detodos os países de clientes.Comando: select Pais from clientes group by paisResultado: Pais --------------- Argentina BrasilO resultado acima poderia ser obtido também com o uso do comando DISTINCT. Na realidade, geralmente ouso do comando GROUP BY só é adequado em conjunto com funções de agrupamento, como mostramos noexemplo a seguir: select count(*) as Total, pais from clientes group by paisResultado: Total País --------- --------------- 1 Argentina 4 BrasilComo agrupamos por países, conseguimos utilizar o comando de COUNT e descobrir quantas vezes cadaum 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 porum 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 IO comando abaixo mostra o uso de COUNT e WHERE para retornar o total de clientes com cargo do contatocomo sendo de gerente de vendas. select count(*), pais from clientes where CargoContato = Gerente deVendas GROUP BY pais13.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 deregistros gerados pela cláusula GROUP BY, a cláusula HAVING faz um filtro também, porém. permitindo autilizaçã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 comandoabaixo: select count(*),pais from clientes group by pais having count(*) >= 3Resultado: Count(*) País ------- ------------- 4 BrasilComo 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 adefinição de cada uma, mostrada abaixo:a cláusula WHERE é utilizada para filtrar as linhas que resultam da consulta da tabela especificada pelaclá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 ConsultasAté agora não nos preocupamos com a ordem em que são mostrados os resultados de uma consulta, mas emsituações reais normalmente vamos querer controlar esta ordenação. A cláusula ORDER BY ordena osregistros em crescente e decrescente baseado em um campo da tabela, e sua sintaxe de uso é mostradaabaixo: SELECT [nome do campo] FROM [nome da tabela] ORDER BY[nome do campo]{ASC}{DESC} 66
    • Banco de Dados ISe não utilizarmos a cláusula ORDER BY, o resultado da instrução será baseado no índice da tabelaanalisada. Ao utilizarmos a cláusula estamos definindo a ordem, como no caso abaixo em que os produtos sãomostrados em ordem alfabética:Comando: select Nome from produtos order by NomeNão é necessário utilizar o complemento ASC para as ordenações crescentes, porém para as ordenaçõesdecrescentes deve-se utilizar DESC:Laboratório.Para a realização dos exercícios abaixo utilize a tabela criada no exercício anteriorSome os valores dos celulares.Calcule o tempo médio de duração da bateriaEncontre 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 exemplarListe as marcas de celular existentes em letra maiúscula e sem valores nulosListe todos os celulares por em ordem decrescente de lançamentoCalcule a média de duração dos celulares com câmera 67
    • Banco de Dados IUnidade 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 IResultado: 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 umatabela 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 IgualdadeTambém conhecido como join simples ou inner join, o Equijoin fará a união entre duas ou mais tabelasatravé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 docampo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nomedo campo] = [nome da tabela2].[nome do campo]Vamos utilizar um inner join para obter uma lista dos produtos e suas respectivas categorias. Vamos assumirque 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 Categoriafrom produtos, categorias where produtos.CodCategoria = categorias.id 69
    • Banco de Dados IResultado: Nome Produto Categoria --------------- ------------------ Leite Bebidas Suco Bebidas Carne Carnes Pão Outros Alimentos14.4 Exercícios SugeridosAnteriormente foi apresentada a tabela clientes, com atributos Nome e País. Transforme esta informação emduas tabelas, Novo_Clientes e Países, definindo os atributos que fazem a relação entre as tabelas, e definauma consulta SQL que retorne o mesmo resultado da tabela Clientes original, porém consultando as duasnovas tabelasTabela Clientes Nome País Brasil Empresa A Brasil Empresa B Brasil Empresa C Argentina Empresa X Brasil14.5 Equijoins e Operadores Lógicos:É possível combinar em uma cláusula WHERE com equijoins os operadores lógicos: AND, OR e NOT. Istoserá necessárias em boa parte das consultas SQL feitas em um sistema, pois geralmente queremos definircondições exatas para a recuperação de dados de diversas tabelas.Sintaxe: Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome docampo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nomedo campo] = [nome da tabela2].[nome do campo] AND [nome da tabelaN].[nome docampo] [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 cujopreç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 andprodutos.preco > 1014.6 Equijoins entre mais de duas tabelasNa maioria dos bancos de dados relacionais as tabelas relacionam-se entre si em mais de um nível. Vamosdefinir uma consulta entre tabelas pedidos, produtos e categorias para exemplificar este recurso. Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome docampo], [nome da tabela3].[nome do campo] from [nome da tabela1], [nome databela2], [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 whereprodutos.codcategoria = categorias.id AND pedidos.idProduto = produtos.idEm situações reais, muitas vezes serão criadas consultas entre diversas tabelas, geralmente com a ligaçãoentre cada tabela e as demais sendo feita através de uma igualdade que ligue a chave primária de uma tabelacom a chave estrangeira da outra.14.7 Redefinição do Nome de TabelasPara „facilitar‟ a vida do administrador da base de dados, não é necessário que este digite o nome das tabelasem sua totalidade. É possível criar um alias para cada tabela, diminuindo, assim, a quantidade de caracteresdigitados. O exemplo abaixo ilustra esta técnica.Comando: select PE.id as Id do Pedido, PR.nome as Nome do Produto, C.nome asCategoria from pedidos as PE, produtos as PR, categorias as C wherePR.codcategoria = C.id AND PE.idProduto = PR.id14.8 Outros Tipos de Joins - Outer JoinsO resultado de uma instrução SQL que utiliza Equijoin, exibe os resultados que são comuns entre os camposdas 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, parasaber se existe algum Cliente que nunca tenha feito um pedido.Left e Right JoinPara que a questão acima seja respondida, é necessário entender que existe um lado da relação que irá listarseus registros, baseado no Left ou Right. 71
    • Banco de Dados IEm 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 doscasos é 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 docampo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nomedo campo] * = [nome da tabela2].[nome do campo]ou Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome docampo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nomedo campo](+) = [nome da tabela2].[nome do campo]ou Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome docampo] from [nome da tabela1] LEFT JOIN [nome da tabela2] ON [nome databela1].[nome do campo de relação] = [nome da tabela2].[nome do campo derelaçã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 tabelapedidos (portanto as entradas da tabela pedidos retornam null): select clientes.nome from clientes left join pedidos on clientes.Id =IdCliente where pedidos.id is nullObservaçã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 JoinsSelf Joins são relações estabelecidas entre uma mesma tabela, por intermédio de dois de seus campos. Sãoutilizadas normalmente quando a tabela referencia a si mesmo para definir uma hierarquia, por exemplo entrefuncionários. A única diferença para um Inner Join comum é que repetimos a mesma tabela com dois aliasdiferentes.Abaixo é mostrada a sintaxe de um self join.Sintaxe: Select * from [nome da tabela].[nome do campo1], [nome da tabela].[nome docampo2] where [nome da tabela].[nome do campo1]= [nome da tabela].[nome docampo2];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áriosque possuem um chefe, indicando quem é o mesmo: select F2.Nome as funcionário, é subordinado a, F1.Nome as chefefrom funcionarios as F1, funcionarios as F2 where F2.Chefe = F1.Id 72
    • Banco de Dados ILaboratórioCrie a seguinte estrutura de tabelas, para executar os exercíciosListe o nome e a quantidade de atendimentos por clienteListe o nome e a quantidade de atendimentos por funcionárioConte quantos produtos estão em cada pedidoCalcule a média de valor dos pedidos de cada clienteCalcule o valor total de cada pedidoMostre a quantidade, total e média de pedidos por dataListe a média de pedidos que cada produto participouListe o produto mais vendido por cada vendedorMostre quantidade de pedidos por tipo de cliente e tipo de pedidoExiba todos os produtos que não tem pedidoListe os produtos por cliente que não foram solicitados por eles 73
    • Banco de Dados IListe quantos pedidos cada vendedor faz por data 74
    • Banco de Dados I Unidade 15 - Trabalhando com datas15.1 Datas em MySQLA forma de trabalhar com datas pode variar um pouco em diferentes bancos de dados. Aqui apresentamosrecursos tendo como base o MySQL.15.2 Recuperando Informações Específicas de DataDiversas funções permitem recuperar informações específicas com base em uma data, como o dia, mês e anode determinada data, como mostrado abaixo:DAY OF MONTHSeleciona o dia de uma data: select DataPedido, dayofmonth(DataPedido) from pedidosMONTHSeleciona o mês de uma data: select DataPedido, month(DataPedido) from pedidosYEARSeleciona o ano de uma data: select DataPedido, year(DataPedido) from pedidosFormato das DatasPara 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 Extras1. Uma loja de roupas deseja criar um cadastro com suas peças. Cada peça possui umcó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 termais de um, ou nenhum), e as peças que ele já comprou. A data em que o cliente comproua 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 podeser de mais de um cliente (conta conjunta). O banco mantém também um cadastro com as suasagê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., queapresenta 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 (dadopelo 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 dedisciplinas que contém as informações aluno e inscrição. As seguintes informações devem estarincluí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 docurso e data da matrícula.Projete o banco de dados para esses dados. Faça quaisquer suposições razoáveis sobre asdependê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 primeirotrabalho e desenvolver um sistema para cadastro de clientes você recebeu o cliente uma lista comos dados que deverão compor o sistema , com base nesta lista normalize a estrutura de dados deacordo com as formas normais.Lista de informações que deverão compor o sistema cadastro de clientes:NomeNome do PaiNome da MãeEndereçoTelefone1Telefone2Número do FaxNúmero do CelularTelefone do trabalhoData de NascimentoNaturalidadeNacionalidadeEndereço de correspondênciaNome do filho 1idade do filho 1Nome do filho 2idade do filho 2Nome do filho 3idade do filho 3Nome do filho 4idade do filho 4Nome do CônjugeNúmero do CPFNúmero da carteira de identidade6. 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 quepara atingir seus objetivos seria necessário adquirir frota de veículos próprios para motorizar seusvendedores. O mercado consumidor foi dividido em regiões de venda; foram estabelecidospercursos de entrega abrangendo pontos estratégicos dessas regiões e vendedores foramdesignados para cobrir estes percursos. Um sistema deve ser construído para administração danova 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ãoConstrua um Diagrama Entidade-Relacionamento (DER) para modelar cada um dos sistemasabaixo, mas, como as descrições são informais, elas se prestam a diferentes interpretações. Poreste motivo, não existe somente uma solução correta, mas o diagrama deve refletir de formacoerente a descrição. No final, gere o script SQL e crie o banco de dados, cadastrando no mínimo 5 itens para cadatabela (faça todas as consultas necessárias e possíveis para verificar a funcionalidade do banco).1) Sistema LocadoraUma pequena locadora de vídeos possui ao redor de 2000 fitas de vídeo, cujo empréstimo deveser 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 é controladaque filme ela contém. Para cada filme há pelo menos uma fita, e cada fita contém somente umfilme. 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 possuiestrelas.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áriasfitas 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 DadosO dinamismo da área de tecnologia da informação nos proporciona contatos cada vez mais frequentes comuma infinidade de modelos de banco de dados. A cada dia vemos a notícia do lançamento de uma novaplataforma de gerenciamento de dados.No entanto alguns bancos de dados obtiveram maior notoriedade no mundo da informática. Dentre estesbancos 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 seuenorme sucesso. entretanto com a popularização da Internet, e por sua vez, da distribuição das informações em redes degrande alcance, sua limitações foram fincando evidentes. Abriu-se então espaço para os chamados “softwareslivres”.Esta nova realidade proporcionou o aparecimento do MySQL, PostGreSQL e tantos outros. Por sua maiorcapacidade de desempenho em um ambiente compartilhado, estes sistemas ganharam força na internet, sendoresponsá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, nosdeparamos com a necessidade de bancos de dados que trabalhem, com recursos mais avançados, tais comoreplicaçã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 commenor expressão. O SQL SERVER tem como grande diferencial ser da Microsoft o que faz com que suaintegração com linguagens .Net ocorra de forma natural.Nas próximas unidades de nosso material iremos trabalhar com 3 destes SGBDs. Cada um deles representadoum formato de objetivo de uso do banco de Dados.Iniciaremos pelo precursor da popularização do mesmo, o Microsoft Accces. Depois trataremos dasprincipais 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 Access19.1 IntroduçãoO Access é um poderoso software de gerenciamento de banco de dados, que possibilita aousuá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çãocom outros aplicativos.19.2 ARQUIVOS DE BANCO DE DADOS DO ACCESSCom o Microsoft Access, você pode gerenciar todas as informações em um único arquivo debanco 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 naInternet ou em uma intranet. 82
    • Banco de Dados ITABELAS E RELACIONAMENTOSPara armazenar dados, crie uma única tabela para cada tipo de informação rastreada. Para reuniros 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 ICONSULTAS 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 IPÁ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 ACCESSPara acessar o Access basta utilizar a barra de ferramentas do Office ou através deIniciar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 atalhodentro da pasta Iniciar do menu Programas.19.4 PRIMEIROS CONTATOSAo acessar o Access será exibida uma tela que depende da versão de seu Microsoft Office, e quepoderá 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 novoarquivo como o Word e o Excel, desta forma o usuário deverá optar por uma das opções no Painelde Tarefa..O Access grava seus arquivos com a extensão MDB e além desta extensão existe um arquivocom extensão LDB que é criado automaticamente quando um arquivo do Access é aberto. Oarquivo LDB tem por finalidade gerenciar bloqueio de registros quando um banco de dados estiversendo utilizado em modo compartilhado 86
    • Banco de Dados I Barra de Barra de menu título Lista de Objetos Barra de Satus19.5 MENUS E BARRAS DE FERRAMENTASUm menu exibe uma lista de comandos. Alguns desses comandos apresentam imagens ao ladopara 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 deferramentas podem conter botões, menus ou uma combinação dos dois. Seguem dois tipos debarras de ferramentas e menus 87
    • Banco de Dados I19.6 JANELA BANCO DE DADOSQuando 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 objetode banco de dados ou de projeto do Access. 88
    • Banco de Dados IOs objetos de um banco de dados do Access se relacionam como mostrado na figura abaixo: 89
    • Banco de Dados I 90
    • Banco de Dados I19.7 CRIANDO UM NOVO BANCO DE DADOSO 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áriose relatórios necessários para o tipo de banco de dados que você escolheu - esse é o modo maisfácil para iniciar a criação do banco de dados. Ou você pode criar um banco de dados em branco eadicionar as tabelas, formulários, relatórios e outros objetos posteriormente - esse é o métodomais flexível, mas exige que você defina cada elemento de banco de dados separadamente. Emqualquer dos métodos, você pode modificar e estender o banco de dados a qualquer momentoapó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 emmodelo, clique em Modelos gerais.Na guia Bancos de dados, clique no ícone do tipo de bancode 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, emseguida, 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 novastabelas, 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 ICriar um banco de dados sem utilizar um Assistente de banco de dadosClique 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 obanco 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 dedados.19.8 ABRINDO UM BANCO DE DADOSNo 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 naunidade 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 nabarra de ferramentas da caixa de diálogo Abrir e, em seguida, clique em Pesquisar . Na caixade diálogo Pesquisar, digite critérios de pesquisa adicionais. 92
    • Banco de Dados ISiga 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 modoque 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ãoeditá-lo, clique na seta próxima ao botão Abrir e, em seguida, clique em Abrir como somenteleitura.Para abrir o banco de dados com acesso exclusivo, clique na seta próxima ao botão Abrir e, emseguida, clique em Abrir exclusivo.Para abrir o banco de dados para acesso somente leitura e também impedir que outros usuários oabram, clique na seta próxima ao botão Abrir e, em seguida, clique em Abrir exclusivo comosomente leitura.Observação: Você pode abrir diretamente um arquivo de dados em um formato de arquivoexterno, como dBASE, Paradox, Microsoft Exchange, ou Microsoft Excel; você também pode abrirdiretamente qualquer fonte de dados ODBC, como Microsoft SQL Server ou Microsoft FoxPro. OAccess cria automaticamente um novo banco de dados do Access na mesma pasta do arquivo dedados 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órioA. 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 - TABELASUma 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 tabelasTabelas 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 paracada produto, como o nome do produto. Cada registro nessa tabela contém todas as informaçõessobre um produto, como o nome do produto, o número de identificação do fornecedor, as unidadesem estoque etc.Modo de design da tabelaNo 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 IComo relacionar duas tabelasUm campo comum relaciona duas tabelas a fim de que o Microsoft Access possa reunir os dadosdas duas tabelas para visualização, edição ou impressão. Em uma tabela, o campo é uma chaveprimária que você define no modo de design da tabela. Esse mesmo campo também existe natabela 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 paravocê trabalhar com dados.Usando as barras de ferramentas Folha de dados da tabela e Folha de dados da consultaAs barras de ferramentas Folha de dados da tabela e Folha de dados da consulta fornecemmuitas das ferramentas necessárias para localizar, editar e imprimir registros. 96
    • Banco de Dados ITrabalhando com colunas, linhas e subfolhas de dadosVocê pode encontrar ferramentas para trabalhar com colunas, linhas e subfolhas de dados naprópria folha de dados, ou clicando com o botão direito do mouse em um seletor de colunas.Percorrendo registrosVocê pode usar a barra de ferramentas de navegação para percorrer os registros de uma folha dedados. 97
    • Banco de Dados I20.1 CRIANDO UMA NOVA TABELAA criação de uma tabela no Access pode ser realizada de 3 maneiras diferentes como comovamos ver a seguir:Observação: As informações deste tópico se aplicam somente a um banco de dados do MicrosoftAccess (.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 tabelaEm Objetos, clique em Tabelas e, em seguida, clique em Novo na barra de ferramentas da janelaBanco 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 I20.3 Criar uma tabela inserindo dados em uma folha de dadosEm Objetos, clique em Tabelas e, em seguida, clique em Novo na barra de ferramentas da janelaBanco de dados.Clique duas vezes em Modo folha de dados. Uma folha de dados em branco é exibida. Osnomes 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 nomepara 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 acoluna 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 MicrosoftAccess). Por exemplo, se você estiver inserindo nomes, insira o nome em uma determinadacoluna 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 eum 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 IQuando você tiver adicionado dados a todas as colunas que deseja utilizar, clique em Salvar nabarra 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 dadosque possam ser utilizados para identificar cada linha de sua tabela de forma exclusiva, comonúmeros de série ou de identificação, é recomendável que você clique em Sim. Se você inseriudados que possam identificar cada linha de forma exclusiva, clique em Não e especifique o campoque contém os dados como sua chave primária no modo de design.20.4 Criar uma tabela no modo designEm Objetos, clique em Tabelas e, em seguida, clique em Novo na barra de ferramentas da janelaBanco 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, cliquena seta e selecione o tipo de dados desejado. 100
    • Banco de Dados INa coluna Descrição, digite uma descrição das informações que constarão nesse campo. Essadescrição é exibida na barra de status quando dados são adicionados ao campo e ela é incluídana 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 noseletor 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 camposmúltiplos seja diferente da ordem desses campos na tabela, clique em Índices na barra deferramentas para exibir a janela Índices e, em seguida, ordene novamente os nomes dos campospara o índice denominado Chave Primária.Observação: Você não precisa definir uma chave primária, mas normalmente é recomendávelfazê-lo. Se você não definir uma chave primária, o Microsoft Access perguntará se você desejaque ele crie uma quando for salvar a tabela.20.5 TIPOS DE DADOSAo definir um novo campo em uma tabela o usuário deverá especificar o seu tipo de dados. A listaa seguir resume todos os tipos de dados de campos disponíveis no Microsoft Access, seus usos etamanhos de armazenamento.TextoUse para texto ou combinações de texto e números, como endereços, ou para números que nãoexigem 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 caracteresque podem ser inseridos.MemorandoUse para texto longo e números, como anotações ou descrições.Armazena até 65.536 caracteres. 101
    • Banco de Dados INúmeroUse para dados numéricos a serem incluídos em cálculos matemáticos, exceto os que envolvamvalores monetários (use o tipo Moeda).Armazena 1, 2, 4 ou 8 bytes; 16 bytes para código de replicação (GUID). A propriedade FieldSizedefine o tipo Número específico.Data/HoraUse para datas e horas.Armazena 8 bytes.MoedaUse para valores monetários e para evitar arredondamento durante os cálculos.Armazena 8 bytes.AutoNumeraçãoUse para números sequenciais (incremento de 1) ou aleatórios exclusivos que sãoautomaticamente inseridos quando um registro é adicionado.Armazena 4 bytes; armazena 16 bytes para código de replicação (GUID).Sim/NãoUse 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 OLEUse 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 oprotocolo OLE.Armazena até 1 gigabyte (limitado pelo espaço em disco).HiperlinkUse para hiperlinks. Um hiperlink pode ser um caminho UNC ou um URL.Armazena até 64.000 caracteres.Assistente de pesquisaUse para criar um campo que permite escolher um valor em outra tabela ou lista de valoresusando uma caixa de combinação — a escolha desta opção na lista de tipos de dados iniciará umassistente que definirá isso para você.Requer o mesmo tamanho de armazenamento que a chave primária que corresponde ao campoPesquisa —- normalmente 4 bytes. 102
    • Banco de Dados I20.6 PROPRIEDADES DE CAMPOSAlém do tipo de dados outras propriedades podem ser definidas com o objetivo de restringir aentrada 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 TABELAA barra de ferramentas do modo design apresenta os seguintes botões, que tem por finalidadefacilitar algumas ações. Os comandos não citados possuem a mesma função dos outrosaplicativos 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 IA tabela abaixo descreve as alterações da barra de ferramentas quando alternamos para o modofolha 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ÓRIOG. No Windows Explorer crie uma pasta chamada Curso de Access na unidade de disco C:Meus DocumentosH. 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 MoedaJ. 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 - RELACIONAMENTOS21.1 BANCO DE DADOS RELACIONALUm banco de dados relacional armazena suas informações em diversas tabelas que serelacionam através de determinados campos (chave-primária).O Access é um sistema de gerenciamento de banco de dados relacional, pois as diversasinformações de um banco de dados em Access podem ser divididas em diversas tabelas erelacionadas entre si para a emissão de relatórios e geração de consultas, porém antes de utilizaros dados de diversas tabelas os relacionamentos devem ser definidos.Como exemplo de relacionamentos, citamos no quadro abaixo o relacionamento existente entreuma tabela de Empresas e uma tabela de Contatos:Ao relacionarmos tabelas, as mesmas devem possuir campos equivalentes, não necessariamentecomo o mesmo nome, mas com o mesmo tamanho e tipo de dados.21.2 TIPOS DE RELACIONAMENTOSOs tipos de relacionamentos são divididos em três tipos básicos e são descritos a seguir:Relacionamentos Um-Para-VáriosOcorre quando um registro na tabela primária se relaciona com vários registros na tabelasecundária. 109
    • Banco de Dados IRelacionamentos Um-Para-UmOcorre quando um registro na tabela primária se relaciona com apenas um registro na tabelasecundária.Relacionamentos Vários-Para-VáriosOs relacionamentos vários-para-vários não são gerenciados diretamente pelo Access e devem serevitados 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 existenteentre as duas tabelas relacionando-as indiretamente. 110
    • Banco de Dados I21.3 DEFININDO OS RELACIONAMENTOSPara definir os relacionamentos no Access basta utilizar o botão relacionamentos da barra deferramentas ou através do menu FerramentasRelacionamentos.Em primeiro lugar o usuário deverá adicionar as tabelas que farão parte do relacionamento, logoapós basta arrastar o campo, que será relacionado, da tabela primária para a tabela secundária ea seguinte caixa de diálogo será exibida.Além do relacionamento em si também podem ser definidas algumas propriedades que sãodescritas 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 IAs 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 orelacionamento 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 PesquisaUm dos objetivos de relacionar tabelas é evitar dados redundantes, após ter criado as tabelas dobanco de dados o usuário poderá definir no modo estrutura de tabela as propriedades depesquisa, 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 podemosdefinir as propriedades de pesquisa do campo código da categoria para que seja exibida umacaixa de combinação com o nome das categorias.A maneira mais simples de definirmos as propriedades de pesquisa de um campo é utilizarmos aopçã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 epropagação de atualização e exclusão. 112
    • Banco de Dados ILABORATÓRIO 3Atravé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 depesquisa 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 depesquisa 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 depesquisa 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 - CONSULTAS22.1 O QUE SÃO AS CONSULTAS NO ACCESSComo foi descrito anteriormente as consultas são perguntas feitas sobre os dados de um bancode 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 dedados e mostra a janela Filtrar/classificar avançado, é exibida a grade de design, que pode serutilizada para fazer uma variedade de alterações a fim de obter os resultados desejados daconsulta.22.2 Criar uma consulta usando o Assistente de consultaEm Objetos, clique em Consulta e, em seguida, clique em Novo na barra de ferramentas dajanela 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 IClique no botão Avançar e na próxima caixa de dialogo de um nome para sua consulta, emseguida clique em Concluir.22.3 Criar uma consulta usando o modo desginEm Objetos, clique em Consulta e, em seguida, clique em Criar consulta no modo Design najanela 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 INa caixa de dialogo Consulta1: consulta seleção, arraste os campos das tabelas, que você queiraverificar na sua consulta, para grande de design.Para executar uma consulta no modo design clique no botão Executar na barra de ferramentasDesign de consulta.As consultas no Access são realizadas na grade QBE (query by exemple) que permite a definiçãode consultas complexas sem a necessidade de programação em SQL (Structured QueryLanguage).O exemplo abaixo mostra uma consulta para verificar os pedidos trimestrais entre 01/01/1997 e31/12/1997. 116
    • Banco de Dados IOs 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 I22.4 TIPOS DE CONSULTASComo foi descrito anteriormente as consultas são perguntas feitas sobre os dados de um bancode 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 dedados de uma ou mais tabelas. Através do botão de Totais poderá também retornar dadosresumidos.O exemplo abaixo mostra a definição de uma consulta de seleção simples com dados de duastabelas.O exemplo abaixo mostra a definição de uma consulta de seleção com totais. 118
    • Banco de Dados IConsulta de Tabela de Referência CruzadaAs consultas de referência cruzada têm por objetivo resumir dados e utilizam basicamente umrecurso semelhante ao utilizado nas tabelas dinâmicas do Excel. A figura abaixo mostra umexemplo de consulta de referência cruzada:Consulta Criar TabelaA consulta do tipo Criar tabela permite que dados de uma ou mais tabelas sejam lançados emuma nova tabela.A interface é semelhante ao das consultas de seleção a única diferença que ao alterar o tipo deconsulta 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 detrês tabelas existentes: 119
    • Banco de Dados IConsulta AtualizaçãoA 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 IConsulta AcréscimoA consulta do tipo acréscimo é utilizada para transportar registros entre tabelas.O exemplo abaixo mostra uma consulta que anexa dados de uma tabela chamada NovosProdutos na tabela de Produtos existente:Consulta ExclusãoA consulta do tipo exclusão serve para excluir um conjunto de registro de uma tabela baseado emcrité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âmetrosOs parâmetros são variáveis definidas pelo usuário que têm seus valores informados na execuçãoda consulta. Por exemplo ao invés do usuário fornecer um critério do tipo ―Bebidas‖ para umaconsulta que lista os produtos de uma categoria específica o usuário pode utilizar um critério dotipo [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 dadosespecificado através do comando ConsultaParâmetros. 122
    • Banco de Dados I 123
    • Banco de Dados I LABORATÓRIO 4M. 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ÁRIOS23.1 O QUE SÃO FORMULÁRIOS?Como foi descrito anteriormente um formulário é uma forma de visualizar e editar os dados de umbanco de dados do Access.Os formulários fornecem facilidade na edição de registros e apresentam os dados em uma formapersonalizada. Você pode utilizar diversos tipos de efeitos (cores/linha e fontes) em seusformulários.Abaixo ilustramos o exemplo de um formulário de um cadastro de clientes. 126
    • Banco de Dados I23.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 ouconsulta base. Se a origem do registro selecionada tiver tabelas ou consultas relacionadas, oformulá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 campoaparece em uma linha separada comum rótulo à sua esquerda.Auto Formulário: Tabular: Os camposem cada registro aparecem em uma linha,com os rótulos exibidos uma vez na partesuperior do formulário.Auto Formulário: Folha de dados: Oscampos em cada registro aparecem emum formato linha-e-coluna, com umregistro em cada linha e um campo em cada coluna. Os nomes dos campos aparecem na partesuperior de cada coluna.Auto Formulário: Tabela dinâmica: O formulário abre em modo de tabela dinâmica. É possíveladicionar 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íveladicionar 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ãotenha criado um formulário com um assistente ou não tenha usado o comando Auto Formataçãono menu Formatar, ele usará o autoformato Padrão 127
    • Banco de Dados IDICA: Uma das maneiras mais rápidas para se criar um formuláriopadrão é utilizar um dos Assistentes de Auto formulário queautomaticamente criarão formulários com a mínima intervenção dousuário. Basta clicar na barra de ferramentas banco de dados nocomando Novo objetoNo modo de design:Você cria um formulário básico e o personaliza no modo de design para atender às suasnecessidades.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ê desejabasear o seu formulário. Se o formulário não for conter dados (por exemplo, se for para utilizarcomo um menu de controle para abrir outros formulários ou relatórios ou se você desejar criar umacaixa 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 seuformulá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 I23.3 CAIXA DE FERRAMENTASAo 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ãodo mesmo.Por exemplo, ao escolher a ferramenta de botão de comando o usuário ativará automaticamenteum 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 ActiveXPara utilizar a caixa de ferramentas, basta selecionar uma de suas opções e clicar na área doformulá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 direitodo mouse para acessar as opções de um determinado objeto.Os menus do modo estrutura fornecem uma maneira simples de alinhar, distribuir e alterar adisposição dos objetos em um formulário.Definir uma propriedade no modo de design 130
    • Banco de Dados IAbra uma tabela, consulta, formulário, relatório ou uma página de acesso a dados no modo dedesign.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 seletorde 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 emPropriedades 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 primeiraseção, e em Propriedades na barra de ferramentas.Para definir propriedades de um controle, clique no controle, e em Propriedades na barra deferramentas.Na folha de propriedades, clique na propriedade que você deseja definir e, em seguida, siga umdestes 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 ISe aparecer um botão Construir próximo da caixa de propriedades, clique nele para exibirum construtor ou uma lista de construtores.Dicas: Para obter Ajuda sobre qualquer propriedade na folha de propriedades, clique napropriedade e, em seguida, pressione F1.Se precisar de mais espaço para inserir ou editar uma configuração de propriedade, pressioneSHIFT+F2 para abrir a caixa ZoomObservação: Se a propriedade AllowDesignChanges de um formulário estiver definida comoTodos os modos, você também poderá definir propriedades de formulário no modo de formulárioe no modo de folha de dados.Outro item importante no modo design de formulário é a folha de propriedades dos objetos quepode ser acessada pelo botão da barra de ferramentasou através do botão direito do mousepropriedades.Cada objeto possui várias propriedades que podem serdefinidas através da folha de propriedades.Na ilustração abaixo é exibida a folha depropriedades para o objeto formulário: 132
    • Banco de Dados IAs propriedades de um objeto são divididas em categorias para facilitar a localização de umapropriedade 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 umaseçã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 finalidadeespecí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 podemser repetidos uma vez em cada página. É possível determinar onde as informações aparecem emcada 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 IEsta 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çalhoe um rodapé de formulário, além da seção de detalhes. 134
    • Banco de Dados IVocê pode ocultar ou redimensionar uma seção, adicionar uma imagem ou definir a cor do planode fundo de uma seção. Também é possível definir propriedades da seção para personalizar amaneira como o conteúdo de uma seção será impresso.23.5 SUBFORMULÁRIOSUm subformulário é um formulário dentro de outro. O formulário primário é chamado de formulárioprincipal e o formulário dentro do formulário é denominado subformulário. Uma combinaçãoformulário/subformulário é sempre citada como um formulário hierárquico, um formuláriomestre/detalhe ou um formulário pai/filho.Os subformulários são eficientes principalmente quando se deseja exibir dados de tabelas ouconsultas com um relacionamento um-para-muitos. Por exemplo, você poderia criar um formuláriocom 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 natabela de produtos correspondem ao lado "muitos" do relacionamento — cada categoria pode termais de um produto.O formulário principal e o subformulário neste tipo de formulário são vinculados de tal forma que osubformulário exiba apenas registros que estão relacionados ao registro atual no formulárioprincipal. Por exemplo, quando o formulário principal exibir a categoria Bebidas, o subformulárioexibirá apenas os produtos na categoria Bebidas.Exibindo um subformulário em um formulário 135
    • Banco de Dados IQuando você cria um subformulário, é possível criá-lo de forma a ser exibido em modo folha dedados, 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 deexibição. É possível alternar o modo de exibição de uma subformulário quando o formulárioprincipal é exibido em modo de formulário.Os subformulários não são exibidos quando um formulário é aberto no modo de tabela dinâmicaou modo de gráfico dinâmico. 136
    • Banco de Dados ISincronizando um formulário e um subformulárioQuando você cria um formulário e um subformulário com base em tabelas que possuem umrelacionamento um-para-muitos, o formulário principal exibe o lado "um" e o subformulário exibe olado "muitos" do relacionamento. O formulário principal é sincronizado com o subformulário de talforma 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 ouconsulta da janela Banco de dados para outro formulário a fim de criar um subformulário, oMicrosoft Access sincronizará automaticamente o formulário principal com o subformulário se umadas seguintes condições for verdadeira. Se:Você tiver definido relacionamentos para as tabelas selecionadas ou para as tabelas base dasconsultas selecionadas.O formulário principal for baseado em uma tabela com uma chave primária e o subformulário forbaseado em uma tabela que contém um campo com o mesmo nome da chave primária e com otipo de dados e tamanho de campo igual ou compatível. Por exemplo, em um banco de dados doMicrosoft Access, se a chave primária da tabela base do formulário principal for um campoAutoNumeração e sua propriedade FieldSize for definida com Inteiro longo, o campo 137
    • Banco de Dados Icorrespondente na tabela base do subformulário deve ser um campo numérico com a propriedadeFieldSize definida como Inteiro longo. Se você selecionar uma ou mais consultas, as tabelasbase da consulta ou consultas deverão atender a essas condições.Aninhando níveisUm formulário principal poderá ter qualquer número de subformulários se você colocar cada umdeles no formulário principal. Você também pode aninhar até sete níveis de subformulários. Istosignifica que você pode ter um subformulário dentro de um formulário principal e um outrosubformulário dentro daquele subformulário e assim por diante. Por exemplo, você pode ter umformulário principal que exiba clientes, um subformulário que exiba pedidos e outro subformulárioque exiba detalhes do pedido. Entretanto, um formulário não exibirá subformulários em modo detabela dinâmica ou modo de gráfico dinâmico.Inserindo dados usando um formulário e subformulárioQuando você utiliza um formulário com um subformulário para inserir novos registros, o MicrosoftAccess 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 serelacionar. Isto também salva automaticamente cada registro à medida que são adicionados aosubformulário.Criar um subformulárioSe o subformulário for vinculado ao formulário principal, certifique-se de que as origens do registrobase estejam relacionadas antes de usar este procedimento.Não é possível adicionar um subformulário a um formulário quando ele é exibido em modo detabela dinâmica ou em modo de gráfico dinâmico.Criar um formulário e um subformulário ao mesmo tempoNa 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. Porexemplo, para criar um formulário Categorias que exiba produtos para cada categoria em umsubformulá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ÓRIOO. 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ÓRIOS24.1 O QUE SÃO RELATÓRIOS?Como foi descrito anteriormente um relatório é uma forma de criar listagens e etiquetas de umbanco de dados do Access.Os relatórios fornecem facilidade na criação de apresentações personalizadas com a utilização dediferentes tipos de efeitos (fontes, linhas, cores), além de permitir a inclusão de fórmulas detotalização de dados.Abaixo ilustramos o exemplo de um relatório de produtos e preços: 140
    • Banco de Dados I24.2 CRIANDO UM NOVO RELATÓRIOPara criar um novo relatório o usuário poderá utilizar a opção Novo Objeto da barra deferramentas 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 quepermitirá ao usuário escolher um dos Assistentes do Access que auxiliam na criação de novosrelatórios.Uma das maneiras mais rápidas para se criar um relatório padrãoé utilizar um dos Assistentes de Auto relatório queautomaticamente criará um relatório com a mínima intervenção dousuário. Clique no botão Novo Objeto na barra de ferramentasbanco de dados em seguida no comando Relatório. Conforme figuraao lado. 141
    • Banco de Dados INo 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 INo 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 I24.3 CAIXA DE FERRAMENTASAo trabalharmos com a estrutura de relatórios poderemos acrescentar objetos (controles) atravésda caixa de ferramentas.A caixa de ferramentas a ser utilizada no modo design de relatórios é a mesma já vista na seçãode formulários.Para utilizar a caixa de ferramentas, basta selecionar uma de suas opções e clicar na área dorelató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 direitodo mouse para acessar as opções de um determinado objeto.Os menus do modo estrutura fornecem uma maneira simples de alinhar, distribuir e alterar adisposição dos objetos em um relatório.Outro item importante no modo design de relatórios é a folha de propriedades dos objetos quepode ser acessada pelo botão da barra de ferramentas ou através dobotão direito do mouse propriedades.Cada objeto possui várias propriedades que podem ser definidasatravés da folha de propriedades.Na ilustração abaixo é exibida a folha de propriedades para oobjeto 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 6U. 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 dados25.1 PARA CRIAR UMA PÁGINA DE ACESSO A DADOSPágina de acesso a dados: uma página da Web, publicada a partir do Access, que tem umaconexã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 incluirdados 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 deacesso a dados. No modo Página, as páginas têm a mesma funcionalidade que têm no InternetExplorer 5.0 ou posterior.) ou no Microsoft Internet Explorer, é necessário instalar o MicrosoftInternet 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 MicrosoftAccess cria um atalho para a página e exibe o atalho na janela Banco de dados. Se você criar umapá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. Sepretender implementar um formulário de introdução de dados através da Web e armazenar osdados resultantes no Access, pode implementar a base de dados num servidor Microsoft WindowsSharePoint 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 essabase de dados contiver páginas de acesso a dados, poderá ver as páginas no Windows InternetExplorer. Contudo, não poderá efetuar nenhuma ação com essas páginas.25.2 CRIAR UMA PÁGINA DE ACESSOCriar 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 (excetocampos 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 IClique 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 comum rótulo à esquerda. Se a página resultante não tiver a aparência desejada, você pode modificara 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 formatodesejados e cria uma página com base nas suas respostas.Se o assistente não for iniciadoEssa situação pode ocorrer porque o Access está em execução no modo seguro, mas ocomponente Microsoft Jet 4.0 SP8 ou posterior não está instalado no computador. É necessárioque o Jet 4.0 SP8 ou posterior esteja instalado para que o Access funcione plenamente quando omodo seguro estiver habilitado.Observação: Para obter mais informações sobre a instalação da atualização do Jet, consulte oartigo About Microsoft Jet 4.0 SP8 or later do Office Online, emhttp://office.microsoft.com/assistance/preview.aspx?AssetID=HA010489351033.Para obter mais informações sobre o modo seguro, consulte o artigo Sobre o modo seguro doMicrosoft 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 registropara a página no assistente.Clique em OK.Siga as instruções das caixas de diálogo do assistente. 147
    • Banco de Dados ISe a página resultante não tiver a aparência desejada, você pode modificar a página no modo dedesign.Observações:a) Caso você queira incluir campos de várias tabelas e consultas em sua página, não clique emAvançar nem em Concluir após selecionar os campos da primeira tabela ou consulta no Assistentede página. Repita as etapas para selecionar uma tabela ou consulta e escolha os campos quedeseja 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, oscampos de uma das tabelas base podem oferecer suporte a atualizações no modo de página ouno Microsoft Internet Explorer. O assistente listará as origens de registro da página e solicitará quevocê especifique a fonte do recurso atualizável. 148
    • Banco de Dados ICriar 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 registronesta 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 apágina.Transformar uma página da Web existente em uma página de acesso a dadosNa 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 quevocê deseja abrir.Observação: Você pode localizar uma página da Web clicando em Pesquisar na Web nacaixa de diálogo Localizar página da Web. Salve uma cópia da página usando o comando Salvarcomo no menu Arquivo do Microsoft Internet Explorer e inicie esse procedimento novamente paraabrir 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 apá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 guiaPáginas da caixa de diálogo Opções, o Microsoft Access automaticamente definirá aspropriedades ConnectionFile e ConnectionString para todas as novas páginas.Criar uma página de acesso a dados autônomaSe 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 7Y. 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ÁRIOS26.1 CONFIGURAÇÕES DE INICIALIZAÇÃOApós concluir toda a estrutura do aplicativo o usuário poderá definir configurações que farão comque 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 aplicativopersonalizado 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çãoFerramentasInicializar.Além do título, ícone e formulário padrão o usuário poderá definir se os menus poderão serutilizados 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 doAccess". Selecione o menu "Banco de dados atual" e desmarque os itens: ―Permitir MenusCompletos" e "Permitir Barras de Ferramentas Internas. Veja na figura abaixo 152
    • Banco de Dados I26.2 Compactando um banco de dadosA 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 dedadosCompactar e Reparar banco de dados.No Access 2007 a opção é encontrada no botão do Office 153
    • Banco de Dados I26.3 REPARANDO UM BANCO DE DADOSCaso ocorra algum problema no nível de arquivo e o Access não consiga efetuar a leitura domesmo, a ferramenta de reparação poderá solucionar o problema.Para reparar um arquivo de banco de dados danificado basta escolher o comandoFerramentasUtilitários de banco de dadosCompactar e Reparar banco de dados.26.4 PROTEGENDO UM APLICATIVOApós criar o seu aplicativo no Access qualquer usuário poderia alterar a estrutura dos objetos dobanco de dados.As principais maneiras de se proteger um de banco de dados no Access são: 154
    • Banco de Dados IProtegendo o ArquivoA proteção de arquivo solicitará uma senha do usuário todas as vezes que o mesmo tentar abrir oarquivo de banco de dados.Para ativar a proteção por senha escolha FerramentasSegurançaDefinir senha do banco dedados.Criando um Arquivo MdeUm arquivo MDE é na verdade uma versão ―compilada‖ do arquivo MDB. Um arquivo MDEpermitirá 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 MDECriptografando o ArquivoA 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 dosdados, 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 8Z. 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 - MySQL27.1 IntroduçãoO MySQL é mais um exemplo de SGBD que utiliza a linguagem SQL como forma de interagir com os dadosarmazenados. Obviamente, possui algumas sintaxes de comandos que mesmo provenientes da linguagemSQL são específicas deste banco. É um dos bancos de dados mais utilizados por empresas e usuários pessoaisPodemos citar vários grandes exemplos de usuários deste sistema de gerenciamento de banco de dados, maso 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 pessoasresponsáveis por sua manutenção e testes só tem aumentado. Além disso uma série de sistemas satélite vemsendo 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 aintenção de gerar concorrência. No entanto a sua grande expansão fez com que grandes corporações como aSUN 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 comuma das linguagens de programação de maior sucesso na Internet, o PHP. Esta configuração de uso doLinux(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 avisualização da sigla WAMP, que nada mais é do que troca do sistema operacional Linux pelo WindowsEm seu princípio o MySQL era considerado um SGBD fraco e de poucos recursos. No entanto esta realidademudou drasticamente nos últimos anos e ele já é utilizado na gestão de dados com grande volume de acessocomo o Google e a Wikipédia além de ter sua utilização empregada em instituições que lidam com asegurança e precisão da informação como fatores determinantes de seu negócio. Podemos citar comoexemplo a NASA e o exército Americano, além de exemplos nacionais como o banco Bradesco e tantasoutras instituições financeiras 157
    • Banco de Dados I Unidade 28 - O Front-End28.1 Alguns ExemplosManipular os dados armazenados em um banco de dados requer o uso de ferramentasespecí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 QueryBrowser:Este sistema é bem completo e oferece suporte a linguagem, bem como interface amigável aobanco 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 phpMyAdminEm nosso material vamos citar exemplos de manipulação de dados utilizando o phpMyAdmin bemcomo do MySQL Query Browser 158
    • Banco de Dados IUnidade 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 I29.2 Através do Front-End Para acessarmos nosso banco de dados, com a intenção de realizar manutenções, extração deinformações, gerenciamento de performance, criação de regras, etc. podemos fazê-lo de formamais 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 ondeo site de encontra hospedado. Esta informação ou link, normalmente encontra-se disponíveis empainé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. Abaixopodemos ver um exemplo desta tela.No caso de instalação local basta digitar http://localhost/phpmyadmin/ em seu navegadorpreferido, ou utilizar algum sistema para trabalhar com PHP, como por exemplo, o WAMP oumesmo o easyPHP.Estes sistemas permitem o acesso de forma mais rápida e sem a necessidade de informar usuárioe senha a todo o momento 160
    • Banco de Dados IVela uma tela de como acessar o phpMyAdmim pelo WAMP.Por sua vez o MySQL Query Browser é um software desktop, portanto, fica instalado na máquinaque irá acessar o banco. Este programa pode ser facilmente baixado através do site da MYSQL ouem 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 INesta 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 Interface30.1 phpMyAdminAo acessar o phpMyAdmin nos é exibida um tela com as principais funcionalidades do bando dedados. 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 dados30.2 MySQL Query BrowserO 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 I30.3 Acessando uma Base de DadosNo phpMyAdmim possuímos na parte superior esquerda da tela uma lista das bases de dadosdisponíveis, basta clicar sobre a mesma 164
    • Banco de Dados INo MySQL Query Browser localizamos estas mesmas opções no canto superior direito: 165
    • Banco de Dados I Unidade 31 - Criando uma nova Base de Dados31.1 Interface e ComandoPara 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 digitadasdiretamente 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 nomedabasePelo 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 aopção ―Create New Schema‖Por fim digitamos o nome do banco e clicamos em ―OK‖ 166
    • Banco de Dados I Unidade 32 - Criando Tabelas32.1 InterfaceA criação de tabelas com a utilização de scripts já foi vista em unidades anteriores, estão vamosnos deter na facilidade da criação de tabelas com a interação da interface dos font-endsphpMyAdminCom a base de dados selecionada basta digitar o nome da nova tabela e o número de camposque 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 ExecutarO preenchimento das informações solicitadas nos campos, na realidade gera um script em SQLpara a criação da referida tabela.Podemos verificar os scripts criados para a criação de tabelas bem como para inserção do dadosdas mesmas através do botão ―exportar‖ Esta opção é muito útil quando precisamos criar uma série de tabelas que desenvolvemoslocalmente para um servidor remoto.Além disto este script, também é utilizado para a ―instalação‖ de sistemas web baseado em bancode dados MySQLMySQL Query BrowserPara o MySQL Query Browser o processo é simples, basta clicar com o botão direito sobre a basede 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 SalvarAlé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 maisdetalhes sobre a configuração de cada campo. 169
    • Banco de Dados I Unidade 33 - Criando Consultas33.1 InterfaceA exemplo da criação de bases de dados e tabelas, no caso das consultas, também podemosrealizá-las por scripts ou via interface. Vejamos como isso funciona em nossos front-endsphpMySQLCom sua base de dados selecionada, a lista com as tabelas é exibida a direita. Ao lado de cadatabela temos o botão de suas propriedades( ). Para a execução de um script direto em SQLbasta clicar na aba .Para utilizar um ―assistente‖ na criação de suas consultas clique na abaA 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 IMySQL Query BrowserNo Query Browser possuímos botões que representam instruções em SQL. A clicar nestes botõese após em um campo ou tabela a expressão é montada na tela de consulta.Botões que representam o SQLAo arrastar uma tabela veja o resultado 171
    • Banco de Dados I Unidade 34 - SQL Server34.1 IntroduçãoO 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 emtermos 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ávelcontrole 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 SQLServer 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 Expressde 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 empresasdetentoras destas marcas coloca o seu sistema como o melhor. Logicamente que se fizermos uma avaliaçãofria(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 decapital 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 dosistema operacional quando combinado a plataforma Windows. Mesmo possuindo a possibilidade dainstalação deste bando de dados em um sistema operacional baseado no núcleo do Linux, esta configuraçãonã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-End35.1 Ferramenta nativaO SQL Server possui uma ferramenta nativa de acesso a sua base de dados, não sendonecessá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 aplicativonativo 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 oEMS 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 IUnidade 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 I36.2 Através do Front-End Para acessarmos nosso banco de dados, com a intenção de realizar manutenções, extração deinformações, gerenciamento de desempenho, criação de regras, etc. podemos fazê-lo de formamais 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 osite de encontra hospedado. Esta informação ou link, normalmente encontra-se disponíveis empainé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. Abaixopodemos ver um exemplo desta tela.No caso de instalação local basta digitar utilizar no nome de seu computador como o nome doservidor. 176
    • Banco de Dados I Unidade 37 - Conhecendo a Interface37.1 Aplicativo NativoAo acessar o SQL Server nos é exibida um tela com as principais funcionalidades do bando dedados. 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 dados37.2 Acessando uma Base de DadosNo SQL Server localizamos a lista com as bases de dados instaladas em nosso canto superiordireito, 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 Dados38.1 Interface e ComandoPara 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 digitadasdiretamente ou nos fazer valer de front-ends.No caso da criação de uma nova base de dados utilizamos a sentença:CREATE DATABASE nomedabasePelo 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 Tabelas39.1 InterfaceA criação de tabelas com a utilização de scripts já foi vista em unidades anteriores, estão vamosnos deter na facilidade da criação de tabelas com a interação da interface dos font-endsAo 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 principaiscaracterí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 Consultas40.1 InterfaceA exemplo da criação de bases de dados e tabelas, no caso das consultas, também podemosrealizá-las por scripts ou via interface. Vejamos como isso funciona em nosso front-endsNo canto superior esquerdo encontramos a opção ―Nova Consulta‖, ao clicar nela em nossa direitaserá exibida uma tela para digitarmos nosso script em SQL 181
    • Banco de Dados I Unidade 41 - Conhecendo XML41.1 IntroduçãoXML (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 LinguagemPadronizada de Marcação Genérica) capaz de descrever diversos tipos de dados. Seu propósitoprincipal é 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áficovetorial).A principal característica do XML, de criar uma infraestrutura única para diversas linguagens, é quelinguagens desconhecidas e de pouco uso também podem ser definidas sem maior trabalho e semnecessidade de serem submetidas aos comitês de padronização. 182
    • Banco de Dados I Unidade 42 - XML no SQL Server42.1 Criando colunas do tipo XMLCom o tipo de dados XML como um padrão no SQL Server, para criar colunas XML basta declararo XML como um tipo de dados. Vejamos a seguir um exemplo de como criar uma coluna padrãoXML.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 adefinição no editor conforme abaixo: 183
    • Banco de Dados I42.2 Inserindo valoresPara inserir dados em uma tabela com um ou mais campos XML, devemos executar uma instruçãode 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 mesmasdevem ser duplas.Vamos então popular nossa tabela com 1 registro para a melhor compreensão do script deinserçã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 seguinteretorno: 184
    • Banco de Dados I42.3 Atualizando valoresPara modificarmos algum dado armazenado em um campo xml, podemos fazê-lo para incluir oumodificar um valor de um atributo.Por exemplo, se desejarmos incluir um novo produto na lista de compras do cliente, ou seja, incluirum novo elemento ou atributo no documento XML armazenado.Neste caso vamos usar o mesmo comando usado para atualizar dados na linguagem SQL, ocomando 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 emdocumentos ou trechos do documento XML armazenado no SQL Server.Em nosso exemplo vamos incluir um novo elemento referente a um novo produto e valor nainformação XML armazenado na tabela Minhatabela criada:Vamos inserir o elemento <produto descricao="Massa" valor="2.7" /> na coluna dados. A instruçãousada é a seguinte:UPDATE MinhaTabelaSET dados.modify(insert <produto descricao="Massa" valor="2.7" />into (/cliente/compras)[1])WHERE codigoId = 1Podemos observar o uso do método modify em nosso updatePara verificar se o comando foi executado corretamente vamos usar a instrução SELECT paraexibir os dados da tabela : 185
    • Banco de Dados IClicando 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 doelemento < produto descricao="Feijao" valor="2.8" /> ?Devemos executar o seguinte script:UPDATE MinhaTabelaSET dados.modify(insert <produto descricao="Batata" valor="2.1" />before (/cliente/compras/produto)[2])WHERE codigoiD = 1Perceba 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 vamosincluir o elemento.Naturalmente da mesma forma poderíamos ter usado a cláusula after para incluir depois daposiçã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 MinhaTabelaSet dados.modify(replace value of (/cliente/compras/produto[@descricao="Milho"] /@descricao)[1] with "Ervilha") 186
    • Banco de Dados IWhere codigoId = 1A instrução XPath - (/cliente/compras/produto[@descricao="Milho"][1] - vai procurar o primeiroproduto que tenha a descrição ―Milho‖ e vai substituí-lo pelo texto – ―Ervilha‖. Para especificar quedesejamos substituir o primeiro usamos o índice [1].Após a execução da instrução vamos novamente usar uma instrução SQL Select e posteriormenteo link para verificar se o valor foi realmente alterado.Podemos usar o operador last() para direcionar para o último elemento independente da suaposição. Assim, para atualizar o valor do ultimo produto para 3.1 usamos a seguinte instrução:UPDATE MinhaTabelaSET dados.modify(replace value of (/cliente/compras/produto/@descricao)[last()] with"3.1")WHERE codigoid = 1Após a execução da instrução vamos novamente usar uma instrução SQL Select e posteriormenteo link para verificar se o valor foi realmente alterado. 187
    • Banco de Dados I 188
    • Banco de Dados I42.4 Deletando valoresPara excluir usamos a cláusula DELETE já conhecida da SQL. Ela é usada para excluir atributos eelementos 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 MinhaTabelaSET 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 noexemplo abaixo:UPDATE MinhaTabelaSET dados.modify(delete /cliente)WHERE codigoid = 1A 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ãoexcluídos ao final o valor da coluna passa a conter uma string vazia (""). 189
    • Banco de Dados I Unidade 43 - Trabalho Final43.1 Situação problemaUma 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émNúmero da Nota Fiscal, Data da Emissão, Hora da Emissão, Unidade da Mercadoria, PreçoUnitá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 donúmero desta nota.O produto manipulado é composto por Código, Nome do Produto, Fórmula, Data de Validade, ePreço final.Um Produto pode possuir várias matérias primas e uma matéria prima pode ser um componentede vários produtos. Um Fornecedor pode fornecer várias matérias primas, e uma matéria prima pode ser fornecida porvá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, aatacados. Os clientes são atendidos no balcão, por vendedores (funcionários) tanto In loco como portelevendas, gerando pedidos.As notas fiscais de vendas serão atendidas conforme os pedidos gerados, a qual contémobrigatoriamente as seguintes informações: Número da Nota Fiscal, Data da Emissão, Hora daEmissã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ódigodo Cliente, Data da Emissão, Data do vencimento, Número da Parcela, Valor da Parcela, eNú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