Escolar Documentos
Profissional Documentos
Cultura Documentos
Banco de Dados
Sumrio 1. Introduo.........................................................................................................................................4 1.1 Noes Preliminares...................................................................................................................4 1.1.1 Propriedades bsicas............................................................................................................4 1.1.2 Principais diferenas entre um BD e um sistema baseado em arquivos..............................4 1.2 Conceitos Adicionais..................................................................................................................5 1.2.1 Modelos de dados................................................................................................................5 1.2.2 Linguagens de Base de Dados.............................................................................................6 1.2.3 SGBDs.................................................................................................................................6 1.3 Etapas no desenvolvimento de sistemas.....................................................................................7 1.3.1 O papel da Modelagem de Dados no desenvolvimento de sistemas...................................7 1.3.2 Anlise de Dados x Anlise de Processos...........................................................................8 2. Normalizao de Dados....................................................................................................................9 2.1 Conceitos usados na Normalizao de Dados............................................................................9 2.1.1 Atributo................................................................................................................................9 2.1.2 Registro................................................................................................................................9 2.1.3 Arquivo................................................................................................................................9 2.1.4 Chave...................................................................................................................................9 2.1.5 Dependncia Funcional.......................................................................................................9 2.2 Formas Normais.......................................................................................................................10 2.2.1 Primeira Forma Normal (1FN)..........................................................................................10 2.2.2 Segunda Forma Normal (2FN)..........................................................................................10 2.2.3 Terceira Forma Normal (3FN)..........................................................................................11 2.2.4 Regras prticas para normalizao de arquivos.................................................................11 2.2.5 At onde normalizar..........................................................................................................12 2.2.6 Desnormalizao de dados................................................................................................12 3. Modelo Entidade Relacionamento (ER).........................................................................................13 3.1 Elementos usados no modelo Entidade-Relacionamento ........................................................13 3.1.1 Entidade.............................................................................................................................14 3.1.2 Sub-Entidade.....................................................................................................................14 3.1.3 Entidade Fraca ..................................................................................................................15 3.1.4 Instncia ............................................................................................................................15 3.1.5 Atributo .............................................................................................................................15 3.1.6 Chave Primria e Estrangeira............................................................................................16 3.2 Relacionamento .......................................................................................................................16 3.3 Cardinalidade do Relacionamento ...........................................................................................17 3.3.1 Um-para-um (1:1) .............................................................................................................18 3.3.2 Um-para-muitos (1:N) ......................................................................................................19 3.3.3 Muitos-para-muitos (M:N) ...............................................................................................19 3.3.4 Relacionamento Reflexivo ...............................................................................................19 3.3.5 Relacionamento mandatrio e opcional ...........................................................................20 3.4 Diagrama Entidade-Relacionamento........................................................................................26 3.4.1 Estendendo o Modelo Entidade-Relacionamento..............................................................27 4. Modelo de Dados Relacional..........................................................................................................29 4.1 Conceitos do Modelo Relacional..............................................................................................29 4.2 Caractersticas de Relaes......................................................................................................29 4.3 Restries Relacionais..............................................................................................................29 4.4 Bancos de Dados Relacionais e Esquemas...............................................................................30 4.5 Integridade de Entidade, Integridade Referencial e Chaves Estrangeiras...............................30 4.6 Operao de Atualizao e Violao de Restries.................................................................30 4.6.1 Operao de insero.........................................................................................................30 4.6.2 Operao de deleo..........................................................................................................31
Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio
4.6.3 Operao de Atualizao...................................................................................................31 5. SQL Structured Query Language ...............................................................................................33 5.1 Operadores utilizados em SQL:................................................................................................33 5.2 Comandos para manipulao de dados.....................................................................................33 5.2.1 O comando SELECT:........................................................................................................33 5.2.1.1 Combinando dados entre tabelas diferentes.............................................................35 5.2.1.2 Relacionamentos entre mais de duas tabelas............................................................36 5.2.1.3 Relacionamento Reflexivo.......................................................................................36 5.2.1.4 Agrupando e sumarizando os dados.........................................................................36 5.2.1.5 Filtrando dados agrupados com a clusula HAVING..............................................37 5.3 Comandos para manuteno de dados..................................................................................37 5.3.1 INSERT.............................................................................................................................37 5.3.2 DELETE............................................................................................................................38 5.3.3 UPDATE...........................................................................................................................38 Referncias Bibliogrficas .................................................................................................................39
Banco de Dados
1. Introduo
1.1 Noes Preliminares
Um Banco de Dados ou Base de Dados (BD) uma coleo de dados relacionados entre si. Com dados queremos dizer fatos conhecidos que podem ser armazenados e possuem um significado implcito. Um exemplo (simples): coleo de nomes das pessoas que voc conhece, juntamente com o endereo e telefone de cada uma delas (podem ser armazenados em uma agenda ou em um computador). Outro exemplo (um pouco mais complexo): coleo de todas as fotos recolhidas ao longo dos anos pelo programa espacial americano.
Horas 60 60 80
Essa base de dados organizada em dois arquivos distintos, cada um contendo registros do mesmo tipo. Para defini-la, necessitamos especificar a estrutura dos registros em cada um dos arquivos. Ou seja, necessitamos definir os elementos a serem armazenados em cada um dos registros. Cada registro de estudante, por exemplo, guarda o nome, cdigo e disciplinas sendo cursadas pelo estudante. Alm disso, o tipo de cada um dos elementos da estrutura precisa ser definido (nome: sequncia de caracteres; RA: inteiro sem sinal; Disciplina: inteiro sem sinal).
Existem dois tipos de redundncia de dados: a controlada e no controlada. Na primeira, o software garante a consistncia das informaes. Na segunda, cabe ao usurio garantir essa consistncia. Em um sistema baseado em uma base de dados, um nico repositrio de dados mantido, o que elimina o problema da redundncia e, mais do que isso: 1. Um sistema baseado em banco de dados inclui uma descrio detalhada de sua base. Essa descrio corresponde ao catlogo do banco de dados, que guarda, dentre outras coisas, informaes sobre a estrutura de cada arquivo, e sobre o tipo de cada item de dado. O catlogo permite que um mesmo conjunto de programas acesse diferentes tipos de bases de dados, ao contrrio dos programas que manipulam os arquivos em um sistema baseado em arquivos. 2. Por meio do catlogo, qualquer mudana na base de dados prontamente reconhecida pelos programas que as acessam (independncia entre dados e programa). Alm disso, em alguns sistemas de banco de dados, existe tambm uma independncia entre o programa e operao. 3. Em um sistema baseado em banco de dados, certas operaes sobre os dados devem ser feitas de forma conjunta e indivisvel com o intuito de preservar a consistncia da base de dados. Isso, mesmo na presena de falhas no equipamento de armazenamento ou na comunicao com a base de dados (atomicidade). 4. Um sistema baseado em banco de dados inclui programas de controle de concorrncia. Ou seja, programas que assegurem um acesso adequado a uma base de dados quando vrios usurios a acessam ao mesmo tempo (consistncia). 5. Um sistema baseado em banco de dados suficientemente robusto para se recuperar de falhas de hardware ou software (durabilidade). A construo e manuteno de um sistema que atende aos requisitos acima requerem o auxlio de programas bem elaborados. Da, temos as seguintes definies:
Sistema Gerenciador de Base de Dados: coleo de programas que permitem a criao e manuteno de qualquer base de dados, independentemente da aplicao pretendida. Sistema de Banco de dados: Sistema gerenciador juntamente com a base de dados.
Fsicos: prov conceito que descrevem os detalhes de como os dados encontram-se armazenados no computador. Representam informaes como formato dos registros, ordenao dos registros e caminhos de acesso. Lgicos: prov conceitos que podem ser entendidos pelos usurios finais do sistema e que esto prximos da forma como os dados so fisicamente armazenados. So os mais utilizados pelos SGBD atuais e incluem o modelo de dados relacional, de rede e hierrquicos.
Os dados em uma base de dados, estes sim, costumam mudar frequentemente. Os dados armazenados em um banco em um determinado instante chamado de estado ou instncia da base de dados.
1.2.3 SGBDs
Um sistema gerenciador de base de dados composto de vrios mdulos distintos: Gerenciador de dados armazenados: controla o acesso as informaes dos sistemas que esto armazenadas no disco. Esse mdulo utiliza-se de servios bsicos do sistema operacional para transferir dados do disco para a memria principal. Uma vez transferidos, esses dados podem ento ser usados por outros mdulos do sistema (ou por aplicaes do usurio). Compilador DLL: processa as descries do esquema (escritas em DLL) e as armazenam no catlogo do sistema (que se encontra no disco rgido). Processador run-time: manipula acessos base de dados em tempo de execuo. Ele recebe operaes de atualizaes ou recuperaes de dados. Compilador de consultas: manipula consultas em mais alto nvel. Ele compila ou interpreta consultas e ento gera chamadas ao run-time processor. O pr-compilador extrai comandos DML de um programa de aplicao escrito em uma linguagem de alto nvel qualquer. Esses comandos so ento enviados ao compilador DML, que os transformam em cdigos para acesso a base. O resto do cdigo enviado ao compilador da linguagem. Os cdigos para os comandos DML e o resto do programa so linkados, gerando um cdigo executvel que inclui chamadas ao processador run-time.
Banco de Dados
informaes redundantes e de difcil acesso, permitir que futuras alteraes nos bancos de dados possam ser realizadas, garantir o uso adequado dos recursos do banco de dados utilizando o espao de maneira otimizada. Unificar conceitos entre os diferentes departamentos da empresa: Fazer com que todos os departamentos se entendam e no haja conflitos de conceitos.
Banco de Dados
2. Normalizao de Dados
2.1 Conceitos usados na Normalizao de Dados
A normalizao de dados uma tcnica que visa analisar e refinar arquivos de dados, dividindoos em vrios outros arquivos e estabelecendo relacionamentos entre eles atravs de informaes comuns. Existem alguns conceitos que so utilizados na Normalizao de Dados:
2.1.1 Atributo
Toda e qualquer informao de se deseja armazenar. Os atributos apresentam caractersticas como: tipo de informao a ser armazenada, tamanho, se obrigatrio ou opcional, se condicionado a outros atributos, se possui vrias ocorrncias. Exemplo: cpf, nome, endereo, telefone, cargo.
2.1.2 Registro
Conjunto de atributos que contm informaes comuns de um determinado assunto. Exemplo: funcionrio: dados de um funcionrio, dados de um aluno.
2.1.3 Arquivo
Conjunto de registros que tratam do mesmo assunto. Pode ser fsico, quando as informaes so guardadas em formulrios de papel, ou eletrnico, quando as informaes so armazenadas com a ajuda da informtica. Exemplo: cadastro de clientes, cadastro de alunos.
2.1.4 Chave
Atributo ou conjunto de atributos que permite a identificao nica de um registro dentro de um arquivo. Pode ser classificada como: Simples: formada por um nico atributo (RA, CPF). Composta: formada por mais de um atributo (N Nota Fiscal + Cd_Produto). Virtual: gerada por um atributo criado especificamente para ser chave e que tem seu valor gerado pelo sistema (operao bancria, protocolo de atendimento). Para que um atributo seja considerado chave, algumas caractersticas devem ser analisadas. Uma chave deve ser: nica: no podem existir mais de um registro como o mesmo valor para atributos que compem a chave. Obrigatria: sempre deve existir um valor para os atributos que compem a chave. Imutvel:o valor dos atributos que compem a chave no pode ser modificado. Exemplo: RA, chassi de um automvel, cpf.
Banco de Dados
10
1 Forma Normal
Banco de Dados
IFSULDEMINAS Campus Inconfidentes MG Arquivo Clientes (2FN) Cliente Nmero Nome do cliente Texto Endereco cliente texto
11
2 Forma Normal
Arquivo de Vendas (2FN) Cdigo da venda nmero Data da venda Data Data da entrega Data Cliente Nmero Produto-01 Nmero Descricao-01 Texto Quantidade-01 Nmero Preo-01 Nmero Produto-02 Nmero Descricao-02 texto Quantidade-02 Nmero Preo-02 Nmero Subtotal Nmero Desconto Nmero Valor total Nmero
3 Forma Normal
12
Exerccios:
1) Quais as etapas no desenvolvimento de sistemas e qual a funo de cada uma? 2) Qual a principal diferena entre sistemas comerciais e cientficos? 3) Conceitue normalizao de dados. 4) Explique qual a funo de uma chave em um arquivo de dados. De que tipos podem ser? 5) O que so formas normais e para que servem? 6) Quais as regras para se normalizar um arquivo? Exemplifique. 7) Quando pode ser usada a desnormalizao de dados? Explique.
Banco de Dados
13
3.1.1 Entidade
Entidades so elementos do mundo real dos quais coletamos e armazenamos informaes que sero utilizadas pelo sistema. Uma entidade pode ser: Um objeto: Uma mquina, pea, rea geogrfica, prdio, produto, etc. Uma pessoa: Um funcionrio, cliente, paciente, etc. Um processo: O emprstimo de um livro, a aprovao de crdito bancrio, etc.
Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio
14
Para descobrir que elementos em nossa anlise so candidatos a entidade, devemos prestar ateno aos substantivos e ao sujeito de uma frase. Por exemplo, na frase: "Clientes so atendidos por vendedores para fazerem seus pedidos". Clientes, vendedores e pedidos so candidatos a entidade, mas alm disso podemos levantar algumas questes: Existe a necessidade de se armazenar informaes sobre esse elemento? Precisamos saber o nome, telefone, CGC e endereo de entrega para o cliente. H mais de um elemento desse tipo? Existem vrios pedidos a serem analisados Existe alguma informao que identifica univocamente o elemento analisado? O nmero de matrcula identifica de maneira nica cada vendedor na empresa.
Pessoa
Objeto
3.1.2 Sub-Entidade
Sub-Entidades so atributos de uma entidade que so separados gerando novas entidades. As sub-entidades so usadas quando em uma mesma entidade temos atributos que so usados para grupos diferentes de instncias. Por exemplo, na entidade Clientes podemos ter um grupo de atributos especficos para clientes pessoa fsica (RG, CPF, Data de nascimento), e um grupo de atributos para clientes pessoa jurdica (CNPJ, Inscrio Estadual, Inscrio Municipal). Nesse caso poderamos derivar a entidade Clientes em duas Sub-Entidades: Pessoa Fsica e Pessoa Jurdica. Existem dois processos para a gerao de Sub-Entidades: Especializao: A partir de uma entidade principal derivamos as sub-entidades. o caso do exemplo citado anteriormente de Clientes. Generalizao: o processo inverso, onde a partir de sub-entidades extramos atributos comuns, gerando uma entidade principal. Por exemplo, a partir de atributos comuns (nome, endereo, telefone) entre as entidades Vendedores Externos e Vendedores Internos, geramos a entidade principal Vendedores.
Clientes Cdigo do Cliente Tipo do cliente Nome do cliente Endereo Telefone
Pessoa Jurdica Cdigo do Cliente CNPJ Insc. Estadual Insc. Municipal Exemplo de Sub-entidade por especializao
Banco de Dados
15
3.1.4 Instncia
Instncias so as vrias ocorrncias de informaes diferentes em uma entidade. Por exemplo, os vrios pedidos, os clientes da empresa ou os vendedores que atendem aos clientes. Cada instncia representa um conjunto de informaes que se complementam e dizem respeito a um nico elemento. Equivalem aos registros na normalizao de dados
Cdigo 00001 00002 00003 00201 12012 Vendedores Nome do vendedor Maria dos Santos Jos Julio Pereira Raquel Gonalves Mrcio Albuquerque Gesuno Silva Santos Alencar
Instncias
3.1.5 Atributo
Atributos so as informaes que iremos armazenar sobre uma entidade. Por exemplo: o nome, endereo, telefone e limite de crdito de um cliente. Podem existir atributos comuns em mais de uma entidade (nome um atributo em clientes e vendedores), porm cada atributo deve armazenar informaes especficas de uma nica entidade, pois est associado a ela usando o conceito j visto anteriormente de dependncia funcional. Os atributos de uma entidade so levantados atravs da anlise da entidade e das caractersticas que se deseja armazenar e tratar em nosso sistema. Os atributos no modelo ER equivalem aos atributos na normalizao de dados.
Ano Modelo Cor Fabricante Combustvel N de lugares Tipo de pneu
16
Chaves estrangeiras
Entidade Filho
Entidade Pai
3.2 Relacionamento
Relacionamentos so ligaes entre entidades atravs de atributos comuns. No mundo real estamos cercados por relacionamentos entre entidades diversas (pessoas, lugares, eventos, etc). Alguns exemplos: 1. Homem casa com Mulher. Aqui temos um relacionamento entre duas pessoas. 2. Cludia estuda na EAFI. Aqui temos um relacionamento entre uma pessoa e um lugar. 3. So Paulo fica no Brasil. Aqui temos um relacionamento entre dois lugares. 4. Homem casa com Mulher e tem Filhos. Aqui temos um relacionamento entre trs pessoas. 5. Espectadores assistem ao filme. Aqui temos um relacionamento entre pessoas e lugar. Casamento
Mulher
Homem
No Modelo ER podemos descobrir os relacionamentos entre entidades atravs de verbos nas sentenas que usamos para descrever os processos do sistema. Por exemplo, na frase: "Clientes so atendidos por vendedores para fazerem seus pedidos", podemos detectar os verbos de ligao so, entre a entidade Clientes e Vendedores, e fazerem entre a entidade Vendedores e Pedidos. Esses verbos sero usados para nomear o relacionamento entre as entidades. Sempre que existir um relacionamento entre entidades, dever existir um atributo comum entre elas, chamado de atributo de ligao, que normalmente equivale a uma chave primria que migra para a outra entidade como chave estrangeira.
Entidade A Clientes Vendedores Advogado Livros Despesas Relacionamento fazem atendem possui possuem so dos Entidade B Pedidos Pedidos Especialidade Cpias Processos Atributo de ligao Cdigo do cliente Cdigo do vendedor Cdigo da especialidade Cdigo do livro Cdigo do processo
Banco de Dados
17
Para descobrir a cardinalidade de um relacionamento podemos seguir quatro passos: Passo 1) Identificamos as entidades e nomeamos o relacionamento: Clientes Possuem Pedidos Passo 2) Analisamos o nmero mnimo de ocorrncias entre as entidades: Clientes (1,. .. ) Possuem (0/ ... ) Pedidos Um Cliente pode no mnimo no ter nenhum pedido em seu nome; essa ausncia de ocorrncias representada pelo nmero zero (O). Um Pedido deve no mnimo ser de um Cliente Passo 3) Analisamos o nmero mximo de ocorrncias entre as entidades: Clientes ( ... /1) Possuem ( ... /N) Pedidos Um Cliente pode no mximo ter vrios pedidos em seu nome; esse nmero ilimitado de ocorrncias representado pela letra n. Um Pedido deve no mximo ser de um nico Cliente (1), pois, um pedido pertence a um nico cliente. Passo 4) Desprezamos os valores mnimos para cada entidade: Clientes (1 /1) Possuem (O,N) Pedidos Esse relacionamento um relacionamento um-para-muitos (1:N), ou seja, um cliente pode ter vrios (n) pedidos, e vrios (n) pedidos correspondem a um nico cliente.
Banco de Dados
18
19
Exerccios 1. Quais os objetivos da Modelagem Entidade-Relacionamento? 2. Como podemos identificar as entidades de um sistema a partir da descrio de processo? 3. Quais so os processos para a gerao ou derivao de sub-entidades? Explique-os. 4. Cite trs exemplos de relacionamentos do mundo real. 5. O que so Chave Primria e Chave Estrangeira?
6. O que um relacionamento reflexivo? Exemplifique. 7. Quais so as cardinalidades possveis em um relacionamento e quais as diferenas
entre elas?
Banco de Dados
20
Exerccios prticos
Exerccio 1: De acordo com as regras normalize as estruturas abaixo. Relao de Funcionrio: MATRCULA DO FUNCIONRIO NOME DO FUNCIONRIO DATA DO NASCIMENTO DEPENDENTE CDIGO DO DEPENDENTE NOME DO DEPENDENTE CURSO CDIGO DO CURSO NOME DO CURSO ANO DO CURSO Regras do negcio: Um funcionrio pode ter mais de um dependente Um funcionrio pode fazer mais de um curso Exerccio 2: Voc acabou de fundar sua empresa de consultoria e seu primeiro trabalho desenvolver um sistema para cadastro de clientes. Voc recebeu do cliente uma lista com os dados que devero compor o sistema, com base nesta lista normalize a estrutura de dados de acordo com as formas normais. Lista de informaes que devero compor o sistema cadastro de clientes:
Nome Nome do Pai Nome da Me Endereo Telefone1 Telefone2 Nmero do Fax Nmero do Celular Telefone do trabalho Data de Nascimento Naturalidade Nacionalidade Endereo de correspondncia Nome do filho 1 idade do filho 1 Nome do filho 2 idade do filho 2 Nome do filho 3 idade do filho 3 Nome do filho 4 idade do filho 4 Nome do Cnjuge Nmero do CPF Nmero da carteira de identidade
Exerccio 3 Representar usando o modelo lgico a situao descrita a seguir: O Departamento de Vendas da Indstria Beleza Ltda, aps estudos de mercado, verificou que para atingir seus objetivos seria necessrio adquirir frota de veculos prprios para motorizar seus vendedores. O mercado consumidor foi dividido em regies de venda; foram estabelecidos percursos de entrega abrangendo pontos estratgicos dessas regies e vendedores foram designados para cobrir estes percursos. Um sistema deve ser construdo para administrao da nova sistemtica de vendas adotada pela empresa. Aps entrevistas com o gerente da rea, foram obtidas as seguintes informaes:
Banco de Dados
Cada regio identificada por um cdigo; Uma regio composta de vrios pontos estratgicos; As regies no tm pontos estratgicos em comum; O vendedor tem a responsabilidade de cobrir uma regio; Uma regio pode ser coberta por vrios vendedores; A cada dia, um veculo fica sob responsabilidade de um vendedor; Um vendedor pode vender quaisquer itens ativos da tabela de produtos;
Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio
21
O vendedor responsvel pela identificao de cada cliente consumidor na nota fiscal; A nota fiscal contendo identificao do vendedor, itens e quantidades vendidas exigida para comprovao da venda
Exerccio 4: De acordo com as regras, normalize as estruturas abaixo. Relao de Programadores: Numero da Matrcula Nome do Programador Setor Nvel (1,2,3) Descrio do Nvel (1 - Jnior, 2 - Pleno, 3 - Senior) Programas Cdigo do Programa Nome do Programa Tempo Estimado Nvel de Dificuldade (1, 2 ou 3 ) Descrio da Dificuldade (Fcil, Mdio, Difcil) Regras do negcio: - Um programa pode ser feito por mais de um Programador; - Um programador pode fazer um ou mais programas; - O Nvel de dificuldade do programa depende do tempo estimado para a elaborao do mesmo; Exerccio 5: Normalize a descrio abaixo at a 3 Forma Normal. Nome do animal Data de nascimento Espcie Dono do animal Descrio da vacina Data Atendente Servio prestado Material utilizado Horas gastas Valor Regras do negcio: - O atributo data pode ser utilizado para armazenar tanto a data da vacina como a data do atendimento; - O Pet-Shop atende diversos animais onde cada um possui uma ficha, onde esto armazenados todos os seus dados; - Os dados das vacinas tambm so armazenados e todos os animais devem ser vacinados; - Um animal pode ter somente um dono; - Um animal pode precisar de diversos servios e pode tomar diversas vacinas; - Um servio pode ser realizado em vrios animais; - Uma vacina pode ser aplicada em diversos animais; - Um animal pode ser atendido somente por um atendente. Feita a normalizao acima: a. Identifique as entidades existentes; b. Identifique as chaves existentes; Exerccio 6:
Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio
22
Um profissional altamente organizado deseja informatizar sua agenda de compromissos, para isso, identificou os seguintes requisitos: 1. Na sua agenda so registradas as pessoas com quem tem contato. 2. Cada contato possui um nome, um endereo formado por rua, nmero, complemento, cidade, estado e CEP, e diversos telefones, cada qual com DDD, nmero e uma descrio de tipo (celular, residencial, comercial, contato, etc.). 3. Cada compromisso pode envolver um ou mais contatos, devendo conter uma descrio do compromisso e podendo ser realizado em um determinado dia e horrio. De acordo com as informaes acima, aplique as formas normais para que o projeto da agenda seja implementado em um S.G.B.D. Em seguida, identifique as entidades e as chaves do projeto. Exerccio 7: Nos tempos atuais os aeroportos esto sendo cada vez mais utilizados, seja por voos domsticos seja por voos internacionais. Estes voos geram grandes quantidades de dados que precisam ser corretamente gerenciados para responderem prontamente s solicitaes dos usurios. Existe uma srie de atividades que devem ser realizadas antes de cada aeronave levantar voo. Cada detalhe deve ser bem estudado para garantir a continuidade dos voos e a segurana dos passageiros. Uma dessas atividades o controle do uso das pontes de embarque (tambm conhecida como fingers) em cada aeroporto. Este controle deve ser previsto com antecedncia de forma a aumentar a capacidade operacional do aeroporto, evitar confuses de embarque ou desembarque e disponibilizar a informao o mais rpido possvel aos usurios do aeroporto. Para isso, dados como tipo de voo e tempo de permanncia do avio devem ser levantados. Regras de negcio: Cada aeroporto deve possuir um ou mais fingers; Um ou mais fingers devem pertencer a um aeroporto. Cada finger pode possuir um ou mais alocaes (em horrios diferentes, claro); Uma ou mais alocaes devem ser usadas por uma finger. Cada companhia area pode possuir um ou mais voos; Um ou mais voos devem ser associados a uma companhia area. Cada voo deve utilizar uma alocao; Uma alocao deve ser utilizada por um voo. Com base nas informaes acima, aplique as formas normais nos dados apresentados e identifique as entidades e chaves existentes no sistema: No normalizado: Neste estgio ainda no foi realizada nenhuma normalizao. AEROPORTO {nome, cidade, num_finger} VOO {tipo, data, hora_entrada, nome, num_finger, horrio_voo, status} Exerccio 8: Normalizar o seguinte conjunto de atributos: Aluno (nome, naturalidade, ano_nascimento, curso, diretor, ano_inscrio, disciplina, nota) Exerccio 9: Normalizar o seguinte conjunto de atributos: Encomenda (cliente, endereo_cliente, data_encomenda, produto, quantidade) Exerccio 10: Normalizar o seguinte conjunto de atributos: Aplice (data, valor, estado, matricula, nome_cliente, localidade, tipo, data_pag, valor_pag, marca_viatura) estado = {ativa, inativa} tipo = {terceiros, todos os riscos,} Exerccio 11:
Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio
23
Lista de Chamada de Escola Primria Realizar a modelagem lgica relacional para a seguinte realidade: Uma escola primria deseja informatizar a lista de alunos de suas turmas: 1. Existem diversas turmas, cada qual com um nmero nico, uma srie e opcionalmente uma sala. 2. Cada turma possuir um professor, que tem um nome e identificado por uma matrcula. 3. Cada turma tem diversos alunos, identificados por um nmero de sequncia na turma, possuindo um nome. Exerccio 12: Dada a estrutura j normalizada na 3 Forma Normal: a. Identifique as entidades existentes; b. Identifique as chaves.
Arq. Funcionrio N da Matrcula Nome Func Data Nasc Arq. Curso do Func. Cd_Curso N da Matrcula Ano_Formao Arq. Dependentes Cd_Dependentes N Matrcula Nome_Depend Arq. Curso Cd_Curso Nome_Curso
a. Mulher casa-se Homem ___________________________________________ b. Aluno inscreve-se Curso __________________________________________ c. Mdico atende Paciente___________________________________________ d. Me possui Filho_________________________________________________ e. Empregado possui Dependente_____________________________________ f. Estudante cursa Disciplina_________________________________________ g. Fornecedor fornece Produto________________________________________ h. Engenheiro aloca Projeto__________________________________________ i. Agenda possui Endereos_________________________________________ j. Animais tomam Vacinas___________________________________________
Exerccio 14: Observe o Modelo Entidade-Relacionamento abaixo e resolva as questes: k. Identifique as entidades do modelo. l. Identifique as chaves primrias. m. Identifique as chaves estrangeiras. n. Interprete cada um dos relacionamentos. o. Identifique a cardinalidade de cada relacionamento.
I. Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio
24
PROFESSOR PROFESSOR
DISCIPLINA/PROFESSOR DISCIPLINA/PROFESSOR
DISCIPLINA DISCIPLINA
ALUNO ALUNO
CURSO CURSO
II.
Banco de Dados
25
identifica um atributo cujo valor deduzido de outros atributos, sendo usado mas no armazenado na base de dados (derivado).
identifica um atributo para agrupamentos de valores (compostos) exemplo a data, composta de dia, ms e ano.
Segmentos de reta ligam atributos a conjuntos de entidades, e estes a conjuntos de relacionamentos. Neste ltimo, uma linha identifica uma participao parcial, e duas linhas identifica uma participao total. Cada componente rotulado com seu nome correspondente. Se o atributo for chave primria, esta condio demonstrada sublinhando seu nome. As retas que ligam conjuntos de entidades e de relacionamentos so rotulados segundo sua cardinalidade:
Banco de Dados
26
A respeito de como nomear os vrios componentes, como prtica geral adota-se o emprego de substantivos para os conjuntos de entidades e verbos para os conjuntos de relacionamentos, de modo que o diagrama fornea uma descrio narrativa das requisies da base de dados. O exemplo abaixo apresenta o diagrama entidade-relacionamento proposto para uma base de dados de uma universidade:
Generalizao e especializao: Generalizao o resultado da unio de dois ou mais conjuntos de entidades, produzindo um conjunto de entidades de nvel mais alto. Por outro lado, especializao o resultado da separao de um subconjunto de entidades, formando conjuntos de entidades de nvel mais baixo. A generalizao usada para enfatizar as semelhanas entre entidades de nvel mais baixo e ocultar suas diferenas. A especializao o inverso: ela enfatiza as diferenas entre as entidades. Em termos de diagrama entidade-relacionamento, generalizao e especializao so representados por um tringulo, disposto como que apontando para os conjuntos de entidades de nvel mais baixo. Por exemplo:
Banco de Dados
27
Atributos so usados como meio de distino, graas herana de atributos: os de conjuntos de entidades de nvel mais baixo so herdados dos conjuntos de entidades de nvel mais alto. Neste exemplo, os atributos de Convidado so R.A., nome, curso e ano (herdados de Aluno), alm de permanncia; os atributos de Matriculado so R.A., nome, curso, ano.
Agregao: uma abstrao atravs da qual relacionamentos so tratados como entidades de nvel mais alto. uma soluo limitao do modelo entidaderelacionamento, que no permite expressar relacionamentos envolvendo um outro relacionamento. Por exemplo:
Os atributos do conjunto de entidades agregada Assiste so os atributos de todos os conjuntos de entidades e do conjunto de relacionamentos envolvidos na agregao. Exerccios 1) A partir da resoluo dos exerccios anteriores, desenvolver o diagrama entidaderelacionamento (DER) para cada um deles.
Banco de Dados
28
Banco de Dados
29
atributos que no mais uma super-chave. A restrio de ser nica para todo o estado da relao no esquema, ou seja, deve ser atingida mesmo quando novas tuplas so inseridas na relao. Se uma relao tem mais de uma chave, estas so chamadas chaves candidatas. Uma das chaves candidatas designada chave primria. Restrio de nulo. Pode ser especificado se valor nulo pode ou no ser permitido.
Banco de Dados
30
Integridade de entidade (se a chave primria nula) Integridade referencial (se o valor da chave estrangeira refere-se a uma tupla que no existe na relao referenciada) Geralmente o SGBD deve rejeitar uma insero que viole essas restries o o
Exerccios
Banco de Dados
31
Comparao
Lgicos
Na clusula SELECT so informados os campos que faro parte da consulta. Se os campos pertencerem a uma mesma tabela, basta list-los separando-os com vrgula. SELECT matricula, nome, setor
Banco de Dados
32
Caso os campos a serem consultados pertenam a tabelas diferentes, necessrio indicar a tabela a qual pertence cada campo, utilizando [tabela.campo] SELECT programador.nome, nivel.descricao A clusula FROM indica a tabela que se est consultando. Caso a consulta seja em mais de uma tabela, basta separa-las por vrgula. FROM programador, programa A clusula WHERE, em conjunto com os operadores aritmticos e lgicos, permite determinar a faixa ou lista de valores que sero visualizados. WHERE matricula > 005 Operador LIKE Quando a comparao feita em textos, estes devem vir entre aspas simples e alm do operador =, o SQL admite tambm o operador like. WHERE nome = Ana Paula WHERE nome like Ana Paula Operador IN Faz a seleo de um valor dentro de uma lista de valores. Equivalente a vrias expresses lgicas OR. WHERE nome IN (Ana Paula, Maura) Operador BETWEEN Faz a busca dentro de uma faixa de valores. Equivalente a uma expresso com os operadores >= e <=. WHERE data BETWEEN #01/01/2002# AND #21/06/2007# Seleo de valores nulos IS NULL Nulo representa a ausncia de contedo para o campo, o que diferente de branco para campos texto ou zero para campos numricos. WHERE nome IS NULL Clusula ORDER BY A seleo de campos pode ser ordenada atravs da clusula ORDER BY. A ordenao pode ser ascendente (ASC), que o padro, o descendente (DESC). Os campos usados para ordenao devem fazer parte da lista de campos. ORDER BY nome Eliminao de duplicidades DISTINCT A clusula DISTINCT permite que valores duplicados seja eliminados. SELECT DISTINCT cidade Formatao do resultado final AS O cabealho das colunas no resultado da seleo usa o nome do campo como ttulo (muitas vezes no correspondem ao que est sendo selecionado). Para dar uma melhor aparncia ao resultado final, o nome das colunas pode ser alterado com a clusula AS. SELECT cod_programa AS [Cdigo], nome_programa AS [Nome do Programa]
Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio
33
Exerccios 1) Incluir o campo cidade na tabela programador. 2) Criar uma consulta utilizando SQL para selecionar os programadores da cidade de Campinas. 3) Selecionar, utilizando SQL, os nomes dos programadores da cidade de Campinas ou Inconfidentes. 4) Incluir, na tabela programa, campo data de incio da execuo do programa. 5) Criar uma consulta, utilizando SQL, para selecionar os programas iniciados entre 21/12/2003 e 15/08/2007. 6) Selecionar os registros das tabela Dificuldade onde no existe um valor para descrio. 7) Selecionar o campo cidade da tabela programador eliminando duplicidades. 8) Formatar os campos das consultas criadas acima. 5.2.1.1 Combinando dados entre tabelas diferentes Teoricamente, um bando de dados tem como fundamento a criao de um deposito nico de todos os dados. Estes dados no so independentes, eles se relacionam. O comando SELECT possui clusulas que permitem acessar dados relacionados, formando um conjunto nico de dados. Na SQL, pode-se implementar relacionamentos em para um (1:1), um para muitos (1:N), muitos para muitos (M:N) e o relacionamento reflexivo. INNER JOIN A clusula INNER JOIN faz a juno de dados entre duas tabelas. O campo comum nas duas tabelas declarado na clusula ON. O relacionamento feito entre uma chave primaria e uma chave estrangeira. Sintaxe: SELECT [tabela1.campos, tabela2.campos] FROM tabela1 INNER JOIN tabela2 ON tabela1.campo = tabela2.campo SELECT programador.matricula, programador.nome, programador.nivel, nivel.cod_nivel, nivel,descrio FROM programador INNER JOIN nivel ON programador.nivel = nivel.cod_nivel;
Exemplo:
OUTER JOIN A clusula INNER JOIN s faz a juno de dados entre duas tabelas somente se existirem dados comuns de ligao entre elas. A clusula OUTER JOIN faz a juno mesmo que no existam dados comuns de ligao entre as tabelas PAI e FILHO. A clusula OUTER JOIN deve ser acompanhada das clusulas LEFT ou RIGHT, que determinam se sero selecionados todos os campos da tabela PAI (LEFT) ou da tabela FILHO ( RIGHT), independentemente de ter ou no um dado relacionado. Os campos no relacionados apresentaro contedo nulo (NULL). OUTER JOIN usada, por exemplo, para se verificar problemas de integridade relacional. Sintaxe: SELECT [tabela1.campos, tabela2.campos] FROM tabela1 LEFT / RIGHT JOIN tabela2 ON tabela1.campo = tabela2.campo Exemplo: SELECT programador.matricula, programador.nome, programador.nivel, nivel.cod_nivel, nivel,descrio FROM programador LEFT / RIGHT JOIN nivel ON programador.nivel = nivel.cod_nivel WHERE nivel.descricao IS NULL;
Banco de Dados
34
5.2.1.2 Relacionamentos entre mais de duas tabelas Quando h necessidade de relacionar mais de duas tabelas, preciso acrescentar outras clusulas INNER JOIN ou OUTER JOIN ao comando SELECT. Geralmente usado para relacionamentos muitos para muitos (M:N), onde existe uma tabela de ligao entre as tabelas PAI e FILHO. Sintaxe: SELECT [tabela1, tabela2, tabelaN] FROM tabela1 INNER JOIN (tabela2 INNER JOIN tabelaN ON tabela2.campo = tabelaN.campo) ON tabela1.campo = tabela2.campo SELECT programador.matricula, programador.nome, programacao.codigo, programacao.matricula, programa.cod_programa, programa.nome_programa FROM programador INNER JOIN (programacao INNER JOIN programa ON programacao.codigo = programa.cod_programa) ON programador.matricula = programacao.matricula
Exemplo:
5.2.1.3 Relacionamento Reflexivo Chamamos de relacionamento reflexivo a possibilidade de relacionar uma tabela com ela mesma. Isso possvel utilizando-se o recurso de alias da tabela (AS), ou seja, dando um apelido para a tabela. Imagine, por exemplo, uma tabela funcionrio onde todo funcionrio possui um chefe. Lembre-se que todo chefe tambm um funcionrio da empresa. Campos da tabela funcionario: codigo, nome, departamento, chefe Exemplo: SELECT funcionario.codigo, funcionario.nome, chefes.codigo, chefes.nome FROM funcionario INNER JOIN funcionario AS chefes ON funcionario.chefe = chefes.codigo;
Exerccios 1) Criar uma consulta para mostrar o nome do programador e a descrio de seu nvel. 2) Criar uma consulta para mostrar o nome do programa e a descrio do seu nvel de dificuldade. 3) Criar uma consulta para mostrar o nome do programador e o nome do programa que ele est desenvolvendo. 5.2.1.4 Agrupando e sumarizando os dados O comando SELECT pode agrupar um determinado conjunto de campos e, atravs de funes de agregao, fazer clculos nesses grupos de dados. A sumarizao de dados feita com o uso da clusula GROUP BY. Algumas funes de agregao: o COUNT: conta a ocorrncia de um campo. COUNT(*) retorna o nmero de registros da tabela. o SUM: totaliza os valores para o campo. Usado com campos numricos. o MAX: devolve o maior valor para o campo. o MIN: devolve o menor valor para o campo. o AVG: mdia aritmtica simples dos valores do campo.
Banco de Dados
35
A Clusula GROUP BY Para selecionar dados de tabelas efetuando agregaes utiliza-se, no comando SELECT, a clusula GROUP BY. o os campos que forem utilizados para agregao devem fazer parte da lista de campos; o as funes de agregao sero declaradas tambm da lista de campos; o as clusulas WHERE e ORDER BY podem ser usadas em conjunto com GROUP BY. Sintaxe: SELECT [lista de campos | funes de agregao] FROM [tabelas] GROUP BY [lista de campos para agregao] WHERE [critrios de seleo] ORDER BY [campos para ordenao] SELECT cod_programa, COUNT (cod_programa) AS total_programa FROM programa GROUP BY cod_programa ORDER BY cod_programa;
Exemplo:
5.2.1.5 Filtrando dados agrupados com a clusula HAVING O nmero de registros que gerado em resposta a um comando SELECT agregando dados mo GROUP BY pode ser limitado atravs do uso da clusula HAVING. A clusula HAVING s usada em conjunto com o GROUP BY e est para o GROUP BY assim como a clusula WHERE est para o comando SELECT. A diferena que enquanto a clusula WHERE filtra os dados antes da agregao , o HAVING filtra os dados aps a agregao. Sintaxe: SELECT [lista de campos | funes de agregao] FROM [tabelas] GROUP BY [lista de campos para agregao] HAVING [critrios de seleo aps a agregao] WHERE [critrios de seleo antes da agregao] ORDER BY [campos para ordenao]
Exerccios 1) Retornar o nmero de programadores cadastrados no sistema. 2) Retornar o programa com maior tempo para desenvolvimento. 3) Filtrar o programa com menor tempo de desenvolvimento que tenha incio entre 21/12/2006 e 30/10/2007.
5.3.1 INSERT
O comando INSERT usado para inserir novos registros em tabelas. A insero de um novo registro s ser efetivada se no for violada nenhuma restrio. Sintaxe: INSERT INTO [talela] VALUES [lista de valores] ([lista de campos])
A lista de campos serve pode ser usada para se declarar campos a serem inseridos.
Banco de Dados
36
5.3.2 DELETE
O comando DELETE apaga registros da tabela. A excluso ser efetuada se nenhuma regra de integridade referencial for violada, e os registros apagados s podero ser recuperados atravs da restaurao de arquivos de backup. Sintaxe: DELETE [talela] WHERE [critrios de seleo]
5.3.3 UPDATE
O comando UPDATE permite a atualizao de dados j existentes. A atualizao s ser efetuada se no houver conflito com nenhuma restrio definida para a tabela. Sintaxe: UPDATE [tabela] SET [campo1 = novo_nome1, campoN = novo_nomeN] WHERE [critrios de seleo]
Exerccios 1) 2) 3) 4) 5) Inserir, utilizando SQL, os nveis de dificuldade Muito fcil e Muito difcil. Inserir, utilizando SQL, dois programadores da cidade de Pouso Alegre. Inserir um programa com nvel de dificuldade Muito difcil. Alterar o campo descrio do registro 4 da tabela nvel para mestre. Excluir o nvel de dificuldade Muito fcil. 6) Crie as instrues SQL de acordo com as tabelas abaixo. Faa tudo em sequncia.
Msicas
Tipo Nmero Nmero Texto Texto Nmero Tam Chave * *
50 50
a. Mostrar todos os Cds. b. Mostrar os campos nome e data da compra dos Cds ordenados por nome. c. Mostrar os campos nome e data da compra dos Cds classificados por data de compra em ordem decrescente. d. Mostrar o total gasto com a compra dos Cds. e. Mostrar todas as msicas (todos os campos) do Cds cdigo 1. f. Mostrar o nome do Cd e o nome das msicas de todos Cds. g. Mostre o nome e o artista de todas as msicas cadastradas. h. Mostre o tempo total de msicas cadastradas. i. Mostre o nmero, nome e tempo das msicas do Cd 5 em ordem de nmero. j. Mostre o tempo total de msicas por Cd. k. Mostre a quantidade de msicas cadastradas. l. Mostre a mdia de durao das msicas cadastradas. m. Mostre a quantidade de Cds. n. Mostre a quantidade de msicas por Cd. o. Mostre o nome do Cd e o nome da primeira msica de todos Cds. p. Mostre uma listagem de msicas em ordem alfabtica. q. Mostre o Cd que custou mais caro.
Banco de Dados Prof. M. Sc. Maria de Ftima de Freitas Bueno Marclio
37
Referncias Bibliogrficas
o o o o o o o o o o
Silberschatz, A., Korth, H. F. e Sudarshan, S., Sistema de Banco de Dados (terceira edio), Makron Books; Internet. jmourisca.googlepages.com/Aula09.4cCes30Ce24007k_ListEx4_.pdf www.dcc.fua.br/~barreto/bd1/modelo_relacional_conceitos.html www.linhadecodigo.com.br/Artigo.aspx?id=140 www.tech-faq.com/lang/pt/relational-database.shtml www.inf.puc-rio.br/~casanova/INF1731-BD/modulo02.pdf www.marketing-webmaster.com/bd/2-ModeloER.htm www2.dc.ufscar.br/~carvalho/GUBD/aulas/35.html www.de9.ime.eb.br/~yoko/bdII2005.2/NormRo.ppt imasters.uol.com.br/artigo/7020 www.luis.blog.br/normalizacao-de-dados-e-as-formas-normais.aspx Apostilas People Computao.
Banco de Dados