Vous êtes sur la page 1sur 78

SERVIO PBLICO FEDERAL MINISTRIO DA EDUCAO INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DO PAR- CAMPUS ITAITUBA

Curso:

TECNOLOGIA EM ANLISE E DESENVOLVIMENTO DE SISTEMAS


Disciplina:

BANCO DE DADOS I
Professor: Davi Guimares da Silva

IFPA/Campus Itaituba 2012

SUMRIO
1. INTRODUO 2. HISTRICO 3. VISO GERAL DE BANCO DE DADOS 3.1 O que Banco de Dados? 4. VISO GERAL DE BANCO DE DADOS 4.1 Sistema de Banco de Dados 4.1.1 Dados 4.1.2 Hardware 4.1.3 Software 4.1.4 Usurios 4.2 Abordagem de Base de Dados x Processamento Tradicional de Arquivos. 5. CONCEITOS E ARQUITETURA DE BANCOS DE DADOS 5.1 Arquiteturas 5.1.1 Resumo das arquiteturas de SGBDs 6. SISTEMAS GERENCIADORES DE BANCO DE DADOS. 6.1 Projeto de Banco de Dados 6.1.1 Modelo conceitual 6.1.2 Modelo Lgico 6.1.3 Projeto fsico 6.2 Funes do SGBD 6.3 Dicionrio de Dados 6.4 Engenharia de Banco de Dados 7. MODELOS DE DADOS. 7.1 Sistema de Gerenciamento de Arquivos (FMS File Management system). 7.2 Modelo Hierrquico (HDS Hierarquical Database System) 7.3 Modelo Em Rede (NDS - Network Database System) 7.4 Modelo Relacional (Relational Model) 7.5 Modelo Orientado a Objetos 8. MODELO ENTIDADE RELACIONAMENTO 8.1 Composio de um Banco de Dados Relacional 8.1.1 Tabelas (relaes ou entidades) 8.1.2 Registros ou Tuplas 8.1.3 Colunas (Campos ou atributos) 8.1.4 Caractersticas de Entidade e Atributos

8.2 Chaves 8.2.1 Chave Primria 8.2.2 Chave alternativa 8.2.3 Chave Estrangeira 8.3 Relacionamento entre Tabelas 8.3.1 Restries de Mapeamento (Cardinalidade) 8.4 Abstraes de Dados 8.4.1 Especializao / Generalizao 8.4.2 Decomposio / Composio 8.4.3 Derivao (Sumarizao) 8.4.4 Agregao 8.4.5 Diviso 8.5 Diagrama de Representao (Diagrama Entidade Relacionamento) 9. DEPENDNCIA FUNCIONAL 10. NORMALIZAO 10.1 10.2 10.3 Primeira Forma Normal (1FN) Segunda Forma Normal (2FN) Terceira Forma Normal (3FN)

11. TIPOS DE DADOS 12. OPERAES COM SQL BSICO UTILIZANDO O BANCO DE DADOS MySQL. 12.1 12.2 12.3 12.4 12.5 Utilizando SQL bsico no MySQL Comandos Bsicos SQL Comandos DDL Comandos DML Utilizando Comandos DDL e DML para criar Banco de Dados

1. INTRODUO

Figura1- Introduo

Ao longo dos tempos a informtica deixou as reas exclusivamente tcnicas e cientficas para se tornar uma ferramenta de uso geral em qualquer setor da atividade humana. Se h uns anos atrs o grande problema residia na limitao quantidade e capacidade de processamento de informao que era possvel tratar num computador, hoje em dia a tecnologia permite ultrapassar isso, criando, no entanto, outro problema que a qualidade dessa informao. As novas tecnologias permitem tambm explorar melhor as capacidades do computador. A informao deixou de ser apenas texto (smbolos ou caracteres), e passou a incluir imagens e sons. Abrem-se novos campos para a explorao dos sistemas de informao. O tempo das enormes e fastidiosas listagens de computador j passou, hoje a informao tem de ser compreensvel, completa, fcil e rpida de obter. num contexto de necessidade de informao cada vez maior que se insere o aparecimento dos Sistemas de Gesto de Bases de Dados (SGBD). Estes sistemas so um conjunto de programas que fazem uma gesto autnoma da informao, de acordo com um modelo preestabelecido e adaptado empresa. Deste modo vrios programas concebidos em diferentes linguagens, por diversos programadores e executando funes especficas, podem aceder mesma informao. Esta deixa de ser propriedade dos departamentos da empresa e agora encarada como uma entidade nica e autnoma qual vrios e diferentes utilizadores recorrem.

2. HISTRICO Como em muitas tecnologias na computao industrial, os fundamentos de bancos de dados relacionais surgiram na empresa IBM, nas dcadas de 1960 e 1970, atravs de pesquisas de funes de automao de escritrio. Foi durante um perodo da historia na qual as empresas descobriram que estava muito custoso empregar um numero grande de pessoas para fazer trabalhos como armazenar e indexar (organizar) arquivos. Por este motivo, valia a pena os esforos e investimentos em pesquisar um meio mais barato e ter uma soluo mecnica eficiente. Em 1970 um pesquisador da IBM - Edgar Frank Codd - publicou o primeiro artigo sobre bancos de dados relacionais, chamado "Relational Model of Data for Large Shared Data Banks" ("Modelo de dados relacional para grandes bancos de dados

compartilhados"). Este artigo tratava sobre o uso de clculo e lgebra relacional para permitir que usurios no tcnicos armazenassem e recuperassem grande quantidade de informaes. Codd visionava um sistema onde o usurio seria capaz de acessar as informaes atravs de comandos em ingls, onde as informaes estariam armazenadas em tabelas. Devido natureza tcnica deste artigo e a relativa complicao matemtica, o significado e proposio do artigo no foram prontamente realizados. Entretanto ele levou a IBM a montar um grupo de pesquisa conhecido como System R (Sistema R). O projeto do Sistema R era criar um sistema de banco de dados relacional o qual eventualmente se tornaria um produto. Os primeiros prottipos foram utilizados por muitas organizaes, tais como MIT Sloan School of Management (uma escola renomada de negcios norte-americana). Eventualmente o Sistema R evoluiu para SQL/DS, o qual posteriormente tornou-se o DB2. A linguagem criada pelo grupo do Sistema R foi a Structured Query Language (SQL - Linguagem de Consulta Estruturada). Esta linguagem tornou-se um padro na indstria para bancos de dados relacionais e hoje em dia um padro ISO (International Organization for Standardization). A ISO a Organizao Internacional de Padronizao. Mesmo a IBM sendo a companhia que inventou o conceito original e o padro SQL, no foram eles que produziram o primeiro sistema comercial de banco de dados. O feito foi realizado pela Honeywell Information Systems Inc., cujo sistema foi lanado em junho de 1976. O sistema era baseado em muitos princpios do sistema que a IBM concebeu, mas foi modelado e implementado fora da IBM.

Os primeiros sistemas de banco de dados construdos baseado nos padres SQL comearam a aparecer no inicio dos anos 80 com a empresa Oracle atravs do Oracle 2 e depois com a IBM atravs do SQL/DS, servindo como sistema e repositrio de informaes de outras empresas. O software de banco de dados relacionais foi sendo refinado durante a dcada de 80. Isso deveu-se ao feedback (retorno) que os usurios destes sistemas faziam, devido ao desenvolvimento de sistemas para novas industrias e ao aumento do uso de computadores pessoais e sistemas distribudos. Desde sua chegada, os bancos de dados tem tido aumento nos dados de armazenamento, desde os 8 MB (Megabytes) ate centenas de Terabytes de dados em listas de e-mail, informaes sobre consumidores, sobre produtos, vdeos, informaes geogrficas, etc.. Com este aumento de volume de dados, os sistemas de bancos de dados em operao tambm sofreram aumento em seu tamanho. 3. DIFINIES DE BANCO DE DADOS Para compreender com maior facilidade os conceitos relativos BANCO DE DADOS de suma importncia observar alguns conceitos bsicos referentes teoria e terminologia de arquivos convencionais, haja vista, que os primeiros SGBD foram criados a partir do aperfeioamento de sistemas gerenciadores de arquivo, e ainda utilizam muito da base conceitual e da terminologia de arquivos. Havia uma grande necessidade em se realizar o armazenamento de informaes. Alm de uma forma adequada para definir o armazenamento destas informaes, os usurios desejavam realizar (consultar) um determinado subconjunto de dados, atualizar ou modificar a estrutura dos dados e eliminar informaes no mais necessrias. Uma soluo para este problema foi apresentada com o advento da tecnologia em Banco de Dados (ou Base de Dados ou BD). Banco de dados desempenha um papel crtico em muitas reas onde computadores so utilizados, incluindo negcios, engenharia, medicina, educao, etc. Segundo Elmasri e Navathe (2006) as principais caractersticas de um banco de dados so as seguintes: Natureza auto descritiva do sistema de banco de dados. Isolamento entre os programas e os dados, a abstrao de dados. Suporte para mltiplas vises dos dados. Compartilhamento de dados e processamento de transaes de multiusurios.

3.1 O que Banco de Dados? Para responder a esta pergunta vamos primeiro refletir:

Figura 2- Refletir

O que so dados? O que so informaes? Dados so arquivos que podem ser texto, imagens, vdeos e diversas outras coisas. Quando organizamos estes dados com um objetivo, eles passam a ser informaes, pois servem a um propsito. Dado Representao de um evento do mundo fsico, de um fato ou de uma ideia. Representao de uma propriedade ou caracterstica de um objeto real. No tem significado por si s. Ex.: quantidade de Kwh consumidos em uma residncia. Informao Organizao e agregao dos dados, permitindo uma interpretao. Informao e interpretao dos dados. Ex.: Consumo de energia comparada com a capacidade geradora da usina.

Imagine a seguinte situao: Temos um ba com todas as fotos da famlia desde que voc era um beb. Esto todas espalhadas dentro do ba sem qualquer organizao.

Figura 3 - Ba

O ba nosso banco de dados e os dados que temos disponveis so as fotos. medida que o tempo passa, colocamos novas fotos no ba. Dependendo do quanto a pessoa gosta de tirar fotos, logo vai se tornar difcil achar uma foto especifica. Exemplo: achar em meio a mais de mil fotos a foto do aniversario de cinco anos em que estava soprando a velinha. E uma tarefa difcil no acha? Por isso foram criadas diversas tcnicas para organizar os dados no banco de dados visando a facilitar a tarefa de recuperar dados que so inseridos de maneira organizada. O termo banco de dados foi definido por diversos autores: Um banco de dados uma coleo de dados operacionais armazenados usados pelos sistemas de uma determinada aplicao. (DATE, 2004). Um banco de dados uma coleo de dados que contm informao de um particular empreendimento. (KORTH, 2006). Um banco de dados uma coleo de dados relacionados. (ELMASRI & NAVATHE, 2005). Uma definio mais precisa de Banco de Dados no existe formalmente, contudo pode-se dizer que: a) Um Banco de Dados uma coleo logicamente coerente de dados com um determinado significado inerente. Isto significa que um conjunto aleatrio de dados no pode ser considerado um Banco de Dados. b) Um Banco de Dados representa aspectos de uma parte restrita do mundo real, denominado de minimundo. Alteraes que ocorra no minimundo so refletidas no Banco de Dados. c) Bancos de dados um conjunto coerente e lgico de dados relacionados que possuem significncia intrnseca. Esses dados representam aspectos do mundo real e devem ser mantidos para atender os requisitos da entidade em questo

(OLIVEIRA,2002). Resumindo, um BD representa uma fonte de onde informaes so derivadas, possui um nvel de interao com eventos que ocorrem no mundo real, e uma audincia que est interessada em seu contedo. Alm do conceito de BD, outros esto so necessrios para se compreender o ambiente de um BD. Um Sistema de Gerenciamento de Bancos de Dados (SGBD) uma coleo de programas que permite ao usurio definir, construir e manipular Bancos de Dados para as mais diversas aplicaes. DEFINIR um BD envolve a especificao e a descrio detalhada dos tipos de dados a serem armazenados.

CONSTRUIR um BD o processo de armazenamento dos dados em si em um determinado meio fsico que controlado pelo SGBD. MANIPULAR um BD inclui uma srie de funes para se realizar operaes de consulta, atualizaes e remoes de dados do BD. O Banco de Dados e seu software so juntos denominados de Sistema de Bando de Dados (SBD). 4. VISO GERAL DE BANCO DE DADOS Um sistema de banco de dados basicamente apenas um sistema

computadorizado de manuteno de registros. O banco de dados por si s, pode ser considerado como equivalente eletrnico de um armrio de arquivamento; ou seja, ele um repositrio ou recipiente para uma coleo de arquivos de dados computadorizados. (DATE, 2004). Os usurios de um sistema podem realizar (ou melhor, solicitar que o sistema realize) diversas operaes envolvendo tais arquivos por exemplo: Acrescentar novos arquivos ao banco de dados; Inserir dados em arquivos existentes; Buscar dados de arquivos existentes; Excluir dados de arquivos existentes; Alterar dados em arquivos existentes; Remover arquivos existentes do banco de dados. A figura 1.3 uma imagem simplificada de um sistema de banco de dados. Como a figura mostra, tal sistema mostra quatro componentes principais: dados, hardware, software e usurios.

Figura 4 Representao simplificada de um sistema de banco de dados. (Date, 2004)

