Capítulo 1 INTRODUÇÃO A BANCO DE DADOS 1.1 - BANCO DE DADOS - INTRODUÇÃO...2 1.1.1- Dados...2 1.1.2- Hardware...3 1.1.3- Software...3 1.1.4- Usuários...4 1.2 - SISTEMAS DE ARQUIVOS CONVENCIONAIS...5 1.3 - VISÃO ABSTRATA DOS DADOS EM BD...5 1.3.1 - Nível físico...6 1.3.2 - Nível lógico...6 1.3.3 - Nível de usuário...6 1.4 - OUTROS CONCEITOS EM BD...6 1.5 - MODELO DE DADOS...7 1.5.1 - Modelos Lógicos Baseados em Objetos...7 1.5.2 - Modelos Lógicos Baseados em Registros...8 1.6 - MODELO RELACIONAL...9 1.6.1 - Conceito de Relação...9 1.6.2 - Álgebra Relacional...11 1.6.2.1 - Operadores da Álgebra Relacional... 12 1.6.2.2 - Operadores Derivados... 14 1.7 - SQL - LINGUAGEM DE CONSULTA...16 1.7,1 - Definição de Esquema de Dados...17 1.7.2 - Sintaxe da linguagem SQL...18 1.8 - PASSOS NA MODELAGEM DE UM BANCO DE DADOS...21 1.8.1 - Projeto Lógico de Banco de Dados...22 1.9- REFERENCIAS BIBLIOGRÁFICAS...24
1.1 - Banco de Dados - Introdução Um Sistema de Banco de Dados consiste de uma coleção de dados interrelacionados e procedimentos para se acessar estes dados. Esta coleção de dados pode corresponder ao banco de informações de uma determinada empresa ou instituição. As principais operações que um Banco de Dados (BD) deve permitir são:! A adição de novo (vazios) arquivos ao banco de dados;! A inserção de novos dados nos arquivos existentes;! A recuperação de dados dos arquivos existentes;! A atualização de dados nos arquivos existentes;! A eliminação de dados nos arquivos existentes;! A remoção permanente de arquivos existentes no Banco de Dados (BD). Um exemplo bastante simples de um BD, composto de um único arquivo, no caso, funcionários de uma empresa, é apresentado a seguir: Nome Função Salário Admissão Carga_horária Paulo César Instrutor 1.050 01/04/1996 20 Maria Aparecida Mecânico 720 22/05/1995 40 Carlos Alberto Motorista 500 30/03/2000 35 Como veremos mais adiante, arquivos computadorizados, como apresentado acima, serão chamados de tabelas. As linhas de tais tabelas são consideradas registros da tabela. As colunas são consideradas campos destes registros, as quais descrevem um atributos (no exemplo, a função dos funcionários da empresa) qualquer da tabela. O principal objetivo de um banco de dados é manter os dados armazenados e torná-los disponíveis quando solicitados. Portanto, para atender este objetivo quatro (4) componentes são necessários: dados, hardware, software e os usuários. 1.1.1- Dados Os dados de um sistema de banco de dados estão disponíveis em pequenos ou grandes computadores, os quais podem ser manipulados por usuário único ou usuários múltiplos respectivamente. Um dos objetivos da maioria dos sistemas de múltiplos usuários é precisamente possibilitar a cada usuário individual comportar-se como se estivesse trabalhando com um sistema de usuário único. Os problemas especiais dos sistemas de usuários múltiplos são essencialmente internos do sistema, não visíveis ao usuário. Veremos mais a frente que os dados, mesmo num sistema pequeno, há boas razões para que os mesmos sejam divididos em diversos bancos distintos, o que leva a necessidade dos grandes sistema de bancos de dados serem não só integrados como compartilhados, representando a maior vantagem destes sistemas. 2 BANCO DE DADOS GEOGRÁFICO
" Por "integrado" queremos dizer que o BD pode ser imaginado como a unificação de diversos arquivos de dados, eliminando-se total ou parcialmente qualquer redundância entre os mesmos. Por exemplo, um BD com registros de FUNCIONÁRIOS (nome, endereço, depto, salário, etc.) e INSCRIÇÃO (em um curso de treinamento), onde deseja-se saber qual o departamento de um determinado funcionário, sem que esta informação esteja nos registros das inscrições. " Por "compartilhamento" queremos dizer que parcelas isoladas de dados podem ser compartilhadas por diversos usuários num BD, no sentido de que todos os usuários podem ter acesso à mesma parcela de dados (e com finalidades diferentes). Po exemplo, os mesmos registros de FUNCIONÁRIOS poderiam estar sendo utilizados por departamentos diferentes. Uma conseqüência do fato de um banco de dados ser integrado é que qualquer usuário, em geral, só estará interessado em um subconjunto do banco de dados total; ademais, os subconjuntos de diferentes usuários irão sobrepor-se de muitas maneiras diferentes. Em outras palavras, um determinada banco de dados será percebido por usuários diferentes de várias formas distintas. De fato, mesmo quando dois usuários compartilham o mesmo subconjunto do banco de dados, as visões do mesmo podem diferir consideravelmente a nível dos detalhes. 1.1.2- Hardware O hardware compõe-se dos volumes de memória secundária - discos rígido - nos quais reside o banco de dados, juntamente com os dispositivos associados de entrada/saída (E/S), dispositivos de controle, canais de entrada/saída, etc. O maior objetivo quanto ao desempenho de sistemas de banco de dados é minimizar o número de acessos a disco (entradas/saídas de disco), isto é, usar técnicas de ordenamento dos dados armazenados, de maneira que determinada parte de dados, digamos um registro armazenado, possa ser localizado em um mínimo possível de E/S. O ordenamento dos dados no disco é chamado de estrutura de armazenamento. Pode-se projetar muitas estruturas de armazenamento diferentes e, certamente, estruturas diferentes terão características de desempenho diferentes; cada uma será satisfatória em determinadas aplicações. Não existe nenhuma estrutura ótima para todas as aplicações. Um bom sistema, portanto, deve suportar uma variedade de estruturas, de modo que partes diferentes dos dados possam ser armazenadas de maneiras diferentes, e que a estrutura de armazenamento de uma determinada parte possa ser modificada conforme as necessidades de desempenho mudem ou devam ser compreendidas melhor. 1.1.3- Software Entre o banco de dados físico, isto é, os dados armazenados, e os usuários do sistema encontra-se o software, o gerenciador do banco de dados (o gerenciador BD) ou, mais comumente, Sistema Gerenciador de Banco de Dados (SGBD). Todas as solicitações dos usuários de acesso ao banco de dados são manipulados pelo SGBD, tais como a criação de arquivos (tabelas), inserção de dados, recuperação de dados, etc. Outra função do SGBD é isolar os usuários do banco de dados dos detalhes a nível de hardware, fazendo com que eles tenham uma visão do banco acima do nível do hardware, e suporta as operações do usuário (uma consulta em SQL, por exemplo), que são expressas em termos daquela visão a nível mais elevado. INPE - http://www.dpi.inpe.br/cursos 3
1.1.4- Usuários Aqui podemos considerar três grandes classes de usuários: Programador de Aplicações - responsável pela definição dos programas de aplicação que utilizam o banco de dados. Estes programas operam com os dados de todas as formas usuais: recuperação de informações, criação de novas informações, anulação ou alteração de informações existentes. Os programas em si podem ser de aplicações convencionais em lotes ou aplicações on-line, cuja função é suportar um usuário final. Usuário final - interage com o sistema a partir de um terminal on-line. Tem acesso ao banco da dados por meio de uma das aplicações on-line, definidas para o mesmo pelo programador de aplicações, ou usar a interface fornecida como parte integrante do SGBD. A maioria dos sistemas fornecem pelo menos uma aplicação embutida, a saber, um processador de linguagem de consulta interativo, pelo qual o usuário é capaz de emitir comandos ou instruções de alto nível (como SELECT, INSERT, etc.) ao SGBD. Alguns sistemas proporcionam interfaces embutidas adicionais, nas quais os usuários não precisam emitir expressamente os comandos, e sim escolhendo itens do menu ou preenchendos formulários. Administrador do Banco de Dados - a função de um DBA requer alto grau de capacitação técnica e capacidade de entender e interpretar as necessidades da empresa a nível de gerência executiva. Pode ser exercido por uma ou várias pessoas, as quais garantem um controle centralizado das informação no banco, e assim permitem: # reduzir a redundância dos dados; # evitar a inconsistência até certo ponto; # compartilhar os dados; # reforçar os padrões; # aplicar restrições de segurança; # manter a integridade; # equilibrar as necessidades conflitantes; # garantir a independência dos dados. Resumindo os tópicos acima, os sistemas de banco de dados são projetados para gerenciar uma grande quantidade de informações, e o objetivo principal é o uso eficiente para o armazenamento e a recuperação destes dados. Em termos de armazenamento, estruturas de dados devem ser definidas, e para a recuperação das informações mecanismos de consulta devem existir. Além dos mecanismos de definição e consulta dos dados, este sistemas de bancos de dados devem garantir a segurança e consistência da informação, evitando perdas em caso de caídas dos sistema e inconsistências em caso de acessos múltiplos à mesma informação. Exemplos de SGBD são; Access, Oracle, Informix, CodeBase, entre outros. 4 BANCO DE DADOS GEOGRÁFICO
1.2 - Sistemas de Arquivos Convencionais Os sistemas de banco de dados trabalham com arquivos, assim como os sistemas de arquivos convencionais. Um sistema de arquivos convencionais é caracterizado por diferentes formas de arquivos, e diferentes programas para se acessar as informações. A variedade de formatos de arquivos, exige o desenvolvimento de aplicativos específicos para se acessar as informações. Muitas vezes a mesma informação pode estar repetida em arquivos de diferentes formatos, o que dificulta o processo de garantia de consistência das informações, assim como o gerenciamento de acesso múltiplos aos dados. As principais desvantagens sistemas são: redundância e possível inconsistência de dados; dificuldade para se acessar informação (programa pode não estar disponível); inconsistência devido a acesso de multi-usuários; problemas de segurança. 1.3 - Visão Abstrata dos Dados em BD Um dos objetivos dos SGBDs é prover aos usuários visões abstratas dos dados, ou seja o sistema deve ser capaz de esconder informações que não sejam necessárias ao usuário comum. Diferentes níveis de abstração são definidos de forma esconder a complexidade do sistema em termos de armazenamento e manutenção das informações. Desta forma o usuário comum tem acesso à criação e consulta dos dados, sem saber a forma como os mesmos são gerenciados pelo sistema. Três níveis de abstração são definidos (veja Figura 1.1 a seguir). Figura 1.1 - Níveis de Abstração de Banco de Dados INPE - http://www.dpi.inpe.br/cursos 5
1.3.1 - Nível físico Refere-se ao nível mais baixo de abstração dos dados, isto é, está mais próximo ao armazenamento físico ou a forma como são armazenados os dados. O nível físico é descrito por meio de um esquema interno, que não só define os vários tipos de registros armazenados como também especifica os índices que existem, como os campos armazenados são representados, a sequência física dos registros e assim por diante. 1.3.2 - Nível lógico Descreve dados e relacionamentos entre os mesmos, isto é, a representação de todo o conteúdo de informações do banco de dados, porém um tanto abstrata quando comparada à forma como os dados são fisicamente armazenados, que também pode ser diferente da maneira como os dados são vistos por qualquer usuário em particular. Podemos dizer que é a visão conceitual dos dados, isto é, como realmente são, e não como os usuários são forçados a vê-los devido às restrições da linguagem ou do hardware utilizados pelos mesmos. 1.3.3 - Nível de usuário O nível de usuário ou nível externo tem diferentes visões dos dados, muitas vezes não tendo acesso a todos os atributos armazenados. Neste nível estão os usuários finais ou programadores de aplicações. 1.4 - Outros conceitos em BD Outros conceitos são fundamentais para manipulação com BD: Instância de BD: Coleção de informações armazenadas em um determinado momento. Esquema de BD: Projeto geral do banco de dados (esquemas físico, lógico e sub-esquemas). Independência de dados: física: modificações no esquema físico não acarretam alterações nos programas de aplicação. lógica: modificações no esquema lógico não acarretam alterações nos programas de aplicação. Independência de dados lógica é mais difícil de se obter do que a independência física dos dados, uma vez que os programas geralmente são desenvolvidos baseados na concepção lógica do sistema. 6 BANCO DE DADOS GEOGRÁFICO
1.5 - Modelo de Dados O modelo de dados de um sistema corresponde à coleção de ferramentas conceituais para descrever dados, relacionamentos, semântica, e restrições de consistência. Existem duas categorias de modelos de dados: modelos lógicos baseados em objetos e modelos lógicos baseados em registros. 1.5.1 - Modelos Lógicos Baseados em Objetos Os modelos lógicos baseados em objetos são utilizados para descrever as informações nos níveis lógico e de usuário. E-R - entidade-relacionamentos: coleção de entidades e relacionamentos As entidades correspondem a elementos do mundo real tipo pessoas, municípios, e outras. Os relacionamentos descrevem como estas entidades estão associadas. Atributos podem ser associados às entidades. Um exemplo de diagrama E-R está mostrado a seguir. As entidades pessoa e contacorrente estão ligadas pelo relacionamento agência. (retângulo=entidade, losango=relacionamento, elipse=atributo) Modelos orientado a objetos coleção de objetos (elemento do mundo real, ex.: hospital, municício); objetos contém atributos e métodos para acessar suas informações; objetos do mesmo tipo são agrupado em classes. No exemplo abaixo o a classe de objeto empregado possui como atributos os campos nome e endereço, e existem métodos para recuperar e definir estes atributos. Classe empregado atributos: nome, endereço métodos: define_nome, recupera_nome define_endereço, recupera_endereço INPE - http://www.dpi.inpe.br/cursos 7
1.5.2 - Modelos Lógicos Baseados em Registros Os modelos baseados em registros são assim chamados porque o banco de dados é estruturado em registro com formato fixo de vários tipos. Cada tipo de registro define um número fixo de campos ou atributos, e cada atributo é normalmente de tamanho fixo, o que simplifica o processo de implementação do banco de dados. Os modelos de dados baseados em registros mais comuns são: modelo relacional, modelo de redes, e modelo hierárquico. Modelo Relacional coleção de tabelas ou relações representando dados e relacionamento entre estes dados. Cada tabela pode possuir múltiplas colunas representando atributos com um nome único. As duas tabelas abaixo mostram as relações FUNCIONÁRIO e DEPARTAMENTO, que estão relacionadas pelo atributo depto. Este relacionamento nos permite identificar os departamentos onde cada funcionário trabalha. FUNCIONÁRIO Registro Nome Idade Salário Depto 98752 João da Silva 32 2000.00 1 97345 Henrique Cardoso 28 1700.00 2 89234 José de Souza 34 3500.00 3 DEPARTAMENTO Depto Nome Cidade Estado 1 DPI SJCampos SP 2 DSR Natal RN 3 DME Cuiabá MT Modelo de Redes dados representados por uma coleção de registros; relacionamento entre os dados representados por ponteiros. João 43567 INPE José 43693 INPE Maria 40234 CTA A- 700 A-II 500 Ana 44667 CTA 8 BANCO DE DADOS GEOGRÁFICO
Modelo Hierárquico similar ao modelo de redes (registro e ponteiros); dados organizados como uma estrutura de árvore. Terreno industrial comercial público Embraer GM LA escola parque Diferença entre os modelos baseados em registros: O modelo relacional se diferencia dos modelos de redes e hierárquico por não possuir ponteiros ou ligações. O modelo relacional acessa os seus registros pelos valores que os atributos possuem. 1.6 - Modelo Relacional O modelo relacional se estabeleceu como o modelo usualmente utilizado em aplicações de banco de dados. As características principais são: Coleção de tabelas ou relações com nome único; Colunas da tabela representam atributos; Linhas da tabela contém valores para os atributos; Domínio do atributo: conjunto de possíveis valores. X = { x ε R x -5 e x 5 } valores reais entre 5 e 5. Y = { y ε R y 0 } valores reais maiores ou igual a 0. 1.6.1 - Conceito de Relação Relação: define uma tabela no banco de dados. Dado os domínios D 1, D 2,..., D n não necessáriamente distintos, uma relação é definida da seguinte forma: R = { (d 1, d 2,..., d n ) d 1 D 1, d 2 D 2,..., d n D n } INPE - http://www.dpi.inpe.br/cursos 9
O conjunto de valores ordenados (d 1, d 2,..., d n ) define um tupla (linha ou registro da relação). Uma relação é o conjunto de n-tuplas ordenadas, onde n define o grau da relação. A tabela abaixo mostra um exemplo de uma relação que possuiu 5 atributos, cujos domínios estão descritos. FUNCIONÁRIO Registro Nome Idade Salário Depto 98752 João da Silva 32 2000.00 1 97345 Henrique Cardoso 28 1700.00 2 89234 José de Souza 34 3500.00 3 Atributo Domínio registro inteiro positivo nome conjunto de caracteres idade inteiro positivo salário real positivo depto inteiro positivo Chaves de uma Relação Dado uma relação, é importante termos condições de identificar elementos e relacionamentos únicos. Isto é normalmente obtido através da chave de uma relação. O conceito de chave corresponde a um ou mais atributos de uma tupla que não se repetem na tabela. Por exemplo, uma relação de pessoas pode ter como chave o atributo CPF, que é um valor que não se repete. Super-chave: conjunto de um ou mais atributos que não se repete em uma relação. Chave candidata: super-chave mínima (não pode ser gerado um subconjunto). Chave primária: chave candidata escolhida. chave: CPF Nome Endereço CPF chave: Rua + Bairro + Cidade Rua Bairro Cidade 10 BANCO DE DADOS GEOGRÁFICO
Conversão do Modelo E-R para o Modelo Relacional Entidades com atributos chaves geram uma relação; Relacionamentos geram uma relação adicionando-se os atributos chaves das entidades relacionadas; Pode-se também não gerar uma tabela para o relacionamento, e neste caso deve-se associar um atributo referente a estes relacionamento em uma das outras tabelas. Exemplo: Pessoa (cpf, endereço) Acesso (cpf, número, data) Conta (número, saldo) 1.6.2 - Álgebra Relacional A álgebra relacional é uma linguagem de consulta procedural, onde o usuário define o que deseja e a forma para recuperar estes dados. Existem uma série de operadores básicos ou fundamentais, e outros derivados dos operadores básicos. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída operação (REL1) REL2 operação (REL1,REL2) REL3 Operações básicas: Seleção, projeção, união, diferença, produto cartesiano INPE - http://www.dpi.inpe.br/cursos 11
1.6.2.1 - Operadores da Álgebra Relacional Seleção: seleciona tuplas que satisfazem a um certo predicado ou condição. PESSOA Nome Registro João 1 Maria 2 José 3 a) selecionar tuplas cujo nome = João (σ Nome= João (Pessoa)) Nome Registro João 1 b) selecionar as tuplas de Pessoas cujo registro > 1 (σ Registro>1 (Pessoa)) Nome Registro Maria 2 José 3 c) selecionar as tuplas de Pessoas com registro > 1 e registro <= 3 (σ Registro>1 Registro < 3 (Pessoa)) Nome Registro Maria 2 José 3 12 BANCO DE DADOS GEOGRÁFICO
Projeção: Gera novas relações excluindo alguns atributos. exemplo: projete o atributo Nome sobre a relação Pessoa PESSOA π Nome (Pessoa) Nome Registro Nome João 1 João Maria 2 Maria José 3 José União: Gera uma relação com a união de atributos do mesmo domínio que estão em relações diferentes. As relações devem possuir o mesmo número de atributos. exemplo: encontre todos os clientes da agência que possuem conta corrente ou empréstimo. CONTACORRENTE Nome Conta João 1 Maria 2 José 3 EMPRESTIMO Nome Empréstimo Paulo 100 Maria 200 Carlos 300 = UNIÃO Nome João Maria José Paulo Carlos Diferença: Gera uma relação com as tuplas que se encontram em uma relação, mas não em outra. As relações devem possuir o mesmo número de atributos. INPE - http://www.dpi.inpe.br/cursos 13
exemplo: encontre todos os clientes que não tenha feito empréstimo. CONTACORRENTE Nome Conta João 1 Maria 2 José 3 EMPRESTIMO Nome Empréstimo Paulo 100 Maria 200 Carlos 300 = DIFERENÇA Nome João José Produto Cartesiano Combina operações entre duas relações, onde a união de atributos forma a nova relação. exemplo: todos clientes com conta corrente X empréstimo de Maria. Nome cc Conta Nome emp Emprestimo João 1 Maria 200 Maria 2 Maria 200 José 3 Maria 200 1.6.2.2 - Operadores Derivados Intersecção Gera uma relação com tudo que está em ambas relações. 14 BANCO DE DADOS GEOGRÁFICO
exemplo: todos os clientes que possuem empréstimo. CONTACORRENTE Nome Conta João 1 Maria 2 José 3 EMPRESTIMO Nome Empréstimo Paulo 100 Maria 200 Carlos 300 = INTERSECÇÃO Nome Maria Junção A operação de junção combina duas relações através de um atributo comum, gerando uma nova relação. Inclui um produto cartesiano, seguido de uma seleção (pode ter projeção ao final). exemplo: nomes dos clientes com conta corrente e número de empréstimo. prod. cartesiano: CONTACORRENTE X EMPRÉSTIMO seleção: Nome contacorrente = Nome empréstimo projeção: Nome contacorrente, Empréstimo empréstimo Junção natural: Neste caso os nomes dos atributos utilizados para combinar as tabelas são iguai. Junção externa: É uma extensão da junção natural que evita a perda de informação. Vamos considerar as duas relações abaixo: ( nome, endereço, cidade ) ( nome, banco, salário ) { Coyote, Toon, Hollywood } { Coyote, Mesa, 1500 } { Coelho, Túnel, Cenoura } { Coelho, Mesa, 1300 } { Smith, Revolver, Vale Morte} { Gates, Msm, 5300 } INPE - http://www.dpi.inpe.br/cursos 15
A junção natural é feita pelos atributos nome das duas tabelas, gerando o resultado com 2 registros uma vez que os nomes Coyote e Coelho aparecem nas duas relações: ( nome, endereço, cidade, banco, salário) { Coyote, Toon, Hollywood, Mesa, 1500 } { Coelho, Túnel, Cenoura, Mesa, 1300 } O resultado da junção natural mostra que as informações referentes a Smith foram perdidas. Para evitar este tipo de perda de informação deve se usar o operador de junção externa, que repete as informações do registro que não existe na outra tabela, e acrescenta valores nulos nos outros campos. Neste caso o registro referente a Smith faria parte do resultado final. ( nome, endereço, cidade, banco, salário) { Coyote, Toon, Hollywood, Mesa, 1500 } { Coelho, Túnel, Cenoura, Mesa, 1300 } { Smith, Revolver, Vale Morte, NULL, NULL} Funções de Agregação São funções que retornam um valor único a partir de uma coleção de valores. Sum: soma dos valores { sum salário (inpe) } Avg: média dos valores Count: total de ítens na coleção Min, max: mínimo e máximo valores de uma coleção Count-distinct: elimina repetições primeiro e conta o total 1.7 - SQL - Linguagem de Consulta A Álgebra Relacional é uma maneira formal de expressar consultas. Entretanto os sistemas de banco de dados comerciais, necessitam de uma linguagem mais simples e acessível para os usuários. A linguagem SQL (Structured Query Language) é a linguagem padrão em banco de dados relacionais. A linguagem SQL possui várias partes, entre elas: Linguagem de definição de dados (DDL Data Definition Language): comandos para definir relações, remover relações, criar índices, e modificar relações. 16 BANCO DE DADOS GEOGRÁFICO
Linguagem de manipulação de dados interativa (DML Data Manipulation Language): inclui uma linguagem de consulta baseada na álgebra relacional que permite inserir novos registros ou tuplas, remover registros, e modificar registros. Definição de vistas: vistas são tabelas relacionais, onde apenas parte do conteúdo de uma relação está disponível. Controle de acesso: a DDL inclui comandos para definir direito de acesso aos dados. Controle de integridade: a DDL inclui comandos para garantir a consistência dos dados. Controle de transação: comandos para definir início e término de uma operação. As informações só são atualizadas se todo o processo for executado corretamente. 1.7,1 - Definição de Esquema de Dados Criação de tabelas: comando create table create table r (A 1 D 1, A 2 D 2,..., A n D n, <restrição de integridade 1 >,..., <restrição de integridade k >) Restrições de integridade que podem estar definidas na criação de uma tabela: primary key (A j1, A j2,..., A jm ) - define atributo(s) chave check (P) - verifica predicado create table cliente (nome char(20) not null, endereço char(30), cidadechar(30), primary key (nome)) create table contacorrente (número char(10) not null, banco char(30), saldo integer, primary key (número), check (saldo >= 0)) INPE - http://www.dpi.inpe.br/cursos 17
Eliminar tabela do banco: comando drop table drop table cliente Eliminar todos os registros de uma tabela: comando delete from delete from cliente Alterar tabela do banco: comando alter table alter table cliente add A D : adiciona atributo A com domínio D alter table cliente drop A : elimina atributo A 1.7.2 - Sintaxe da linguagem SQL SELECT <atributos> FROM <relações> WHERE <expressão> SELECT: corresponde ao operador projeção da álgebra relacional FROM: corresponde ao operador produto cartesiano da álgebra relacional WHERE: corresponde ao operador seleção da álgebra relacional Exemplos de consultas SQL: ALUNO CADEIRA Nome Id Aluno Tipo João 1 1 escolar Maria 2 2 normal José 3 3 poltrona SELECT nome FROM aluno WHERE Id = 1 Etapas de execução da consulta acima: FROM: todas as tuplas da relação aluno WHERE: selecione as tuplas cujo id = 1 SELECT: projete o atributo nome 18 BANCO DE DADOS GEOGRÁFICO
SELECT Nome, Id, Tipo FROM aluno, cadeira WHERE Id = Aluno Etapas da execução da consulta acima: FROM: produto cartesiano ALUNO X CADEIRA WHERE: selecione registros onde Id = Aluno SELECT: projete os atributos Nome, Id, e Tipo Nome Id Tipo João 1 escolar Maria 2 normal Operações em conjunto de caracteres ( strings ) O caracter % representa qualquer sub-string. O caracter _ (em alguns bancos *) representa qualquer caracter. O termo like é utilizado para comparar padrões. Carl% : qualquer nome que comece com Carl %ulo% : qualquer nome que possui ulo _ : qualquer nome com 3 caracteres Exemplo: selecione todos os nomes de clientes cujo endereço de rua tem Ademar. select nome from cliente where endereco like %Ademar% Funções de agregação Média: avg Selecione a média dos saldo das conta correntes do Banco do Brasil. select avg (saldo) from conta_corrente where banco_nome = Brasil Cláusula group by : junta as tuplas com atributos de mesmo valor select banco_nome, avg (saldo) from conta_corrente group by banco_nome INPE - http://www.dpi.inpe.br/cursos 19
Contador : count recupere o número de tuplas ou registros na relação cliente select count (*) from cliente Mínimo : min Máximo : max Soma : sum Junção natural : ( inner join ) Considere as duas relações abaixo empréstimo e cliente. Deseja-se unir as duas tabelas através dos atributos número da tabela empréstimo e emp_número da tabela cliente. Observe que o resultado empréstimo (banco,numero,saldo) cliente (nome,emp_numero) { Centro, L-170, 3000 } { João, L-170 } { Satelite, L-230, 4000 } { Sandra, L-230 } { Inpe, L-260, 300 } { Paulo, L-155 } select * from emprestimo inner join cliente on emprestimo.numero = cliente.emp_numero { Centro, L-170, 3000, João, L-170} { Satelite, L-230, 4000, Sandra, L-230 } Observa-se que o resultado da junção natural perde as informações referentes ao Inpe. Junção Externa: (outer join) Evita perda de informações. O termos right e left podem ser usados na sintaxe da operação de junção, e definem qual a tabela que terá os seus atributos na tabela resultado. 20 BANCO DE DADOS GEOGRÁFICO
empréstimo (banco, numero, saldo) cliente (nome, emp_numero) { Centro, L-170, 3000 } { João, L-170 } { Satelite, L-230, 4000 } { Sandra, L-230 } { Inpe, L-260, 300 } { Paulo, L-155 } select * from emprestimo left outer join cliente on emprestimo.numero = cliente.emp_numero { Centro, L-170, 3000, João, L-170} { Satelite, L-230, 4000, Sandra, L-230 } { Inpe, L-260, 1700, null, null, } No exemplo acima o termo left identifica que a junção será feita utilizando como base os registros da tabela empréstimo. 1.8 - Passos na Modelagem de um Banco de Dados No processo de modelagem de um banco de dados podemos identificar quatro etapas (veja esquema abaixo). Requisitos: corresponde à identificação e documentação dos dados necessários para a implantação do banco de dados, assim como identificação dos recursos operacionais necessários à implantação do sistema; Modelagem conceitual: mapear visão do usuário em um conjunto de dados, e descrever entidades, atributos e relacionamentos; Implementação: definição do esquema do banco de dados que pode ser implementado em um gerenciador de banco de dados; Projeto físico: definir estruturas de dados, métodos de acesso, e segurança das informações. INPE - http://www.dpi.inpe.br/cursos 21
1.8.1 - Projeto Lógico de Banco de Dados O problema básico no processo do projeto lógico de um banco de dados, é como representar os dados e seus atributos obtido na fase de identificação de requisitos de uma forma completa e eficiente. Ou seja, como estes dados devem ser combinados em tabelas e relacionamentos? Para este tipo de problema técnicas de normalização são utilizadas. Normalização corresponde a análise das dependências funcionais entre os atributos dos dados, e tem como objetivo principal reduzir complexidade da visão do usuário. Os passos na normalização são: Identificar a visão do usuário; Definir relações não normalizadas; Gerar tabelas na 1 a forma normal (remove grupos repetidos); Gerar tabelas na 2 a forma normal (remove dependências parciais); Gerar tabelas na 3 a forma normal (remove dependências transitivas). Relação não normalizada: Relação que contém um ou mais grupos repetidos; Atributo simples não serve como chave candidata. RELATÓRIO_NOTAS Est# Nome Área Curso Aula Professor Prof Loc Nota 1 João CA CA10 Banco de Dados K BD300 A 1 João CA MA5 Matemática C M250 B 1 a Forma Normal Objetivo: remover grupos repetidos. Problemas: redundância de dados; anomalias de inserção; anomalias de atualização; anomalias de remoção. A relação não normalizada pode ser dividida nas duas relações a seguir, uma na 1 a FN e outra na 3 a FN: 1 a FN ESTUDANTE_CURSO Est# Curso Aula Professor Prof Loc Nota 3 a FN - ESTUDANTE Est# Nome Área 22 BANCO DE DADOS GEOGRÁFICO
A relação na 1a FN apresenta problemas de inserção, uma vez que um curso só pode ser criado se existir algum aluno. Um outro problema é de atualização, uma vez que o valor do atributo curso pode se repetir em várias linhas, e caso seja alterado, todas as linhas devem ser modficadas. Uma outra anomalia é a perda de informação. Por exemplo, se um curso só tem um aluno, e o professor só ministra este curso, a remoção do aluno causará a perda das informações sobre o professor. A razão para as anomalias nesta forma normal, é que os atributos não chaves são parcialmente dependentes da chave primária (Est#,Curso). Por exemplo, o atributo professor depende apenas do atributo curso e não do atributo Est#. 2 a Forma Normal Objetivo: remover dependências parciais. A passagem da 1a FN para a 2a FN consiste em criar duas novas relações uma com atributos totalmente dependentes da chave primária, e outra com atributos parcialmente dependentes da chave primária. 3 a FN - NOTAS Est# Curso Nota 2 a FN CURSO_INSTRUTOR Curso Aula Professor Prof Loc Tabelas na 2 a FN também apresentam problemas devidos a dependência transitiva entre atributos não chave (Professor/Prof Loc). Assim como na 1 a FN, tabelas na 2 a FN apresentam anomalias de inserção, remoção, e atualização. 3 a Forma Normal Neste caso todos os atributos não chave são totalmente dependentes da chave primária. 3 a FN - ESTUDANTE Est# Nome Área 3 a FN - NOTAS Est# Curso Nota 3 a FN CURSO Curso Aula Professor 3 a FN INSTRUTOR Professor Prof Loc INPE - http://www.dpi.inpe.br/cursos 23
1.9- Referencias Bibliográficas DATE, C.J. Banco de Dados Tópicos Avançados. CAMPUS, 1 ed.- ISBN 8570014945 DATE, C.J. Introdução a Sistemas de Bancos de Dados. Rio de Janeiro, RJ CAMPUS, 4 ed.- ISBN 857001596-8 HERNANDEZ, M.J. Aprenda a Projetar seu Próprio Banco de Dados. MAKRON BOOKS, 1999, 1 ed.- ISBN 853461089-4. KROENKE, M.D. Banco de Dados Fundamentos, Projeto e Implementação. Rio de Janeiro, RJ, LTC, 1998, 6 ed.. SETZER, V.W. Banco de Dados Conceitos, Modelos, Gerenciadores e Projeto Lógico EDGARD BLUCHER, 1989, 3 ed. - ISBN 852120123-0 SILBERSCHATZ, A. KORTH, H. SUDARSHAN, S. Sistema de Banco de Dados. MAKRON BOOKS, 1999, 3 ed.- ISBN 853461073-8. 24 BANCO DE DADOS GEOGRÁFICO