4.1 Sistema de Banco de Dados A seguir sero abordados os quatro componentes principais do sistema de banco de dados. 4.1.1 Dados Os sistemas de banco de dados agora esto disponveis em mquinas que abrangem desde os pequenos micros at os maiores computadores de grande porte. Os recursos proporcionados por um determinado sistema so, at certo ponto, definidos pelo tamanho e pela potncia da mquina bsica. Os sistemas de grandes mquinas ("grandes sistemas), em particular, tendem a ter usurios mltiplos e os das mquinas pequenas ("pequenos sistemas") a ter usurio nico. Um sistema de usurio nico aquele no qual somente um nico usurio pode operar num certo momento (monousurio); o sistema de usurios mltiplos aquele em que diversos usurios podem operar simultaneamente (multiusurio). Na realidade, a distino irrelevante: Um dos objetivos da maioria dos sistemas de usurios mltiplos precisamente possibilitar a cada usurio individual comportar-se como se estivesse trabalhando com um sistema de usurio nico. Os problemas especiais dos sistemas de usurios mltiplos so essencialmente internos do sistema, no visveis ao usurio. 4.1.2 Hardware O Hardware compe-se dos volumes de armazenamento secundrio discos magnticos nos quais os dados esto armazenados, juntamente com os dispositivos associados de entrada/sada (unidades de disco, nos casos de discos de cabea mvel), dispositivos de controle, canais de entrada/sada, e assim por diante. 4.1.3 Software Entre o banco de dados fsico (isto , os dados fisicamente armazenados) e os usurios do sistema encontra-se o software, o gerenciador do banco de dados (o gerenciador DB) ou, mais comumente, sistema gerenciador de banco de dados (DBMS [conforme iniciais em ingls - N.T.]). Todas as solicitaes dos usurios de acesso ao banco de dados so manipuladas pelo DBMS. Outra funo do DBMS , pois, isolar os usurios do banco de dados dos detalhes a nvel de hardware (como os sistemas de linguagens de programao protegem os programadores de aplicao dos detalhes a nvel de hardware). Em outras palavras, o DBMS faz com que os usurios tenham uma viso do banco de dados acima do nvel do

hardware, e suporta as operaes do usurio (como as operaes em SQL) que so expressas em termos daquela viso a nvel mais elevado. 4.1.4 Usurios Consideramos trs grandes classes gerais (e um tanto superpostas) de usurios. Primeiramente temos o programador de aplicaes, responsvel pela definio dos programas de aplicao que utilizam o banco de dados, caracteristicamente em linguagem como COBOL, C++, PL/I ou outra linguagem mais moderna. Estes programas operam com os dados de todas as formas usuais: recuperao de informaes, criao de novas informaes, anulao ou alterao de informaes existentes. Os programas em si podem ser de aplicaes convencionais em batch (lotes) ou ento podem ser aplicaes online, cuja funo suportar um usurio final (vide abaixo) que se comunica com o banco de dados a partir de um terminal on-line. A segunda classe de usurios o usurio-final, que interage com o sistema a partir de um terminal on-line. Certo usurio final pode ter acesso ao banco de dados por meio de uma das aplicaes online, ou usar a interface fornecida como parte integrante do sistema. Tais interfaces tambm so fornecidas atravs de aplicaes on-line, mas essas aplicaes so embutidas e no definidas para o usurio. A maioria dos sistemas fornece pelo menos uma aplicao embutida, a saber, um processador de linguagem de consulta interativo, pelo qual o usurio capaz de emitir comandos ou instrues de alto nvel (como SELECT, INSERT etc.) ao DBMS. A linguagem SQL, j mencionada diversas vezes, considerada um exemplo tpico de linguagem de consulta de banco de dados. As interfaces acionadas por comando (i.e., linguagens de consulta), necessitam de uma certa experincia em processamento de dados, embora no muito grande (obviamente no tanto quanto seria necessrio para definir um programa de aplicao em COBOL ou PL/I). A terceira classe de usurios o administrador do banco de dados ou DBA

(Data Base Administrator). Tem a funo de tomar as decises estratgicas e de normas com relao aos dados da empresa, ou seja, fornece suporte tcnico necessrio para implementar decises. Assim, o DBA responsvel para controle geral do sistema em um nvel tcnico. (vide Livro: Introduo a Sistemas de Banco de Dados, DATE, C. J.; 8 ed. Pag.35 a 37) 4.2 Abordagem de Base de Dados x Processamento Tradicional de Arquivos A tabela abaixo traz as principais caractersticas que diferem um sistema desenvolvido na perspectiva de banco de dados versus um desenvolvimento pelo tradicional gerenciamento de arquivos.

Processamento tradicional de Arquivos Definio dos dados parte do cdigo de programas de aplicao Dependncia entre aplicao especfica e dados

Base de Dados

Vantagens da Base de Dados Eliminao de redundncias

Meta Dados Capaz de permitir diversas aplicaes Independncia entre dados e programas

Eliminao de redundncias

Facilidade de manuteno

Representao de dados ao nvel fsico Cada viso implementada por mdulos especficos

Representao conceitual atravs de dados e programas Permite mltiplas vises

Facilidade de manuteno Facilidade de consultas

5. CONCEITOS E ARQUITETURA DE BANCOS DE DADOS. Atualmente, devem-se considerar alguns aspectos relevantes para atingir a eficincia e a eficcia dos sistemas informatizados desenvolvidos, a fim de atender seus usurios nos mais variados domnios de aplicao: automao de escritrios, sistemas de apoio a decises, controle de reserva de recursos, controle e planejamento de produo, alocao e estoque de recursos, entre outros. Tais aspectos so: a) Os projetos Lgico e Funcional do Banco de Dados devem ser capazes de prever o volume de informaes armazenadas a curto, mdio e longo prazo. b) Deve-se ter generalidade e alto grau de abstrao de dados, possibilitando confiabilidade e eficincia no armazenamento dos dados e permitindo a utilizao de diferentes tipos de gerenciadores de dados atravs de linguagens de consultas padronizadas. c) Projeto de uma interface gil e com uma "rampa ascendente" para propiciar aprendizado suave ao usurio, no intuito de minimizar o esforo cognitivo. d) Implementao de um projeto de interface compatvel com mltiplas plataformas (UNIX,Windows NT, Windows Workgroup, etc). e) Independncia de Implementao da Interface em relao aos SGBDs que daro condies s operaes de armazenamento de informaes (ORACLE, SYSBASE, INFORMIX, PADRO XBASE, etc). f) Converso e mapeamento da diferena semntica entre os paradigmas utilizados no desenvolvimento de interfaces (Imperativo (ou procedural), Orientado a Objeto, Orientado a evento), servidores de dados (Relacional) e programao dos aplicativos (Imperativo, Orientado a Objetos).

5.1 Arquiteturas As primeiras arquiteturas usavam mainframes para executar o processamento principal e de todas as funes do sistema, incluindo os programas aplicativos, programas de interface com o usurio, bem como a funcionalidade dos SGBDs. Esta a razo pela qual a maioria dos usurios fazia acesso aos sistemas via terminais que no possuam poder de processamento, apenas a capacidade de visualizao. Todos os processamentos eram feitos remotamente, apenas as informaes a serem visualizadas e os controles eram enviados do mainframe para os terminais de visualizao, conectados a ele por redes de comunicao. Como os preos do hardware foram decrescendo, muitos usurios trocaram seus terminais por computadores pessoais (PC) e estaes de trabalho. No comeo os SGBDs usavam esses computadores da mesma maneira que usavam os terminais, ou seja, o SGBD era centralizado e toda sua funcionalidade, execuo de programas aplicativos e processamento da interface do usurio eram executados em apenas uma mquina. Gradualmente, os SGBDs comearam a explorar a disponibilidade do poder de processamento no lado do usurio, o que levou arquitetura cliente-servidor. A arquitetura cliente-servidor foi desenvolvida para dividir ambientes de computao onde um grande nmero de PCs, estaes de trabalho, servidores de arquivos, impressoras, servidores de banco de dados e outros equipamentos so conectados juntos por uma rede. A ideia definir servidores especializados, tais como servidor de arquivos, que mantm os arquivos de mquinas clientes, ou servidores de impresso que podem estar conectados a vrias impressoras; assim, quando se desejar imprimir algo, todas as requisies de impresso so enviadas a este servidor. Esta arquitetura se tornou muito popular por algumas razes. Primeiro, a facilidade de implementao dada a clara separao das funcionalidades e dos servidores. Segundo, um servidor inteligentemente utilizado porque as tarefas mais simples so delegadas s mquinas clientes mais baratas. Terceiro, o usurio pode executar uma interface grfica que lhe familiar, ao invs de usar a interface do servidor. Desta maneira, a arquitetura cliente-servidor foi incorporada aos SGBDs comerciais. Diferentes tcnicas foram propostas para se implementar essa arquitetura, sendo que a mais adotada pelos Sistemas Gerenciadores de Banco de Dados Relacionais (SGBDRs) comerciais a incluso da funcionalidade de um SGBD centralizado no lado

do servidor. As consultas e a funcionalidade transacional permanecem no servidor, sendo que este chamado de servidor de consulta ou servidor de transao. assim que um servidor SQL fornecido aos clientes. Cada cliente tem que formular suas consultas SQL, prover a interface do usurio e as funes de interface usando uma linguagem de programao. Comumente o servidor SQL tambm chamado de back-end machine e o cliente de front-end machine. Como SQL prov uma linguagem padro para o SGBDRs, esta criou o ponto de diviso lgica entre o cliente e o servidor. Atualmente, existem vrias tendncias para arquitetura de Banco de Dados, nas mais diversas direes. 5.1.1 Resumo das arquiteturas de SGBDs Plataformas centralizadas: Na arquitetura centralizada, existe um computador com grande capacidade de processamento, o qual o hospedeiro do SGBD e emuladores para os vrios aplicativos. Esta arquitetura tem como principal vantagem a de permitir que muitos usurios manipulem grande volume de dados. Sua principal desvantagem est no seu alto custo, pois exige ambiente especial para mainframes e solues centralizadas. Sistemas de Computador Pessoal PC: Os computadores pessoais trabalham em sistema stand-alone, ou seja, fazem seus processamentos sozinhos. No comeo esse processamento era bastante limitado, porm, com a evoluo do hardware, tem-se hoje PCs com grande capacidade de processamento. Eles utilizam o padro Xbase e quando se trata de SGBDs, funcionam como hospedeiros e terminais. Desta maneira, possuem um nico aplicativo a ser executado na mquina. A principal vantagem desta arquitetura a simplicidade. Banco de Dados Cliente-Servidor: Na arquitetura Cliente-Servidor, o cliente (front_end) executa as tarefas do aplicativo, ou seja, fornece a interface do usurio (tela, e processamento de entrada e sada). O servidor (back_end) executa as consultas no DBMS e retorna os resultados ao cliente. Apesar de ser uma arquitetura bastante popular, so necessrias solues sofisticadas de software que possibilitem: o tratamento de transaes, as confirmaes de transaes (commits), desfazer transaes (rollbacks), linguagens de consultas (stored procedures) e gatilhos (triggers). A principal vantagem desta arquitetura a diviso do processamento entre dois sistemas, o que reduz o trfego de dados na rede. Banco de Dados Distribudos (N camadas): Nesta arquitetura, a informao est distribuda em diversos servidores. Como exemplo, observe a Figura 16 (abaixo), cada

servidor atua como no sistema cliente-servidor, porm as consultas oriundas dos aplicativos so feitas para qualquer servidor indistintamente. Caso a informao solicitada seja mantida por outro servidor ou servidores, o sistema encarrega-se de obter a informao necessria, de maneira transparente para o aplicativo, que passa a atuar consultando a rede, independente de conhecer seus servidores. Exemplos tpicos so as bases de dados corporativas, em que o volume de informao muito grande e, por isso, deve ser distribudo em diversos servidores. Porm, no dependente de aspectos lgicos de carga de acesso aos dados, ou base de dados fracamente acopladas, em que uma informao solicitada vai sendo coletada numa propagao da consulta numa cadeia de servidores. A caracterstica bsica a existncia de diversos programas aplicativos consultando a rede para acessar os dados necessrios, porm, sem o conhecimento explcito de quais servidores dispem desses dados.

Figura 5 Modelo Orientado a Objetos

6. SISTEMAS GERENCIADORES DE BANCO DE DADOS. Sistemas de gerncia de banco de dados (SGBD) surgiram no incio da dcada de 70 com o objetivo de facilitar a programao de aplicaes de banco de dados (BD). Os primeiros sistemas eram caros e difceis de usar, requerendo especialistas treinados para usar o SGBD especfico. Um sistema de gerenciamento de banco de dados (SGBD) um software que possui recursos capazes de manipular as informaes do banco de dados e interagir com o usurio. Exemplos de SGBDs so: Oracle, SQL Server, DB2, PostgreSQL, MySQL, o prprio Access ou Paradox, entre outros.

O Sistema de Gesto de Bases de Dados gere toda a informao contida na base de dados e constitui o interface entre a informao e os utilizadores, quer sejam utilizadores finais quer sejam programadores.

Figura 6 Interface entre utilizador e a base de dados

Inicialmente as aplicaes informticas destinadas a gerir os sistemas de informao das organizaes (empresas, administrao pblica, etc...), tinham uma caracterstica: os dados eram dependentes dos programas de aplicao que os geravam e manipulavam. Esta caracterstica logo revelou os seus problemas: Limitao por parte dos utilizadores s estruturas de dados definidas pelos programadores; A alterao da estrutura da informao, como por exemplo, incluir ou retirar campos num ficheiro de base de dados, implicava que os programadores tivessem de alterar os programas de aplicao que operavam sobre estes dados; A dependncia dos dados relativamente s aplicaes implicava que a alterao das estruturas de dados levava quase sempre a uma reintroduo dos dados visto ser necessrios adapt-los aos novos programas e novos formatos definidos; Numa mesma organizao, a informao encontrava-se repartida e repetida em diversos locais, pois cada departamento criava os seus programas de aplicao de forma autnoma e de acordo com as suas necessidades. Este fato originava a duplicao de informao perfeitamente desnecessria.

Figura 7 Dependncia dos sistemas de aplicao

Desta forma, tomou-se evidente a necessidade de criar programas ou sistemas de bases de dados capazes de gerir a informao de uma forma mais flexvel, em que os dados pudessem ser separados e organizados de forma independente em relao aos programas de aplicao. E assim, surgiram os Sistemas de Gesto de Bases de Dados (SGBD). Os SGBD so programas ou conjuntos integrados de programas que permitem criar e manipular bases de dados, em que os dados so estruturados com independncia relativamente aos programas de aplicao que os manipulam. A independncia dos dados num SGBD significa que possvel alterar a estrutura dos dados de uma base de dados, quer ao nvel fsico quer ao nvel conceptual, sem que isso implique a necessidade de reformular as aplicaes que operam com os dados.

Figura 8 Independncia dos programas de aplicao

O SGBD atual fornece empresa um meio slido de armazenamento da informao, suficientemente flexvel para acompanhar as novas tecnologias, e sobretudo generaliza o acesso informao, permitindo que qualquer utilizador atravs de procedimentos simples compile a informao que deseja. O desenvolvimento de sistemas de informao ocorre hoje quase que exclusivamente sobre banco de dados, com uso de SGBD relacional. Alm do SGBD relacional, as pesquisas na rea de BD resultaram tambm em um conjunto de tcnicas, processos e notaes para o projeto de BD. 6.1 Projeto de Banco de Dados O projeto de BD, que inicialmente era feito com tcnicas empricas por alguns poucos especialistas no SGBD especfico, executado hoje com auxilio de tcnicas padronizadas e suportadas por ferramentas CASE. O projeto de um banco de dados usualmente ocorre em trs etapas. A primeira etapa a modelagem conceitual, a segunda etapa o projeto lgico e a terceira etapa o projeto fsico. A seguir, essas etapas sero descritas:

Figura 9 Etapas de um projeto de banco de dados

6.1.1 Modelo conceitual: procura capturar formalmente os requisitos de informao de um banco de dados. Um modelo conceitual uma descrio do banco de dados de forma independente de implementao em um SGBD. O modelo conceitual registra que dados podem aparecer no banco de dados, mas no registra como estes dados esto armazenados a nvel de SGBD. A tcnica mais difundida de modelagem conceitual a abordagem entidade relacionamento (ER). Nesta tcnica, um modelo conceitual usualmente representado atravs de um diagrama, chamado diagrama entidade-relacionamento (DER).

Figura 10 Exemplo de modelo conceitual

6.1.2 Modelo Lgico, objetiva definir, a nvel de SGBD, as estruturas de dados que implementaro os requisitos identificados na modelagem conceitual. Um modelo lgico uma descrio de um banco de dados no nvel de abstrao visto pelo usurio do SGBD. Assim, o modelo lgico dependente do tipo particular de SGBD que est sendo usado. Abaixo apresentado o modelo lgico (de forma textual). TipoDeProduto(CodTipoProd,DescrTipoProd) Produto(CodProd,DescrProd,PrecoProd,CodTipoProd) CodTipoProd referencia TipoDeProduto

Figura 11 Exemplo de Projeto lgico

6.1.3 Projeto fsico, define parmetros fsicos de acesso ao BD, procurando otimizar a performance do sistema como um todo. O projeto fsico inicia-se a partir do esquema lgico e resulta no esquema fsico. Um esquema fsico uma descrio da implementao do bando de dados e direcionado para um SGBD especfico. Decises tomadas nessa fase para melhorar o desempenho podem alterar o esquema lgico. Uma vez que o projeto fsico completado, os esquemas lgico e fsico so expressos usando linguagem de definio de dados do SGBD adotado. O banco de dados criado e populado e pode ser testado para se tornar operacional. 6.2. Funes do SGBD O Sistema de Gerenciamento de Banco de Dados tem como principais funes: a) Controle de Redundncia: em um sistema tradicional de controle de arquivos cada usurio normalmente apresenta seus prprios arquivos armazenando o conjunto de dados que de seu interesse, e nestes casos comum ocorrer redundncia de dados. Esta redundncia consiste no armazenamento de uma mesma informao em locais diferentes, o que pode provocar srios problemas. Alguns destes problemas consistem inicialmente no aumento dos esforos computacionais para realizar a atualizao destes dados e tambm o aumento do espao necessrio para o armazenamento dos dados. Mas o problema mais srio que a representao dos dados desta forma pode tornar-se inconsistente, pois duas informaes podem aparecer em locais distintos, mas apresentando valores diferentes. Em um sistema de BD as informaes s se encontram armazenadas em um nico local ou esto existindo duplicao controlada dos dados. b) Compartilhamento dos Dados: o SGBD deve incluir um software para o controle de concorrncia ao acesso dos dados em um ambiente multiusurio, de forma a

possibilitar o compartilhamento dos dados, garantindo que se vrios usurios tentar realizar operaes de atualizao sobre um mesmo conjunto de dados, o resultado destas operaes possa ser correto. Outro mecanismo que suporta a noo de compartilhamento de dados consiste na facilidade para definir vises de usurio, o qual torna disponvel uma poro especfica dos dados do BD de acordo com o seu interesse. c) Controle de Acesso: quando vrios usurios compartilham os dados, comum que alguns no apresentem autorizao para acesso a todo o BD. Alm disso, alguns usurios podem apresentar a autorizao para apenas leitura dos dados, sendo impedido a este de realizar qualquer modificao no BD. O SGBD deve fornecer servios que permitam ao DBA definir os nveis de segurana e de autorizao para os usurios do BD. d) Controle de Transaes: uma transao um conjunto de operaes sobre o BD que devem ser executados integralmente e sem falhas ou interrupes. O SGBD deve realizar o controle das transaes para que sejam executadas com segurana. e) Possibilidade de Mltiplas Interfaces: vrios usurios representam tambm necessidades diversas no que refere aos tipos de interfaces fornecidas pelo SGBD. Interfaces para consultas de dados, programao, e interfaces baseadas em menus ou em linguagem natural so exemplos de alguns tipos que podem estar disponveis. f) Reforar Restries de Integridade: a maioria dos aplicativos apresenta servios que possibilitam garantir a integridade dos dados no BD. A restrio de integridade mais simples consiste na especificao do padro de formato para os dados ou valores assumidos como default. g) Providenciar Backup e Recuperao de Dados: o SGBD deve apresentar facilidades para recuperao de falhas provocadas pelo hardware ou pelo software. h) Independncia de Dados: o SGBD possibilita o desenvolvimento de programas aplicativos que no possuem a descrio real de como os dados (arquivos) esto fisicamente armazenados. Desta forma, alteraes nas estruturas dos arquivos do BD no afetam os programas aplicativos. Pode-se apresentar dois tipos de independncia de dados: 1. Independncia Lgica dos Dados: consiste na capacidade de alterar o esquema conceitual sem provocar modificaes nos esquemas externos ou nos programas aplicativos. 2. Independncia Fsica dos Dados: consiste na capacidade de alterar o esquema interno sem provocar modificaes no esquema conceitual.

Apesar de todas as vantagens citadas anteriormente sobre um SGBD, h situaes em que deve-se ponderar sobre sua utilizao, como por exemplo, o alto investimento inicial e possibilidade de compra de um novo hardware; ou a possibilidade de insatisfao no desempenho geral do sistema que pode ser provocado pelas funes de segurana, controle de concorrncia, recuperao e manuteno de integridade dos dados. Para que um SGBD possa fornecer as caractersticas de independncia de dados, suporte a mltiplas vises de vrios usurios, entre outras, torna-se necessrio a existncia de uma organizao no sistema para que isto seja possvel. 6.3 - Dicionrio de Dados Bons SGBDs normalmente apoiam a incluso de descries textuais sobre cada um dos arquivos do BD, como tambm de cada usurio e programas aplicativos que so utilizados. Estas informaes so includas no Dicionrio de Dados para servirem de apoio aos novos projetistas ou programadores que possam ser colocados no grupo de trabalho, e deste modo, facilitar o entendimento dos ambientes que est sendo utilizado. Outros documentos de apoio, como por exemplo, os textos sobre a especificao e a anlise das necessidades dos usurios so valiosos e devem ser guardados, contudo so informaes externas ao BD. Exemplo de Dicionrio de Dados para uma tabela denominada Cliente:

Figura 12 Dicionrio de Dados da tabela Cliente

6.4 Engenharia de Banco de Dados Na informatizao de um minimundo com a utilizao de um BD, deve-se primeiramente preocupar-se com a escolha do SBGD que ser utilizado. De nada servir

uma Engenharia de BD bem realizada se o gerenciador oferecer restries inaceitveis como, por exemplo, baixa capacidade de armazenamento. As mquinas utilizadas e a arquitetura do Sistema de Informaes (Centralizada, Distribuda ou Cliente/Servidor) tambm so elementos de igual importncia. A Engenharia de Banco de Dados (ou Projeto de Banco de Dados, como mais conhecido) um dos temas mais discutidos e estudados nesta rea. A razo forte, uma engenharia incorreta pode resultar em um SBD que no atende as necessidades dos seus usurios. A maior habilidade exigida para os especialistas em Engenharia de BD saber recolher informaes a partir da vivncia com o mini-mundo, tambm extrair dos usurios por meio de entrevistas e reunies o que desejam do BD e estruturar todas estas informaes de modo a se tornarem concretamente um BD. A grande maioria dos Bancos de Dados existente foi projetada manualmente por especialistas que usaram seus conhecimentos e experincias no processo. Todavia, com o crescimento da complexidade dos BD's ("Very Large Databases") e o estabelecimento de regras bem definidas para algumas fases da Engenharia de BD, sugiram ferramentas de apoio ("Automated Design Tools") que auxiliam nas diversas etapas do processo. Entre as vantagens podemos citar a rapidez na realizao da Engenharia, uma vez que estas ferramentas oferecem uma interface amigvel que orienta os projetistas nas decises mais difceis e realiza verificaes seguras dos resultados intermedirios. A tecnologia dos Sistemas Especialistas (SE) em conjunto com as ferramentas CASE ("Computer-Assisted Software Engineering") tem colaborado nesta atividade, evitando-se desperdcios de tempo, frustraes e melhorando os resultados de um processo extremamente crtico e delicado tanto para os projetistas quanto para os usurios. Uma boa engenharia de BD compreende resumidamente os seguintes passos:

Estabelecer o objetivo 1. Buscar definir o objetivo do sistema, benefcios que o sistema trar para o minimundo, estabelecer restries gerais de desempenho, custos e restries tcnicas; Organizao p/ o Trabalho 2. Definir a(s) equipe(s) de trabalho e sua estrutura levando-se em considerao as habilidades de cada indivduo e sua disponibilidade, recursos

necessrios (descrio e disponibilidades), cronograma de atividades de acordo com as disponibilidades estabelecidas. Uma equipe pode ser estruturada em : Convencional: composta pelo pessoal disponvel; cada pessoa

responsvel pelo seu sub-projeto e respectiva implementao; No Egocntrica: A liderana no exercida por uma determinada pessoa de forma permanente; A liderana fica com o indivduo que tiver maior capacitao para resolver o problema em pauta. Projetista Chefe: Pequeno nmero de integrantes; Comunicaes

centralizadas no projetista chefe; Decises tomadas nos nveis mais elevados. Hierrquica: lder de projeto dirige analistas experientes; cada um desses analistas dirige um grupo de analistas menos experientes; comunicao descentralizada nos subgrupos e centralizada nos nveis superiores. Coleta de dados: Coletar todos os tipos de informaes que sero precisos armazenar. Pensar sobre os relatrios e/ou formulrios que possam ser desejados. Para esta fase necessrio conhecer profundamente o mini-mundo a isto pode requerer algum tempo a ser utilizado com reunies e entrevistas com os futuros usurios. A experincia (sabedoria) nesta etapa fundamental. No deve ser realizada por 3. uma nica pessoa, mas por um grupo de projetistas. O levantamento dos dados necessrios , basicamente, feito atravs da observao e das entrevistas. Por meio da observaes o analista utiliza sua habilidade e sua sensibilidade na constatao de ocorrncias que devam ser computadas na anlise, como tambm verifica a veracidade ou no dos dados fornecidos pelos entrevistados. Nas entrevistas o analista aplica os questionrios, anotando as respostas obtidas para posterior anlise. Anlise e especificao: O grupo de projetistas deve ponderar sobre todas as informaes obtidas e gerar documentos que especifiquem as necessidades dos usurios. Caso perceba4. se a falta de alguma informao deve retornar a fase anterior (coleta). Anlise dos dados levantados, por meio dos questionrios e da observao do analista, a fase mais importante de todo o processo para se chegar ao diagnstico propriamente dito. quando o analista utiliza realmente todo o seu

conhecimento e sua habilidade. Projeto conceitual: Atravs de uma ferramenta conceitual (modelo de dados a nvel conceitual) um grupo de especialistas repassa a especificao textual em um diagrama ou 5. outras forma de linguagem que descreve com clareza as necessidades dos usurios, isto chamado modelagem. O objetivo desta fase melhor organizar as idias passadas pela fase anterior (Anlise e Especificao) e perceber alguma falta de informaes neste caso necessrio retornar; Projeto Lgico: Atravs de uma ferramenta lgica (modelo de dados a nvel lgico) um grupo de especialistas repassa a especificao conceitual em lgica atravs de um 6. diagrama ou outra linguagem, isto chamado mapeamento. Com esta fase obtmse a definio lgica dos arquivos de dados. Especificao lgica depende do SGBD que ser utilizado, pois as estruturas dos arquivos devem ser compatveis com o gerenciador utilizado; Projeto Fsico: 7. Atravs de conhecimentos coletados nos requisitos, com relao a frequncia e forma de utilizao dos dados, estabelece-se a organizao mais adequada para os arquivos e os mtodos de indexao mais eficientes. Implantao: 8. Tendo a especificao dos arquivos pode-se implanta-los, atravs da linguagem DDL, para formarem um BD; Verificao e Validao: 9. Os testes so realizados medindo a satisfao dos usurios em termos de velocidade e o padro com que os dados so apresentados;

Acompanhamento da Qualidade: 10. o DBA deve permanecer atendo a mudanas de requisitos de modo a perceber alteraes nas especificaes anteriormente corretas;

Manuteno: A insatisfao de um usurio ou mesmo modificao no minimundo (expanso 11. da empresa, etc) pode exigir pequenas alteraes na estrutura do BD. Mudanas drsticas como, por exemplo, modificaes no organograma de uma empresa podem exigir um trabalho maior na reestruturao do BD.

A similaridade do processo de Engenharia de BD com a Engenharia de Software no coincidncia. Na verdade pode-se dizer que ambas so complementares, uma vez que na Engenharia de Software necessria a criao dos arquivos de dados (BD) a na Engenharia de BD necessria a criao dos programas aplicativos (software) que iro operar o Banco de Dados. (Vide Nota Didtica: Sistemas de Banco de Dados, Prof. Dr. Luiz Camolesi Jr., 2003)

7. MODELOS DE DADOS. Um Modelo de Dados um conjunto de conceitos utilizados para descrever a estrutura de um BD a nvel conceitual, lgico ou fsico. Os modelos apresentam um conjunto de operaes para a especificao e manipulaes dos dados do BD. So usados na descrio dos dados no nvel lgico. Em contraste com modelos conceituais, esses modelos so usados para especificar tanto a estrutura lgica global do BD como uma descrio em alto nvel da implementao. O Modelo de dados refere-se descrio formal da estrutura de um banco de dados. A seguir sero abordados os principais modelos de dados. 7.1 Sistema de Gerenciamento de Arquivos (FMS File Management system). Foi a primeira forma utilizada para armazenamento de dados. Baseia-se no armazenamento dos dados de forma sequencial em um nico arquivo. Apresenta como vantagem a simplicidade na forma em que os dados so estruturados no arquivo. No entanto, esse sistema no apresenta relao entre os dados, nem mecanismos de busca, classificao e recursos para evitar problemas de integridade. 7.2 Modelo Hierrquico (HDS Hierarquical Database System) Surgiu na dcada de 1960 com a primeira linguagem de banco de dados e foi o primeiro a ser reconhecido como um modelo de dados. O relacionamento entre um registro-pai e vrios registros-filhos possui

cardinalidade 1:N. Os dados organizados segundo este modelo podem ser acessados

segundo uma sequncia hierrquica com uma navegao do topo para as folhas e da esquerda para a direita. Um registro pode estar associado a vrios registros diferentes, desde que seja replicado. A replicao possui duas grandes desvantagens: pode causar inconsistncia de dados quando houver atualizao e o desperdcio de espao inevitvel. Um diagrama de estrutura de rvore descreve o esquema de um banco de dados hierrquico. Tal diagrama consiste em dois componentes bsicos: Caixas, as quais correspondem aos tipos de registros e Linhas, que correspondem s ligaes entre os tipos de registros. Como exemplo do modelo hierrquico, considere a Figura 13 abaixo.

Figura 13 Diagrama em estrutura de rvore

7.3 Modelo Em Rede (NDS - Network Database System) Definidos pelo DBTG (DataBase Task Group) do comit do CODASYL (Conference on Data Systems Language) a partir de 1971. Esse modelo uma extenso do modelo hierrquico. Os registros so organizados no banco de dados por um conjunto arbitrrio de grficos. Em outras palavras, um filho pode ter mais de um pai. Esta metodologia torna a pesquisa mais rpida e mais flexvel, pois no depende de um nico n raiz como vetor de inicializao de pesquisa. Entretanto, o modelo em rede ainda apresenta os mesmos problemas com relao ao projeto de estrutura do modelo hierrquico. Qualquer alterao feita em uma classe de dados implica na criao de uma nova estrutura para suportar aquela alterao. O diagrama para representar os conceitos do modelo em redes consiste em dois componentes bsicos: Caixas, que correspondem aos registros e Linhas, que correspondem s associaes. A Figura 14 ilustra um exemplo de diagrama do modelo em rede.

Figura 14 Modelo em Rede

7.4 Modelo Relacional (Relational Model) Foi apresentado por Edgard F. Codd (IBM) em seu artigo A Relational Model of Data for Large Shared Data Banks (1970).. Este modelo surgiu devido s seguintes necessidades: a) aumentar a independncia de dados nos sistemas gerenciadores de banco de dados; b) prover um conjunto de funes apoiadas em lgebra relacional para armazenamento e recuperao de dados; c) permitir processamento dedicado exclusivo. O objetivo do modelo representar os dados de forma mais simples, atravs de um de conjuntos de tabelas inter-relacionadas. Este modelo abandona os conceitos anteriores, tornando os bancos de dados mais flexveis, tanto na forma de representar as relaes entre os dados, como na tarefa de modificao de sua estrutura, sem ter que reconstruir todo o banco de dados. Os primeiros produtos relacionais comearam a aparecer no final da dcada de 1970. Hoje a maioria dos sistemas de banco de dados relacional, como por exemplo: IBM: DB2, Microsoft: SQL Server, Oracle (9i, 10g, 11g), MySQL, PostgreSQL. A principal linguagem de manipulao de dados em sistemas de bancos de dados relacionais o SQL (Structured Query Language).

Figura 15 Modelo Relacional

7.5 Modelo Orientado a Objetos Surgiu em meados de 1980 para armazenamento de dados complexos, no adequados aos sistemas relacionais. Exemplos: GIS (Geographical Information System) e CAD/CAM/CAE. O modelo de banco de dados orientado a objetos baseado nos conceitos de orientao a objetos j difundidos em linguagens de programao como o SmallTalk e o C++. Seu objetivo principal tratar os tipos de dados complexos como um tipo abstrato (objeto). A filosofia do modelo de dados orientado a objetos consiste em agrupar os dados e o cdigo que manipula estes dados em um nico objeto, estruturando-os de forma que possam ser agrupados em classes. Isso significa que os objetos de banco de dados agrupados podem usar o mesmo mecanismo de herana para definir superclasses e subclasses de objetos, criando assim hierarquias. Quando os bancos de dados orientados a objetos foram introduzidos, algumas das falhas perceptveis do modelo relacional pareceram ter sido solucionadas e acreditava-se que tais bancos de dados ganhariam grande parcela do mercado. Hoje, porm, acredita-se que os bancos de dados orientados a objetos sero usados em aplicaes especializadas, enquanto os sistemas relacionais continuaro a sustentar os negcios tradicionais, onde as estruturas de dados baseadas em relaes so suficientes. A figura 14 representa o diagrama deste modelo.

Figura 16 Modelo Orientado a Objetos

8. MODELO ENTIDADE - RELACIONAMENTO. O Modelo Entidade-Relacionamento (MER) foi originalmente criado pelo norteamericano Peter Pin-Shan Chen enquanto trabalhava no Massachusetts Institute of Technology. O MER foi colocado para conhecimento pblico durante a conferncia internacional VI_DB no ano de 1975. Segundo seu criador, o MER uma poderosa ferramenta de apoio ao projeto conceitual de Bancos de Dados propiciando uma viso

mais natural a consistente do mundo real atravs do uso de conceitos simples, porm de grande representatividade. O principal motivo do grande sucesso da MER durante todos estes anos em que foi utilizado nas universidades como ponto de partida para diversas pesquisas e estudos, e nas empresas como instrumento para a organizao de suas informaes, foi a facilidade com que pode ser utilizado e a clareza com que apresenta seus resultados. Devido a sua grande importncia, muitos trabalhos propuseram extenses do modelo para que se torna-se mais preciso na representao do mundo real. A incluso destes novos conceitos pode rebatizar o modelo como MER*. Atualmente continuam sendo estudadas novas propostas de extenso. Para isso, so realizadas periodicamente (Frana 1986, EUA 1987, Itlia 1988 a outras) conferncias com esta finalidade especfica. O MER um modelo de dados conceitual de alto-nvel, ou seja, seus conceitos foram projetados para serem compreensveis a usurios, descartando detalhes de como os dados so armazenados. Atualmente, o MER usado principalmente durante o processo de projeto da base de dados. Existem expectativas para que uma classe de SGBDs baseados diretamente no MER esteja disponvel no futuro. O tipo de banco de dados que estudaremos o banco de dados relacional por ser o mais usado na atualidade. O objetivo de um banco de dados relacional armazenar um grupo de objetos em um dicionrio de dados, de forma a se tornar rpida e segura a manipulao das informaes contidas nesses objetos. A abordagem relacional e a utilizao de conceitos de entidade e relacionamento para recriar as estruturas que iro compor o banco de dados. importante criar uma representao grfica que permita identificar as entidades do sistema e seus relacionamentos. A essa representao grfica damos o nome de Modelo de Dados. essencial planejar o banco de dados antes de implementar. Um dos mtodos que voc pode utilizar o DER (Diagrama Entidade Relacionamento), como no exemplo mostrado logo abaixo:

Figura 17 Exemplo do DER de uma Empresa

O modelo de dados a base para a construo de toda a aplicao em uma empresa. Ele ser composto de Entidades e Relacionamentos, dai o fato de ser conhecido como Modelo Entidade-Relacionamento ( MER ). O objetivo da modelagem de dados desenvolver modelos que, contendo entidades e seus relacionamentos, sejam capazes de representar os requisitos das informaes do negocio. Muito bem, mas o que Entidade? Tabela? Registros ou Tuplas? Campos ou Atributos? Vamos ver a partir de agora os conceitos que iro nortear nossos estudos de banco de dados relacionais. 8.1 Composio de um Banco de Dados Relacional O modelo relacional constitudo de trs partes: Estruturas de dados chamadas tabelas; Regras de Integridade para valores permitidos nas tabelas; Operadores de manipulao de dados da lgebra relacional. O Modelo de Dados relacional tem por finalidade representar os dados atravs de um conjunto de relaes, tambm chamadas de Tabelas. Uma tabela exatamente o que o nome sugere uma tabela de valores. Cada coluna em uma tabela tem um nome diferente e contm dados diferentes. As colunas tambm so chamadas de Atributos e cada uma possui um tipo de dado associado.

As linhas, tambm chamadas de Tuplas, consistem em conjuntos de valores individuais que correspondem s colunas. Devido ao formato tabular, todas as linhas

em uma coluna possuem o mesmo tipo de dado da coluna. O conjunto dos valores passveis de serem assumidos por um atributo chamado de Domnio.

8.1.1 Tabelas (relaes ou entidades) Uma tabela um conjunto no ordenado de linhas (tuplas). Cada linha composta por uma srie de campos (atributo). Cada campo identificado por um nome de campo (nome de atributo). O conjunto de campos homnimos de todas linhas de uma tabela formam uma coluna. Uma tabela uma simples estrutura de linhas (tuplas) e colunas (atributos), onde cada linha contm um mesmo conjunto de colunas, e estas linhas devem seguir a ordem que foi especificada pelo projetista do banco de dados, alm do mais, o tipo de dado que especifica o tipo dos valores que podem aparecer em uma coluna chamado de domnio. Observe o Exemplo:

Figura 18 Tabela em um BDR

Figura 19 Tabela Empregados

As tabelas associam-se entre si atravs de regras de relacionamentos, que consistem em associar um atributo de uma tabela com um conjunto de registros de outra tabela.

Figura 20 Tabelas e relaes

Na figura, percebe-se que o atributo codAlun da tabela Emprstimo faz referncia ao aluno que possui o cdigo 1 na tabela Aluno, ou seja, cria uma associao com este registro da tabela. Um banco de dados composto por diversas tabelas, como por exemplo: Clientes, Produtos, Pedidos, Detalhes do Pedido, etc. Embora as informaes estejam separadas em cada uma das Tabelas, na prtica devem existir relacionamentos entre as tabelas. Digamos que: Um Pedido feito por um Cliente e neste Pedido podem existir diversos itens, itens que so gravados na tabela Detalhes do Pedido. Alm disso cada Pedido possui um nmero nico (Cdigo do pedido), mas um mesmo Cliente pode fazer diversos pedidos e assim por diante. 8.1.2 Registros ou Tuplas As linhas, comumente chamadas de registros ou tuplas, representam registros diferentes em uma tabela, e por causa do formato tabular, todas elas tm os mesmos atributos (DIAS, 2008). 8.1.3 Colunas (Campos ou atributos) As colunas de uma tabela so tambm chamadas de Atributos. Ao conjunto de valores que um atributo pode assumir chamamos de domnio. Por exemplo: Em um campo do tipo numrico de tamanho dois, sero somente armazenados nmeros com um valor mximo 99.

8.1.4 Caractersticas de Entidade e Atributos Uma Entidade pode ser definida como qualquer coisa do mundo real , abstrata ou concreta , na qual se deseja guardar informaes. Exemplos de entidades : Cliente , Produto , Contrato , Vendas , etc.

Um atributo tudo o que se pode relacionar como propriedade da entidade. (coluna , campo , etc,..). Exemplos de atributos : Cdigo do Produto (Entidade Produto) , Nome do Cliente (Entidade Cliente).

Figura 21 Tabela Projeto

Figura 22 Tabela Compania

Ex: A entidade EMPREGADO e1 tem quatro atributos: Nome, Endereo, Idade e Telefone residencial. Os seus valores so: Joo da Silva, Rua Gois 711, So Paulo, SP, 1301100, 55 e 713-749, respectivamente. A entidade COMPANHIA c1 tem trs atributos: Nome, Sede e Presidente. Seus valores so: Cooper Sugar, Ribeiro Preto, Joo da Silva.

Figura 23 Entidade empregado

Alguns

atributos

podem

ser

divididos

em

subpartes

com

significados

independentes. Por exemplo, Endereo da entidade e1 pode ser dividido em Endereo da Rua, Cidade, Estado e CEP.

Figura 23 Atributos

8.2 Chaves Chaves so conceitos bsicos utilizados para identificao de linhas e para estabelecer relaes entre linhas de tabelas em banco de dados relacional. Devem-se considerar pelo menos trs tipos de chave em um banco de dados relacional, que sero explicitadas a seguir: Chave Primria, Chave Alternativa e Chave Estrangeira. Aspectos relevantes das Chaves Primrias * A questo fundamental do projeto de chaves reduzir ao mximo os efeitos de

redundncia. * A alterao dos valores de campos constituintes da chave primria ou a remoo

de uma entidade de um conjunto entidade pode ocasionar problemas de integridade 8.2.1 Chave Primria O Conceito de Chave Primria fundamental para o correto entendimento de como funciona um Banco de Dados baseado no modelo. Na figura abaixo, os campos em amarelo representam as Chaves Primrias que diferenciam os registros da tabela.

Figura 24 Tabela Alunos

Identificando uma chave primria 1) NO PODE haver duas ocorrncias de uma mesma entidade com o mesmo contedo na Chave Primria 2) A chave primria no pode ser composta por atributo opcional , ou seja , atributo que aceite nulo. 3) Os atributos identificadores devem ser o conjunto mnimo que pode identificar cada instncia de um entidade. 4) Cada atributo identificador da chave deve possui um tamanho reduzido 5) No deve conter informao voltil. EX: As chaves primrias de cada entidade e relacionamento esto sublinhadas.

Figura 25 Chave Primria

A Chave Primria permite a classificao nica de cada registro de uma tabela. Ex: RG CPF Matrcula Nome do Dependente (Tabela Dependente, abaixo)

Figura 26 Chave Primria

Obs:: Observar que necessrio considerar ambos valores (CdigoEmp e NoDepen) para identificar uma linha na tabela, ou seja para identificar um dependente.

8.2.2 Chave alternativa No modelo relacional uma chave alternativa como uma chave primria, ou seja, uma coluna ou grupo de colunas de uma tabela nos quais os valores so nicos. Desse modo, a chave alternativa constitui-se em uma chave candidata que no foi escolhida para ser a primria, isto , uma tabela pode ter vrias chaves alternativas, mas apenas uma chave primria. As chaves primrias no podem ter valores nulos, ao passo que uma chave alternativa apresenta essa possibilidade, a menos que o usurio defina que o campo no deve ser nulo. Observe o Exemplo:

Figura 27 Campo nulo

Em alguns casos, mais de uma coluna ou combinaes de colunas podem servir para distinguir uma linha das demais; Uma das colunas (ou combinao de colunas) escolhida como chave primria. As demais colunas ou combinaes so denominadas chaves alternativas ou candidatas. Exemplo a seguir:

Figura 28 Chaves

Tanto a coluna CdigoEmp quanto a coluna CPF podem ser usadas para distinguir uma linha das demais. Nesta tabela, como a coluna CdigoEmp foi escolhida como chave primria, diz-se que a coluna CPF uma chave alternativa.

8.2.3 Chave Estrangeira a chave formada atravs de um relacionamento com a chave primria de outra tabela. Define um relacionamento entre as tabelas e pode ocorrer repetidas vezes. Caso a chave primria seja composta na origem, a chave estrangeira tambm o ser. Este tipo de chave ocorre quando um atributo de uma entidade a chave primria de outra entidade. Trata-se de uma coluna, cujo valor aparece necessariamente na chave primria de outra tabela. Este mecanismo que permite a implementao de relacionamentos em um banco de dados relacional. Como se pode observar na figura abaixo, o atributo codEmp da tabela emprstimo e o atributo codPublic da tabela publicao so chaves primrias da tabela itens do emprstimo, formando assim uma chave estrangeira.

Figura 29 Chave Estrangeira

Estes conceitos de atributo chave so muito importantes em um banco de dados relacional, pois permitem identificar e diferenciar um registro (tupla) de outro e tambm acelerar o acesso a elementos por meio da utilizao de ndices estabelecendo relacionamentos entre as mltiplas tabelas de um sistema de banco de dados relacional. Essa viso de dados organizados em tabelas oferece um conceito simples e familiar para a estruturao dos mesmos, sendo um dos motivos do sucesso de sistemas relacionais de dados. A chave estrangeira o mecanismo que permite a implementao de relacionamentos em um BD relacional; O uso de restries garantem a consistncia das informaes armazenadas no BD.

Tabela Empresa

Figura 30 Tabela Empresa

A existncia de uma chave estrangeira impe restries que devem ser garantidas em diversas situaes de alterao do banco de dados;

8.3 Relacionamento entre Tabelas Os relacionamentos representam as associaes entre as entidades, podendo tambm ser entendido como o fato, o acontecimento que liga dois objetos, duas coisas existentes no mundo real. Relacionamento : Estrutura que indica a associao de elementos de duas ou mais entidades. EX: A figura abaixo representa o relacionamento entre as entidades Aluno e Emprstimo. Observando o esboo entende-se a seguinte associao, Aluno efetua Emprstimo. Esta ligao se d por meio do verbo efetuar que aparece no losango.

8.3.1 Restries de Mapeamento (Cardinalidade). A cardinalidade de relacionamentos refere-se s quantidades de instncias relacionadas, mnimas e mximas e a noo de opcional ou obrigatrio. A cardinalidade melhora a semntica da informao e deve ser utilizada para o desenho de Diagrama Entidade-Relacionamento mais significativos . Existem alguns tipos de cardinalidade possveis nos relacionamentos do Modelo Entidade Relacionamento (MER) que sero descritos a seguir: Relao 1..1 (l-se: relao um para um) - Esta relao existe quando uma instncia da entidade A se relaciona a uma instncia da entidade B. Cada um dos campos no apresenta valores repetidos. Na prtica existem poucas situaes onde utilizaremos um relacionamento deste tipo.

Uma entidade em A est associada no mximo a uma entidade em B e uma entidade em B est associada no mximo a uma entidade em A. Chave estrangeira em uma das entidades (tanto faz qual). Relao 1..n (l-se: um para muitos) - Neste tipo de relao, uma instncia da entidade A se relaciona a vrias instncias da entidade B. Este , com certeza, o tipo de relacionamento mais comum entre duas tabelas.

Uma entidade em A est associada a qualquer nmero de entidades em B, enquanto uma entidade em B est associada no mximo a uma entidade em A. Chave estrangeira na entidade de cardinalidade muitos. Relao n..n: (l-se: muitos para muitos): Este tipo de relacionamento pode acontecer em uma situao onde os valores poderiam se repetir em ambos os lados do relacionamento. Os relacionamento 1 para 1 e 1 para N podem ser mapeados diretamente em chaves estrangeiras nas tabelas originais. J o relacionamento N para N exige o uso de uma tabela auxiliar.

Uma entidade em A est associada a qualquer nmero de entidades em B, e uma entidade em B est associada a qualquer nmero de entidades em A. Chave estrangeira de ambas entidades tem que estar em uma tabela extra que implementa o relacionamento. Aos tipos de cardinalidade descrita acima se denomina de cardinalidade mxima, a qual expressa o nmero mximo de relacionamentos em que uma ocorrncia de uma entidade se associa a outras ocorrncias. A cardinalidade mxima pode ser 1 - uma nica associao - ou n - vrias associaes, isto , qualquer valor superior a 1. A figura abaixo, por exemplo, apresenta o diagrama entidade-relacionamento proposto para a base de dados de uma Biblioteca.

Figura 31 Banco de Dados Biblioteca

Antes de implementar um banco de dados, deve-se elaborar um projeto cauteloso e dar nfase cardinalidade dos relacionamentos das entidades, para garantir a confiabilidade do sistema, pois muitos dos erros na construo de modelo de dados ocorrem por serem realizados exames apressados sobre a cardinalidade dos relacionamentos, efetuando-se a anlise somente no sentido de um interesse especfico do negcio, sem que se verifique a cardinalidade no sentido inverso. EXEMPLOS Ex 01: Identificar os Relacionamentos: 1) Construir um banco de dados para um sistema de vendas. Em cada venda so vendidos vrios produtos e um determinado produto pode aparecer em vrias vendas. Cada venda efetuada por um vendedor para um determinado cliente. O produto est armazenado em uma determinada prateleira. Resposta:

Ex 01: Identificar a cardinalidade: 1) Construir um banco de dados para um sistema de vendas. Em cada venda so vendidos vrios produtos e um determinado produto pode aparecer em vrias vendas. Cada venda efetuada por um vendedor para um determinado cliente. O produto est armazenado em uma determinada prateleira.

8.4 Abstraes de Dados Existem algumas construes semnticas que so naturais dos seres humanos e so usadas para facilitar o entendimento do mundo. Para tentar representar com fidelidade estas construes foram criadas as diversas Abstraes de Dados. Abstrao o ato de separar mentalmente elementos de uma totalidade complexa, seja material, representao ou fato real. 8.4.1 - Especializao / Generalizao Especializao uma abstrao que permite subdividir um grande conjunto de elementos em conjuntos menores de acordo com padres que estabelecidos pelas necessidades da aplicao. Generalizao a abstrao inversa da Especializao, ou seja, agrupa-se conjuntos de elementos com alguma semelhana semntica em um conjunto maior. As caractersticas semelhantes que existem entre os Homens e as Mulheres so representadas no conjunto Pessoas, como por exemplo, o nome, a idade e a profisso. Todo Homem (ou Mulher) possui estas caractersticas pois uma Pessoa. Esta migrao de caractersticas denominada Herana. Alm das caractersticas herdadas de Pessoas, o conjunto de Homens possui suas caractersticas prprias por exemplo altura, o mesmo ocorrendo com as Mulheres com a caracterstica peso.

Figura 32 Generalizao / Especializao

Sucessivas operaes de Generalizao (ou Especializao) descrevem uma hierarquia de conjuntos que pode: a) no ser uma rvore, uma vez que conjunto Filho pode ter mais de um conjunto Pai, o que pode estabelecer Mltiplas Heranas, quando ento pode existir a possibilidade de conflito entre as caractersticas herdadas. Exemplo: Um conjunto de animais Anfbios so especializaes de Terrestres e tambm de Aquticos.

Figura 33 Hierarquia (Generalizao / Especializao)

Terrestres e Aquticos possuem a caracterstica Velocidade. Nos animais Terrestres representa a velocidade de locomoo na terra e nos animais Aquticos a velocidade de deslocamento na gua. Se Anfbios herdam Velocidade de ambos os grupos existe o conflito. b) ser constituda por conjuntos no mutuamente exclusivos ou seja, dois ou mais conjuntos podem conter um mesmo elemento. Exemplo: um rptil que anda e tambm nada.

O tamanho da Hierarquia de Generalizao determinado pelo interesse da aplicao, ou seja, subdivide-se em conjunto at que a representao esteja de acordo com as necessidades. 8.4.2 - Decomposio / Composio Decomposio uma abstrao que permite criar conjuntos de elementos que representam partes de um conjunto de elementos complexos. Composio a abstrao inversa da Decomposio.

Figura 34 Composio / Decomposio

8.4.3 Derivao (Sumarizao) Alguns dados armazenados no BD podem ser resultado de algum tipo de clculo envolvendo outros dados. 8.4.4 Agregao O resultado de uma associao entre Entidades pode criar uma outra Entidade ou melhor um Agregado. Um Agregado pode se relacionar com outras Entidades e possuir caractersticas prprias.

Figura 35 Agregao

8.4.5 Diviso

As caractersticas de uma Entidade ou Relacionamento podem apresentar-se complexas e assim talvez criar dificuldades para o seu completo entendimento. Atravs desta Abstrao pode-se representar partes de Atributos complexos.

Figura 36 Diviso

8.5 Diagrama de Representao (Diagrama Entidade Relacionamento) A representao grfica atravs do Diagrama Entidade Relacionamento foi criada por Peter Chen para facilitar a visualizao dos resultados de uma modelagem. Como o DER apresenta smbolo muito simples pode ser utilizado para a depurao da modelagem junto ao cliente. Veja a seguir o Sumrio da Notao do Diagrama EntidadeRelacionamento (DER).

Smbolo

Significado

Tipo de Entidade

Tipo de Entidade-Fraca
ou

Tipo de Relacionamento

Tipo de Relacionamento Identificador

Atributo

Atributo-Chave
ou

Atributo Multivalorado

Atributo Composto

Atributo Derivado

Tendo realizado entrevistas com o cliente e/ou usurio(s) para determinar suas necessidades de informao e definido qual o problema ser resolvido, ou seja, tendo determinado as fronteiras que delimitam e restringem o mini mundo a ser modelado, ento deve-se seguir roteiro para se determinar uma primeira verso do DER, que pode ser descrito pelos seguintes passos : Determinar os Tipos de Entidades Determinar os Tipos de Atributos das Entidades Determinar os Identificadores de Entidades Determinar os Tipos de Relacionamentos Determinar os Tipos de Atributos dos Relacionamentos Determinar as Cardinalidades Mnima e Mxima Determinar as Abstraes de Dados Aps criada a primeira verso do DER deve-se apresentar ao cliente para que sejam verificados a corretude e completude do diagrama. Sucessivas apresentaes do DER devem ser realizadas enquanto foram detectados falhas na representao. primeira vista pode-se pressupor que esta rotina de trabalho trar atrasos na construo do Banco de Dados, porm os especialistas em engenharia (software, mecnica e etc...), sabem da extrema importncia da fase de projeto. Erros ocorridos nesta fase acarretam graves atrasos e aumento no custo de realizao do produto. A modelagem atravs do MER exatamente uma etapa da Engenharia de Banco de Dados em que se realiza o projeto conceitual do Banco de Dados, uma etapa muito importante. Por esse motivo, o MER se tornou uma ferramenta de modelagem entre as mais difundidas, estimadas e utilizadas no mercado de informtica.

9. DEPENDNCIA FUNCIONAL

Dada uma entidade qualquer, dizemos que um atributo ou conjunto de atributos A dependente funcional de um outro atributo B contido na mesma entidade, se a cada valor de B existir nas linhas da entidade em que aparece, um nico valor de A. Em outras palavras, A depende funcionalmente de B. Ex: Na entidade PEDIDO, o atributo PRAZO-DE-ENTREGA depende funcionalmente de NUMERO-DO-PEDIDO.
Num. Ped. Cliente Endereo/Cidade/UF R. Meira 123/ Bauru / SP R. Meira 123/ Bauru / SP R. 127... R. 127... Av. Treze... Av. Treze... CNPJ 11111111 11111111 23232323 23232323 78787878 78787878 Prazo Entrega 20 Dias 20 Dias 25 Dias 25 Dias 15 Dias 15 Dias

3445 TCA... 3445 TCA... 2610 Lopes... 2610 Lopes... 5675 Mario... 5675 Mario...

Consiste em um relacionamento entre atributos, de maneira que o valor do primeiro determine a existncia para cada um dos outros atributos, conforme o exemplo a seguir.

Na figura acima, o campo Nome dependente do campo CodAluno (cdigo do aluno), mas a recproca no verdadeira, pois conhecer o nome do aluno no suficiente para saber seu cdigo, j que podem existir alunos cadastrados com o mesmo nome, porm com cdigos diferentes. Em uma relao podem existir mais de uma dependncia funcional. Dependncia Funcional Total (Completa) e Parcial Pode ser que em um relacionamento os atributos no-chave dependam apenas de uma parte da chave composta. Neste caso, temos uma Dependncia funcional parcial, segundo pode ser observado na figura a seguir:

Os campos DEmp (data do emprstimo) e DDevol (data da devoluo) dependem apenas de CodEmp (cdigo do emprestimo), ou seja, tm uma dependncia funcional parcial da chave composta (CodEmp, CodAluno, CodLivro). Na ocorrncia de uma chave primria concatenada, dizemos que um atributo ou conjunto de atributos depende de forma completa ou total desta chave primria concatenada, se e somente se, a cada valor da chave (e no parte dela), est associado um valor para cada atributo, ou seja, um atributo no (dependncia parcial) se apresenta com dependncia completa ou total quando s dependente de parte da chave primria concatenada e no dela como um todo. Ex: Dependncia total Na entidade ITEM-DO-PEDIDO, o atributo

QUANTIDADE-DO-PRODUTO depende de forma total ou completa da chave primria concatenada (NUMERO-DO-PEDIDO + CODIGO-DO-PRODUTO). A dependncia total ou completa s ocorre quando a chave primria for composta por vrios (concatenados) atributos, ou seja, em uma entidade de chave primria composta de um nico atributo no ocorre este tipo de dependncia. ITEM-DO-PEDIDO
Num. Ped. Cd. Prod. 45 Unid. Quant. Descrio Val. Unit. Tot. Prod.

3445

Lts

20

lcool 5,00 100,00

2610

78

Kgs

47

Cimento 30,00 1.410,00

2610

43

Mts

10

Arame 3,00 30,00

Dependncia Funcional Transitiva Quando um atributo ou conjunto de atributos A depende de outro atributo B que no pertence chave primria, mas dependente funcional desta, dizemos que A dependente transitivo de B. Ex: Dependncia transitiva Na entidade PEDIDO, os atributos ENDEREO, CIDADE, UF, CNPJ e INSCRIO-ESTADUAL so dependentes transitivos do atributo CLIENTE. Nesta mesma entidade, o atributo NOME-DO-VENDEDOR dependente transitivo do atributo CODIGO-DO-VENDEDOR.

PEDIDO
Num. Ped. 3445 Client e TCA... Endereo/Cidade/UF CNPJ IE Cd. Vendedor 1791 Nome Tot. Ped. Vendedor Anbal 1.799,00 3445 TCA... R. Meira 123/ Bauru / SP 11111111 111111 1791 Anbal 1.799,00 3445 TCA... R. Meira 123/ Bauru / SP 11111111 111111 1791 Anbal 1.799,00 Mario.. . Av. Treze... 2001 78787878 595959 Marcio 1.710,00

R. Meira 123/ Bauru / SP

11111111 111111

5675

Podem existir tambm casos em que uma coluna no dependa diretamente da chaveprimria ou de parte dela, mas tambm de outra coluna ou combinao de colunas que no so chave-primria. Este caso classificado como Dependncia funcional transitiva. Exemplo: Suponhamos a existncia da tabela Funcionrios com os seguintes campos: Matricula (chave-primria), NomeFuncionario, CCargo e Salariocargo conforme a figura abaixo:

O campo matrcula determina somente os atributos NomeFuncionario e CCargo, todavia o CCargo determina os campos NomeCargo e SalarioCargo, que no dependem diretamente do atributo Matricula. Temos ento uma dependncia funcional transitiva.

10. NORMALIZAO.

O conceito de normalizao foi introduzido por E.F. Codd em 1970(primeira forma normal). Esta tcnica um processo matemtico formal, que tem seu fundamentos na teoria dos conjuntos. Este processo objetiva, gradativamente, substituir um conjunto de entidades e relacionamentos por um outro, o qual se apresenta purificadoem relao s anomalias de atualizao(incluso, alterao e excluso) as quais podem causar certos problemas, tais como: grupos repetitivos (atributos multivalorados) de dados, dependncias parciais em relao a uma chave concatenada, redundncias de dados desnecessrias, perdas acidentais de informao, dificuldade na representao de fatos da realidade observada e dependncias transitivas entre atributos.

Exemplo: Pedido de Venda

Atributos da entidade

- numero do pedido

- prazo de entrega - cliente - endereo - cidade

- uf - CNPJ - inscrio estadual - cdigo do produto (*) - unidade do produto (*) quantidade do produto (*) - descrio do produto (*) - valor unitrio do produto (*) valor total do produto (*) - valor total do pedido (*) - cdigo do vendedor - nome do vendedor * Atributos que se repetem no documento Formulrio: Pedido Cdigo do Vendedor: 1791 Prazo de entrega: 20 dias Nome do vendedor: Anbal da Silva

Num. Ped.

Cliente Endereo/ CNPJ IE Cd. Und Cidade/ Prod. UF 3445 TCA... R. Meira 11111111 111111 45 Lts 123/ Bauru / SP 3445 TCA... R. Meira 11111111 111111 90 Lts 123/ Bauru / SP 2610 Lopes.. R. 127... 23232323 343434 45 Lts . 2610 Lopes.. . 2610 Lopes.. . 2610 Lopes.. . 2610 Lopes.. . R. 127... 23232323 343434 78 Kgs

Qtd

Desc

Val. Unit.

Tot. Prod.

Tot. Ped.

20

lcool 5,00 100,00 1.799,00

40

Cola 3,00 120,00 1.799,00

50

lcool 5,00 250,00 2.650,00

47

Cimento 30,00 1.410,00 2.650,00

R. 127...

23232323 343434

21

Kgs

20

Pregos 5,00 100,00 2.650,00

R. 127...

23232323 343434

43

Mts

10

Arame 3,00 30,00 2.650,00

R. 127...

23232323 343434

25

Pct

10

Algodo 2,00 20,00 2.650,00

Caso esta entidade fosse implementada como uma tabela em um banco de dados, as seguintes anomalias iriam aparecer: Anomalia de incluso: ao ser includo um novo cliente, o mesmo tem que estar relacionado a uma venda;

Anomalia de excluso: ao ser excludo um cliente, os dados referentes as suas compras sero perdidos; Anomalia de alterao: caso algum fabricante de produto altere a faixa de preo de uma determinada classe de produtos, ser preciso percorrer toda entidade para realizar mltiplas alteraes.

10.1 Primeira Forma Normal (1FN) A 1FN diz que: Cada ocorrncia da chave primria deve corresponder a uma e somente uma informao de cada atributo, ou seja, a entidade no deve conter grupos repetitivos (multivalorados). necessrio decompor cada entidade no normalizada em tantas entidades quanto for o nmero de conjuntos de atributos repetitivos. Nas novas entidades criadas, a chave primria a concatenao da chave primria original mais o(s) atributo(s) do grupo repetitivo visualizado(s) como chave primria deste grupo. Para entidade PEDIDO, temos: Entidade no normalizada:
PEDIDO:

Atributo chave da entidade:


PEDIDO

Apresentao no ER:

Ao aplicarmos a 1FN sobre a entidade PEDIDO, obtemos mais uma entidade chamada de ITEM-DO-PEDIDO, que herdar os atributos repetitivos e destacados da entidade PEDIDO.
PEDIDO

N. do pedido

Prazo de entrega

Cliente

Endereo

Cidade

UF

CNPJ

Inscr. Estadual

Vl. Tot. Pedido

Cd. Vend.

Nome

ITEM-DO-PEDIDO

Cd. Prod.

Unid. Prod.

Quant. Prod.

Desc. Prod.

Vl. Unit.

Vl. Tot. Prod.

N. do Pedido

PEDIDO

1:1

POSSUI

1:N

ITEM-DEPEDIDO

Um PEDIDO possui no mnimo 1 e no mximo N elementos em ITEM-DE-PEDIDO e um ITEM-DO-PEDIDO pertence a 1 e somente 1 PEDIDO, logo o relacionamento POSSUI do tipo 1:N.

10.2 Segunda Forma Normal (2FN)

Devemos observar se alguma entidade possui chave primria concatenada, e para aquelas que satisfizerem esta condio, analisar se existe algum atributo ou conjunto de atributos com dependncia parcial em relao a algum elemento da chave primria concatenada. Com a finalidade de tornar ainda mais estvel o modelo de dados, a aplicao da 2FN sobre as entidades em observao geram novas entidades, que herdaro a chave parcial e todos os atributos que dependem desta chave parcial, ou seja, uma entidade para estar na 2FN no pode ter atributos com dependncia parcial em relao chave primria. Ex: A entidade ITEM-DO-PEDIDO apresenta uma chave primria concatenada e por observao, notamos que os atributos UNIDADE-DO-PRODUTO, DESCRIO-DOPRODUTO e VALOR-UNITARIO dependem de forma parcial do atributo CODIGO-DOPRODUTO, que faz parte da chave primria. Logo devemos aplicar a 2FN sobre esta entidade. Quando aplicamos a 2FN sobre ITEM-DO-PEDIDO, ser criada a entidade PRODUTO que herdar os atributos UNIDADE-DO-PRODUTO, DESCRIO-DOPRODUTO e VALOR-UNITRIO e ter como chave primria o CODIGO-DO-PRODUTO. Aplicando a 2FN PEDIDO

ITEM-DO-PEDIDO

N. do Pedido

Cd. Prod.

Quant. Prod.

Vl. Tot. Prod.

PRODUTO

Cd. Produt

Unid. Produt

Vl. Unit.

Desc. Prod.

Representao no ER:

PEDIDO

1:1

POSSUI

1:N

ITEM-DEPEDIDO 1:N

PARTICIPA 1:1 PRODUTO

Um PRODUTO participa de no mnimo 1 e no mximo N elementos de ITEM-DEPEDIDO e um ITEM-DE-PEDIDO s pode conter 1 e somente 1 PRODUTO. Logo, o novo relacionamento criado do tipo N: 1. 10.3 Terceira Forma Normal (3FN) Uma entidade est na 3FN se nenhum de seus atributos possui dependncia transitiva em relao a outro atributo de entidade que no participe da chave primria, ou seja, no exista nenhum atributo intermedirio a chave primria e o prprio atributo observado. Ao retirarmos a dependncia transitiva, devemos criar uma nova entidade que contenha os atributos que dependem transitivamente de outro e a sua chave primria o atributo que causou esta dependncia. Alm de no conter atributos com dependncia transitiva, entidades na 3FN no devem conter atributos que sejam o resultado de algum clculo sobre outro atributo, que de certa forma pode ser encarada como uma dependncia funcional. Ex: Na entidade PEDIDO, podemos observar que o atributo NOME-DOVENDEDOR depende transitivamente do atributo CODIGO-DO-VENDEDOR que no pertence chave primria. Para eliminarmos esta anomalia devemos criar a entidade VENDEDOR, com o atributo NOME-DO-VENDEDOR e tendo como chave primria o atributo CODIGO-DO-VENDEDOR. Encontramos ainda o conjunto de atributos formados por ENDEREO, CIDADE, UF, CNPJ e INSCRIO-ESTADUAL que dependem transitivamente do atributo CLIENTE. Neste caso, devemos criar a entidade CLIENTE que conter os atributos ENDEREO, CIDADE, UF, CGC, e INSCRIO-ESTADUAL. Para chave primria desta entidade vamos criar um atributo chamado CODIGO-DO-CLIENTE que funcionar melhor como chave primria do que NOME-DO-CLIENTE, deixando este ltimo como simples atributo da entidade CLIENTE. Aplicando a 3FN
Prazo de entrega Cd. Cliente Cd. Vend.

PEDIDO

N. do pedid o

ITEM-DO-PEDIDO
N. do pedido N. do pedido Quant. Prod.

CLIENTE

Cd.

Endereo

Cidade

UF

CNPJ

Inscr.
Estadual

VENDEDOR

Cd.

Nome Vend.

Representao no ER

PEDIDO
0:N

1:1
0:N

POSSUI

1:N

ITEM-DEPEDIDO
1:N

FAZ

TIRA

PARTICIPA

1:1
CLIENTE

1:1
VENDEDOR

1:1
PRODUTO

Um PEDIDO s feito por 1 e somente 1 CLIENTE e 1 CLIENTE pode fazer de 0 (zero) (clientes que devem ser contatados mais freqentemente pelos vendedores) at N elemento de PEDIDO. Um PEDIDO s tirado por 1 e somente 1 VENDEDOR e 1 VENDEDOR pode tirar de 0 (zero) (vendedores que devem ser reciclados em termos de treinamento, para aumentar o poder de venda) a N elementos de PEDIDO.

11. TIPOS DE DADOS Um banco de dados nada mais do que uma hierarquia de estruturas de dados complexas. Em MySQL, como em muitos outros bancos de dados, o conceito da estrutura que mantm os blocos (ou registros) de informaes chamado de tabela. Estes registros, por sua vez, so constitudos de objetos menores que podem ser manipulados pelos usurios, conhecidos por tipos de dados (datatypes). Juntos, um ou mais datatypes, formam um registro (record). Uma hierarquia de banco de dados pode ser considerada como: Banco de dados > Tabela > Registro > Tipo de dados. Os tipos de dados possuem diversas formas e tamanhos, permitindo ao programador criar tabelas especficas de acordo com suas necessidades. MySQL prov um conjunto bem grande de tipos de dados, entre eles: CHAR(M): strings de tamanho fixo entre 1 e 255 caracteres; VARCHAR(M): strings de tamanho flexvel entre 1 e 255 caracteres. VARCHAR ocupa sempre o menor espao possvel, no entanto 50% mais lento que o tipo CHAR; INT(M) [Unsigned]: nmeros inteiros entre -2147483648 e 2147483647. A opo "unsigned" pode ser usada na declarao mudando o intervalo para 0 e 4294967295 para inteiros nosinalizados; FLOAT [(M,D)]: nmeros decimais com D casas decimais; DATE: armazena informao relativa a datas. O formato default 'YYYY-MM-DD' e as datas variam entre '0000-00-00' e '9999-12-31'. MySQL prov um poderoso conjunto de comandos para formatao e manipulao de datas; TEXT/BLOB: strings entre 255 e 65535 caracteres. A diferena entre TEXT e BLOB que no primeiro o texto no sensvel ao caso e no segundo sim; SET: conjunto de valores strings; ENUM: conjunto de valores strings, difere do SET pois s so armazenados valores previamente especificados. Alm dos tipos de dados existem outras opes a serem usadas em conjunto com os tipos de dados para a criao de tabelas e especificao de colunas: Primary Key (Chave Primria): usada para diferenciar um registro do outro. Cada registro, desta forma, no pode ter a mesma chave primria. Auto_increment: uma coluna com esta opo automaticamente incrementada quando da insero de um registro; NOT NULL: no permite a insero de valores nulos.

12. OPERAES COM SQL BSICO UTILIZANDO O BANCO DE DADOS MySQL. SQL (Structured Query Language), ou Linguagem de Consulta Estruturada, uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das caractersticas originais do SQL foram inspiradas na lgebra relacional. Embora o SQL tenha sido originalmente criado pela IBM, rapidamente surgiram vrios "dialectos" desenvolvidos por outros produtores. Essa expanso levou necessidade de ser criado e adaptado um padro para a linguagem. Esta tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e ISO em 1987. O SQL foi desenvolvido para ser uma linguagem padro para operaes com Banco de Dados. A lingagem SQL foi elaborada para ser independente de hardware ou do software. Ao usar o SQL, voc no precisa saber a respeito do software de banco de dados ou do hardware envolvido em uma operao. Tudo o que voc precisa conhecer so os comandos/instrues SQL padro para solicitar informaes, que obrigatoriamente o mesmo em todos os sistemas que utilizam o SQL. Na prtica existem pequenas diferenas entre o SQL dos diferentes bancos de dados, como o Microsoft Access, Microsoft SQL Server 2000, ORACLE, etc. Voc usa operaes SQL quando trabalha com o Microsoft Access, mas o programa, na verdade, oculta a linguagem SQL do usurio. Por exemplo, todas as operaes de consulta so realizadas usando-se SQL, mas voc v apenas a parte grfica (Modo Estrutura) onde a consulta definida. Voc pode ser muito produtivo no Microsoft Access sem saber nada de SQL. Um conhecimento bsico de SQL, no entanto, melhora significativamente o seu uso do Microsoft Access, principalmente no uso de tcnicas avanadas em Formulrios e Relatrios e na criao de rotinas de programao. Quando voc constri uma consulta no modo estrutura, na verdade o Microsoft Access est definindo uma instruo SQL, a partir dos campos, critrios e opes de filtragem que voc definiu na consulta. Com a linguagem SQL possvel: Criar, Alterar e Remover todos os componentes de uma Base de Dados (ex: tabelas); Inserir, Aterar e Apagar dados;

Interrogar a Base de dados; Controlar o acesso dos utilizadores Base de Dados e as opraes a que cada um deles pode ter acesso; Obter a garantia da consistncia e integridade dos dados. A linguagem SQL tem duas vertentes: DDL Data Definiton Language DML Data Manipulation Language A linguagem SQL bsicamente uma linguagem de consulta a banco de dados. Ela bem diferente das linguagens comuns de programao, a principal diferena que a linguagem SQL no uma linguagem procedural, ao contrrio da grande maioria das linguagens de programao. Na linguagem SQL no se especifica como, ou em que ordem, sero executados os processos que iro fornecer os resultados requeridos, na SQL, ns apenas informamos o que queremos e o sistema de banco de dados o responsvel por escolher adequadamente os procedimentos a serem executados, de forma que os resultados sejam obtidos com a maior eficincia possvel. A linguagem SQL uma linguagem relacional, isto , ela ideal para o tratamento de dados relacionados. De uma forma grotesca, dados relacionados so aqueles que podem ser arranjados em uma tabela, onde cada linha forma uma unidade lgica de dados. A linguagem SQL tanto uma linguagem de definio como de manipulao de dados, isto , com a SQL podemos tanto definir e construir relaes (tabelas), como manipular diversas relaes de forma a obter resultados desejados. A linguagem SQL est presente numa imensa quantidade de sistemas de banco de dados, ela pode estar visivel ou mascarada (embutida). Na forma visvel o usurio digita os comandos na linguagem SQL diretamente em um prompt de comando, de onde tambm possivel visualizar os resultados. J na forma embutida a linguagem SQL no est visivel diretamente ao usurio, os programadores podem imbutir os comandos em SQL, dentro de um programa, e criar uma interface mais amigvel com o usurio comum, este pode interagir mais facilmente com a interface do que com a prpria linguagem SQL. Desta forma usurios comuns podem manipular um banco de dados sem mesmo ter um conhecimento de SQL. Conhecendo as Palavras-chave em SQL:

DML - Linguagem de Manipulao de Dados O primeiro grupo a DML (Data Manipulation Language - Linguagem de manipulao de dados). DML um subconjunto da linguagem da SQL que utilizado para realizar incluses, consultas, alteraes e excluses de dados presentes em registros. Estas tarefas podem ser executadas em vrios registros de diversas tabelas ao mesmo tempo, os comandos que realizam respectivamente as funes acima referidas so Insert, Select, Update e Delete. INSERT usada para inserir um registro (formalmente uma tupla) a uma tabela existente. Ex: Insert into Pessoa (id, nome, sexo) value; SELECT O Select o principal comando usado em SQL para realizar consultas a dados pertencentes a uma tabela. UPDATE para mudar os valores de dados em uma ou mais linhas da tabela existente. DELETE permite remover linhas existentes de uma tabela. possvel inserir dados na tabela AREA usando o INSERT INTO: Insert into AREA (arecod, aredes) values (100, "Informtica"), (200, "Turismo"), (300, "Higiene e Beleza"); DDL - Linguagem de Definio de Dados O segundo grupo a DDL (Data Definition Language - Linguagem de Definio de Dados). Uma DDL permite ao utilizador definir tabelas novas e elementos associados. A maioria dos bancos de dados de SQL comerciais tem extenses proprietrias no DDL. Os comandos bsicos da DDL so poucos: CREATE: cria um objeto (uma Tabela, por exemplo) dentro da base de dados. DROP: apaga um objeto do banco de dados. Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usurio alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente. Outros comandos DDL: CREATE TABLE; CREATE INDEX; CREATE VIEW; ALTER TABLE ALTER INDEX; DROP INDEX DCL - Linguagem de Controle de Dados

O terceiro grupo o DCL (Data Control Language - Linguagem de Controle de Dados). DCL controla os aspectos de autorizao de dados e licenas de usurios para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados. Duas palavras-chaves da DCL: GRANT - autoriza ao usurio executar ou setar operaes. REVOKE - remove ou restringe a capacidade de um usurio de executar operaes. outros comandos DCL: ALTER PASSWORD; CREATE SYNONYM; DROP VIEW DTL - Linguagem de Transao de Dados BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode ser usado para marcar o comeo de uma transao de banco de dados que pode ser completada ou no. COMMIT envia todos os dados das mudanas permanentemente. ROLLBACK faz com que as mudanas nos dados existentes desde o ltimo COMMIT ou ROLLBACK sejam descartadas. COMMIT e ROLLBACK interagem com reas de controle como transao e locao. Ambos terminam qualquer transao aberta e liberam qualquer cadeado ligado a dados. Na ausncia de um BEGIN WORK ou uma declarao semelhante, a semntica de SQL dependente da implementao. DQL - Linguagem de Consulta de Dados Embora tenha apenas um comando, a DQL a parte da SQL mais utilizada. O comando SELECT permite ao usurio especificar uma consulta ("query") como uma descrio do resultado desejado. Esse comando composto de vrias clusulas e opes, possibilitando elaborar consultas das mais simples s mais elaboradas. Clusulas As clusulas so condies de modificao utilizadas para definir os dados que deseja selecionar ou modificar em uma consulta. FROM - Utilizada para especificar a tabela que se vai selecionar os registros. WHERE Utilizada para especificar as condies que devem reunir os registros que sero selecionados. GROUP BY Utilizada para separar os registros selecionados em grupos especficos. HAVING Utilizada para expressar a condio que deve satisfazer cada grupo.

ORDER BY Utilizada para ordenar os registros selecionados com uma ordem especifica. DISTINCT Utilizada para selecionar dados sem repetio. Operadores Lgicos AND E lgico. Avalia as condies e devolve um valor verdadeiro caso ambos sejam corretos. OR OU lgico. Avalia as condies e devolve um valor verdadeiro se algum for correto. NOT Negao lgica. Devolve o valor contrrio da expresso. Operadores relacionais O SQL possui operadores relacionais, que so usados para realizar comparaes entre valores, em estruturas de controle. Eles so:

BETWEEN Utilizado para especificar um intervalo de valores. LIKE Utilizado na comparao de um modelo e para especificar registros de um banco de dados. "Like" + extenso % significa buscar todos resultados com o mesmo incio da extenso. IN - Utilizado para verificar se o valor procurado est dentro de uma lista. Ex.: valor IN (1,2,3,4). Funes de Agregao As funes de soma se usam dentro de uma clusula SELECT em grupos de registros para devolver um nico valor que se aplica a um grupo de registros. AVG Utilizada para calcular a mdia dos valores de um campo determinado. COUNT Utilizada para devolver o nmero de registros da seleo. SUM Utilizada para devolver a soma de todos os valores de um campo determinado.

MAX Utilizada para devolver o valor mais alto de um campo especificado. MIN Utilizada para devolver o valor mais baixo de um campo especificado. 12.1 Utilizando SQL bsico no MySQL Preparando o ambiente Para seguir esta apostila, voc vai precisar ter o MySQL instalado. Isto no problema, j que ele um freeware e voc pode fazer o download no endereo www.mysql.com. A verso estvel disponvel para Windows apresentada em trs pacotes: O essential package com 14 MB que possui os componentes essenciais para rodar o Mysql Server em uma mquina Windows. O pacote com o instalador com 35.1 MB. E o pacote com o windows installer com 34,9 MB Aps a instalao, para ativar o servidor MySQL voc pode digitar no prompt do DOS ou no menu Iniciar > Executar o seguinte comando: c:\mysql\bin\mysq O MySQL no pode ser iniciado como um servio do Windows pois o Windows 95/98 no suporta isto. Somente o Windows NT/2000 e XP suportam o MySQL rodando como um sevio. Para testar se o MySQL est instalado corretamente, execute a seguinte linha no prompt do DOS: c:\mysql\bin\mysql Se tudo estiver nos seus devidos lugares, voc vai receber a seguinte tela:

Vamos ento a partir daqui mostrar alguns conceitos bsicos relacionados com comandos SQL para o MySQL no Windows usando o prompt de comandos. Embora existam programas com interfaces grficas que fazem este servio, bom conhecer esta opo e ter uma boa base terica. 12.2 Comandos Bsicos SQL char(m): Este tipo de campo usado para caracteres alfanumricos, como nome e endereos e possui tamanho fixo de 255 caracteres. varchar(m): Tambm utilizado para caracteres alfanumricos. Entretanto, ao contrrio do tipo CHAR , esta aloca apenas o espao necessrio para gravao 50% mais lento que o anterior. int(m): este tipo de campo suporta o conjunto dos nmeros inteiros, variando de 2147483648 a 2147483647. Pode-se passar o parmetro Unsigned (INT(M)

[Unsigned]), excluindo assim os nmeros negativos e proporcionando um intervalo de 0 at 4294967295. float[(m,d)]: Campos do tipo ponto flutuante representam nmeros decimais com maior preciso. date: Campo utilizado para armazenar datas. Sua forma padro 'AAAAMMDD', onde AAAA corresponde ao ano, MM ao ms, e DD ao dia. text: O campo text utilizados para guardar grandes quantidades de caracteres, podendo conter de 0 a 65535 bytes. 12.3 Comandos DDL Como j falamos, DDL um conjunto de comandos dentro da SQL, usado para a definio das estruturas de dados, e que fornece as instrues que permitem a criao, modificao e remoo das tabelas, bem como criao de ndices. A DDL possui 3 comandos bsicos, CREATE, ALTER e o DROP. CREATE Uma declarao CREATE permite a criao. Com esse comando podemos criar uma nova base de dados, tabela, ndice, ou consulta armazenada, sendo os tipos de objetos que podem ser criados definidos pelo SGBD que est sendo utilizado. Ns j conhecemos o CREATE, pois na lio "Montando um Esquema - Contatos" criamos um banco de dados e uma tabela. Agora vamos experimentar um pouco do ALTER e DROP.

ALTER Uma declarao ALTER permite alterar um objeto de um Banco de Dados, sendo os tipos de objetos que podem ser alterados definidos pelo SGBD que est sendo utilizado. Vamos observar um exemplo de um Banco de Dados chamado "contatos". Se ocorrer, por acaso, de o PBD (Projetista do Banco de Dados) esquecer de colocar no esquema um campo chamado "RG", que um dado necessrio, no ser preciso destruir e recriar o BD, basta somente alterarmos ele. mysql> ALTER TABLE PESSOA ADD RG CHAR(2) NOT NULL; Query OK, 4 rows affected (1.13 sec) Records: 4 Duplicates: 0 Warnings: 0

mysql> SHOW FIELDS FROM PESSOA; +-----------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra |

+-----------------+----------+------+-----+---------+-------+ | cpf | nome | telefone1 | telefone2 | endereco | bairro | cep | RG | char(11) | NO | | char(40) | NO | | char(15) | YES | | char(15) | YES | | char(50) | YES | | char(30) | YES | | char(8) | YES | | char(2) | NO | | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | | | | | | | | | | | | | | |

+-----------------+----------+------+-----+---------+-------+ 12 rows in set (0.00 sec) Obs: o comando SHOW FIELDS tem a mesma funo do DESCRIBE. Suponhamos, tambm, que um segundo campo para o nmero de telefone seja desnecessrio, ento, neste caso, ser possvel tambm apagar a coluna da tabela. mysql> ALTER TABLE PESSOA DROP telefone2; Query OK, 4 rows affected (0.49 sec) Records: 4 Duplicates: 0 Warnings: 0

mysql> DESCRIBE PESSOA;

+-----------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra |

+-----------------+----------+------+-----+---------+-------+ | cpf | nome | telefone1 | email | char(11) | NO | | char(40) | NO | | char(15) | YES | | char(30) | YES | | NULL | NULL | NULL | NULL | | | | | | | | | | | | | | | | | | | | |

| data_nascimento | date | endereco | bairro | cidade | uf | cep | RG

| YES |

| NULL | NULL

| char(50) | YES | | char(30) | YES | | char(30) | YES | | char(2) | YES | | char(8) | YES | | char(2) | NO |

| NULL | NULL | NULL | NULL | NULL |

+-----------------+----------+------+-----+---------+-------+ 11 rows in set (0.21 sec) Agora que s temos um campo para o nmero de telefone, o interessante seria renome-lo para "telefone" ao invs de "telefone1". mysql> ALTER TABLE PESSOA CHANGE telefone1 telefone varchar(15); Query OK, 4 rows affected (0.16 sec) Records: 4 Duplicates: 0 Warnings: 0 OBS: declarar o tipo obrigatrio, caso no declare, ocasiona erro. EXEMPLO:

DROP Uma declarao DROP permite a destruio. Essa destruio (remoo) pode ser de uma base de dados existente ou de uma tabela. Os tipos de objetos que podem ser removidos so definidos pelo SGBD que est sendo utilizado. Sendo assim, podemos deletar a tabela "PESSOA": mysql> DROP TABLE PESSOA; Query OK, 0 rows affected (0.68 sec)

Ou deletar o Banco de Dados inteiro: mysql> DROP DATABASE contatos; Query OK, 0 rows affected (0.54 sec) 12.4 Comandos DML J foi falado anteriormente que o DML o grupo de comandos dentro da linguagem SQL utilizado para a recuperao, incluso, remoo e modificao de informaes em bancos de dados. Os principais comandos DML so SELECT, INSERT, UPDATE e DELETE. Vamos ver cada um deles detalhadamente agora: SELECT O comando 'SELECT' usado para obter informao de uma tabela. A forma geral do comando : SELECT o_que_selecionar FROM qual_tabela WHERE condies_de_consulta Sendo: o_que_selecionar= indicador do que voc deseja ver. Isso pode ser uma lista de colunas, ou '*' para indicar "todas as colunas". qual_tabela= indicador da tabela do qual os dados sero recuperados. WHERE= opcional. Se est presente, condies_de_consulta especifica as condies que as linhas devem satisfazer para qualificar a recuperao. INSERT Uma declarao INSERT permite a incluso de um ou mais registros em uma tabela. Veja como a sintaxe desse comando: INSERT INTO tabela VALUES (valor_campo1, valor_campo2, ..., valorcampoN);

OBS: Insere valores na ordem correta de todos os campos da tabela. Exemplo: a partir do prompt do MySQL, digite os comandos abaixo: (para isso recrie o Banco de Dados "contatos" e a tabela "PESSOA", j que exclumos tudo nas outras sees) UPDATE O UPDATE um comando utilizado para a atualizao dos dados de um ou mais registros de uma tabela, como mostra a sintaxe abaixo: UPDATE tabela SET campo = valor WHERE {condio};

DELETE Uma declarao DELETE remove um ou mais registros de uma tabela. O comando DELETE pode conter as condies de deleo das informaes. Veja a sintaxe a seguir: DELETE FROM tabela WHERE {condio};

12.5 Utilizando Comandos DDL e DML para criar Banco de Dados Os comandos sero digitados na linha de comando. Aps o trmino de cada linha tecle Enter e, para executar o comando, tecle ; (ponto e vrgula) e Enter. 12.5.1. Para exibir os banco de dados disponveis use o comando: mysql> Show DataBases.

O resultado do comando est exibindo os trs banco de dados que eu tenho disponvel no meu MySQL. Nota: O comando Select Database(); exibe o database atual.

12.5.2. Agora eu vou criar um novo banco de dados chamado Teste usando o comando: mysql> Create Database A seguir irei exibir os banco de dados existentes, conforme abaixo:

12.5.3. Para trabalhar com um banco de dados usamos o comando: mysql> Use <nome_do_banco_de_dados>. Vamos usar o banco de dados Teste e exibir as tabelas existentes usando o comando: mysql> Show Tables:

O comando Show tables no encontrou nenhuma tabela no banco de dados Teste. Nota: Para excluir um banco de dados use comando : mysql> DROP DATABASE <nome_do_banco_de_dados> 12.5.4. Vamos criar uma tabela no banco de dados Teste. Para isto usamos o comando Create Table com a seguinte sintaxe: mysql> CREATE TABLE table_name (column_name1 type [modifiers] [, column_name2 type [modifiers]]) Vamos criar uma tabela chamada Clientes com os seguintes atributos e estrutura:

. Codigo - chave primria . Nome - VarChar(30)s . Endereco - VarChar(30) . Estado - char(2)

12.5.5. Para inserir dados na tabela, usamos o comando INSERT INTO: mysql> INSERT INTO table_name (column1, column2, ..., columnN) VALUES (value1, value2, ..., valueN) Vamos inserir um registro na tabela usando a instruo SQL abaixo: EX 01 mysql> INSERT INTO CLIENTES (Codigo,Nome, endereco, estado) VALUES(1,"Macoratti", "Av. Mirassol 100", "SP"); Ex: 02 mysql> INSERT INTO PESSOA VALUES ('12345678909', 'Teste', '32233223', '32183218', 'teste@email.com', '1989-10-25', 'Rua arara No 13', 'Jd Esperana', -> 'testee', 'TE', '74000000'); Query OK, 1 row affected (0.15 sec) 12.5.6. Se quisermos obter informaes detalhadas da estrutura da tabela, usamos o comando: DESCRIBE <NOME_DA_TABELA> Nota: Temos abaixo os principais tipos de dados Tipo de Dados INT REAL CHAR(n)

Descrio Representa um valor inteiro. Pode ser com sinal ou sem sinal Representa um valor com ponto flutuante. Oferece uma grande preciso e uma extensa faixa de valores Representa um valor caractere com tamanho fixo.

TEXT DATE TIME

Representa um valor para caractere com tamanho varivel Representa um valor de data padro. Formato : YYYY-MM-DD (2001-01-01) Representa um valor de tempo padro. Armazena a hora de um dia independente de uma data particular. Formato : hh:mm:ss (06:00:00)

12.5.7. Para excluir uma tabela, basta usar o comando: mysql> DROP <nome_da_tabela> Exemplo: mysql> show tables; +--------------------+ | Tables |

+--------------------+ | Livro | | Filmes | DVDs | Alunos | | |

+--------------------+ 4 rows in set (0.08 sec)

mysql> mysql> DROP TABLE Filmes; Query OK, 0 rows affected (0.68 sec)

12.5.8. O comando 'SELECT' usado para obter informao de uma tabela. A forma geral do comando : mysql> SELECT *FROM <nome_da_tabela> SELECT o_que_selecionar FROM qual_tabela WHERE condies_de_consulta Sendo: o_que_selecionar= indicador do que voc deseja ver. Isso pode ser uma lista de colunas, ou '*' para indicar "todas as colunas". qual_tabela= indicador da tabela do qual os dados sero recuperados.

WHERE= opcional. Se est presente, condies_de_consulta especifica as condies que as linhas devem satisfazer para qualificar a recuperao. 12.5.9. Alterando dados com update Para atualizar uma coluna, podemos usar o comando: UPDATE. Abaixo uma das sintaxes possveis onde atualizamos a coluna Endereco. Para alterar linhas em uma tabela usamos o comando UPDATE. Este comando faz parte das instrues DML (Data Manipulation Language) ou Linguagem de manipulao de dados. A sintaxe para o comando UPDATE : mysql> UPDATE table_name SET column1=value1, column2=value2, ..., columnN=valueN [WHERE clause] Nota: A linha da tabela que o projetista do BD deseja alterar deve ser especificada no final do comando. ( where Codigo=1) (Codigo-> ser o nome da chave primria da tabela que estar sendo utilizada). Veja o exemplo a seguir: mysql> select * from PESSOA;

+-------------+-------+-----------+-----------+-----------------+-----------------+-----------------+--------------+--------+------+----------+ | cpf bairro | nome | telefone1 | telefone2 | email | cidade | uf | cep | | data_nascimento | endereco |

+-------------+-------+-----------+-----------+-----------------+-----------------+-----------------+------------| 12345678909 | Teste | 32233223 | 32183218 | teste@email.com | 1989-10-25 arara No 13 | Jd Esperana | testee | TE | 74000000 | +-------------+-------+-----------+-----------+-----------------+-----------------+-----------------+------------1 row in set (0.00 sec) mysql> UPDATE PESSOA SET cpf='00011122233' WHERE nome='Teste'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 | Rua

mysql> select * from PESSOA; +-------------+-------+-----------+-----------+-----------------+-----------------+-----------------+-----| cpf bairro | nome | telefone1 | telefone2 | email | cidade | uf | cep | | data_nascimento | endereco |

+-------------+-------+-----------+-----------+-----------------+-----------------+-----------------+------| 00011122233 | Teste | 32233223 | 32183218 | teste@email.com | 1989-10-25 arara No 13 | Jd Esperana | testee | TE | 74000000 | +-------------+-------+-----------+-----------+-----------------+-----------------+-----------------+-----1 row in set (0.00 sec) 12.5.10. Para excluir uma linha da tabela, usamos o comando DELETE . Veja a sintaxe a seguir: mysql> DELETE FROM tabela WHERE {condio}; Veja um exemplo real: mysql> select * from PESSOA; +-------------+-------+-----------+-----------+-----------------+-----------------+-----------------+--------------+--------+------+----------+ | cpf bairro | nome | telefone1 | telefone2 | email | cidade | uf | cep | | data_nascimento | endereco | | Rua

+-------------+-------+-----------+-----------+-----------------+-----------------+-----------------+-----| 00011122233 | Teste | 32233223 | 32183218 | teste@email.com | 1989-10-25 arara No 13 | Jd Esperana | testee | TE | 74000000 | +-------------+-------+-----------+-----------+-----------------+-----------------+-----------------+-----1 row in set (0.00 sec) mysql> DELETE FROM PESSOA WHERE cep='74000000'; Query OK, 1 row affected (0.00 sec) mysql> select * from PESSOA; Empty set (0.00 sec) Abaixo estou excluindo a linha inserida acima. Note que aconselhvel especificar a condio na clusula WHERE. | Rua

A sintaxe : DELETE FROM table_name [WHERE clause] 12.5.11. Realizando uma juno de duas tabelas. Para isto vamos criar uma tabela chamada veculos que estar relacionada coma tabela teste criada acima e conter os dados dos veculos de cada cliente:

Exibindo as tabelas existentes e a estrutura da tabela criada teremos:

Vamos agora incluir alguns dados na tabela teste e na tabela veculos usando INSERT INTO. Obs: Podemos usar a notao Insert Into values() : Ex: insert into veiculos values( 1, "MERCEDES", "BRANCA", 1, 3000)

Abaixo temos o resultado final das incluses:

Vamos fazer a nossa juno. Usamos para isto a clusula SELECT e definimos a tabela e o nome do campo que desejamos exibir separados por um ponto; a seguir

relacionamos as tabelas de dados na clusula FROM e definimos a condio na clusula WHERE . O resultado exibido abaixo:

Utilizando a clusula WHERE para combinar seleo de registros com seleo da coluna:

Para restringir a sada, incluindo as condies WHERE

Use a clusula WHERE para exibir resultados especficos de duas colunas de uma tabela.

Ordenar uma coluna por ordem alfabtica.

BIBLIOGRAFIA BSICA DATE, C. J.. Introduo a Sistemas de Banco de Dados. 8 ed. Elsevier Editora, 2004. ELMASRI, R.; NAVATHE, S. B.. Sistemas de Banco de Dados. 4a ed., Pearson-AddisonWesley, 2005. HEUSER, Carlos Alberto. Projeto de Banco de Dados. 6a Ed., Bookman, 2008. DATE, C. J.. Introduo a Sistemas de Banco de Dados. 6 ed. Elsevier Editora, 2000. KORTH, H. F.; SILBERSCHATZ, A.; SUDARSHAN, S.. Sistema de Banco de Dados. 5a ed., Campus, 2006. NAVATHE, S. B. AND ELMASRI, R.. Sistemas de banco de dados Fundamentos e aplicaes. LTC: 2002.

BIBLIOGRAFIA COMPLEMENTAR BEIGHLEY, Lynn; Use a Cabea SQL. Rio de Janeiro. Ed. Alta Books, 2010. CHEN, P.; Modelagem de Dados: A abordagem em entidade-relacionamento para projeto lgico. So Paulo. Ed. McGraw-Hill, 1990. MACHADO, F.N.R.; Abreu, M. Projeto de Banco de Dados: uma Viso Prtica. So Paulo: editora rica, 1995. OLIVEIRA, Celso. Banco de Dados: Curso Prtico H.P. de. SQL. 1a Ed. Novatec Editora Ltda, So Paulo-SP, 2002. CAMELOSI, Luiz Jr.; Sistemas de Banco de Dados. Nota Didtica, So Paulo-Piracicaba, 2003,