Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Tcp-Ip, Intranet E Extranet, Banco De Dados E Sql, Access, Oracle (Apostila), Notas de estudo de Eletromecânica

Apostila (Tcp-Ip, Intranet E Extranet, Banco De Dados E Sql, Access, Oracle)

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 16/06/2009

aline-ss-11
aline-ss-11 🇧🇷

4.8

(59)

33 documentos

1 / 65

Documentos relacionados


Pré-visualização parcial do texto

Baixe Tcp-Ip, Intranet E Extranet, Banco De Dados E Sql, Access, Oracle (Apostila) e outras Notas de estudo em PDF para Eletromecânica, somente na Docsity! ÍNDICE GERAL • TUTORIAL SOBRE TCP/IP................................................................01 • INTRANET E EXTRANET...................................................................09 • BANCO DE DADOS e SQL.................................................................19 • ACCESS 2000..................................................................................40 • GERENCIANDO UMA INSTANCE ORACLE..........................................60 • DIFERENÇAS BÁSICAS ENTRE ORACLE E SQL SERVER 7.0...............63 Tutorial sobre TCP/IP TCP: Transmission Control Protocol IP: Internet Protocol Protocolos: Simplesmente um conjunto de regras bem definidas que definem uma acao a ser executada (parece definicao de algoritmo mas na verdade pode ate ser encarado como um). Assim, protocolos em computacao, e em especial a redes, define como computadores podem se comunicar entre si. Todo computador conectado em rede necessita de uma identificacao, sendo assim, já de posse dessa identificacao, o protocolo tem por papel primordial estabelecer a conexao mais confiavel e duradoura possivel entre computadores. Dessa forma, se define: como enviar e receber e-mails, como me identifico a outro computador, quanto tempo devo esperar para que você me envie um conjunto de informacoes, com que intervalo um conjunto de informacoes deve ser espacado a fim de se obter a conexao mais confiavel possivel, como começar e como terminar uma conexao, etc. Intranet: Intranet é o novo conceito para redes de acesso discado mas não vinculado diretamente ao que conhecemos como Internet. Tal como um provedor de acesso à Internet, a Intranet conecta clientes a suas redes corporativas internas. Encare uma Intranet como servidora dela mesma, ou seja, voce pode acessa-la sem mesmo ter uma conta com um provedor Internet, contudo, o acesso limita-se apenas a rede privada e, de forma alguma, voce poderia, por exemplo, visitar paginas em outros locais alem da qual foi pre-programada pela empresa. As diferenças residem ai, no resto, temos todas as caracteristicas de uma rede qualquer: serviços WWW, ftp e o que mais a empresa venha a necessitar para atender seus clientes. Um bom exemplo a dar a respeito é sobre os serviços de Home Banking do Banco Itau (Isso não é propaganda heim?); você conecta-se, por acesso discado, do seu modem, a rede interna de servicos privados do Banco Itau e usufrui dos servicos de um caixa on-line. Extranet: Extranet é uma variante da Intranet, ou seja, podemos defini-la como sendo uma interligação entre Intranets por meio da Internet. Dessa forma, uma Intranet pode se comunicar a outra bastando apenas a sua interligacao por meio da Internet o que, nesse caso, envolveria um provedor de acesso discado. Pense comigo: uma empresa com varias filiais precisando de comunicação urgente com uma outra localizada a varios milhares de quilometros; a comunicacao por acesso puramente discado, Intranet a Intranet seria inviável; usa-se, então, um provedor de acesso local para a interligação entre as duas filiais. Introdução Ao contrario do que muita gente possa pensar, TCP/IP nao é o unico protocolo utilizado em comunicao em redes, tanto é que ao mesmo nivel de um IP, por exemplo, existe o x.25 e, ao TCP, o UDP. E algo mais que algumas pessoas possam fazer confusao é a respeito do que cada um faz, ou seja, TCP define um papel um tanto diferente do IP e vice-versa, cada qual com um papel especifico mas com sobrevivencia mutua e sempre "ajudado" por protocolos semelhantes. Na realidade podemos ate mesmo estudar os dois protocolos separadamente. O TCP/IP foi adotado como padrao em todo mundo como meio de comunicacao com a Internet. Algumas empresas podem implementar seus proprios protocolos de comunicacao em redes internas, se quiserem, mas para a comunicacao com a Internet deverao adaptar seus equipamentos a fim de operar em TCP/IP. O TCP/IP foi primeiramente desenvolvido como um projeto particular que atendesse aos servicos do Governo Americano em especial as Forcas Armadas. No tempo da Guerra Fria, nao era possivel um nivel de comunicao satisfatorio entre bases comandadas, entao foi necessario a criacao de um nivel de transmissao de informacoes mais adequado. Logicamente existiam as transmissoes puramente fisicas com dados trafegando por meio de pulsos eletricos tal qual um barramento transfere dados entre perifericos. Pensar em algo como isso naqueles tempos era no minimo ridiculo. Como me comunicar dessa forma com uma base militar a algumas centenas ou milhares de quilometros? Levando em conta alguns conceitos de eletronica, o sinal se perderia ou se anularia facilmente nesse meio, os fios. Mesmo levando em conta que fosse possivel tal meio de comunicao, as informacoes nao sao enviadas como em um protcolo por TCP/IP, ou seja, por pacotes. É tudo enviado de uma vez so. Se a transmissao por algum motivo fosse interrompida todo o processo iria falhar e a informacao nao chegaria ao destino final. Desastroso. Alem de permitir uma conexao mais confiavel em redes, o TCP/IP permitia transmissoes bem mais arrojadas do que aquelas realizadas em modo puramente fisico, ou seja, unicamente por transmissao em pulsos. Assim, uma transmissao puramente fisica so poderia ser realizada somente por dois usuarios por vez e se se quisesse enviar mais informacoes a outros computadores nao seria possivel ou entao deveria-se fechar uma das conexoes para que a informação pudesse chegar em dois locais. Levando em conta que naquele tempo a comunicacao era primordial entre varios lugares ao mesmo tempo, esse modo de transmissao nao era o mais indicado. Pelo TCP/IP (outros protocolos permitiam isso tambem) era possivel comunicacao entre vários computadores ao mesmo tempo e isso atendia as pretensoes da epoca. Nesse tempo, os cientistas tiveram a ideia de transmissao por pacotes, ou seja, somente partes da informacao que deveria ser transmitida seriam enviadas. Assim, uma mensagem nao corria o risco de se perder no meio da transmissao e mesmo uma conexao mal realizada nao seria de toda inutil. Bem ,alguem poderia estar se perguntando: "Tudo bem, entendi o que você quis dizer, mas se se usa qualquer protocolo para meios de comunicao atraves de pacotes segmentados, isso tambem implica um meio fisico de transmissao e nesse meios os dados trafegam normalmente como pulsos eletricos tambem." -- Ok, você esta certo, nao ha diferencas em como a informação chega ao destino, ha sim no modo como ela é enviada. Como sera explicado mais adiante, o IP segmenta a informação em varios pacotes e esse pacotes sao tratados meramente como pulsos eletricos quando transmitidos e quando chegam ao computador destino, mas o TCP (o responsavel pelo recebimento) implementa um metodo seguro de transmissao, isso porque se o que se queria ser enviado nao chegou ao destino de forma completa, uma nova conexao pode ser restabelecida sem prejuizo do que já havia sido feito. Creio que você já deve ter ouvido falar no GetRight nao? Otimo programa. Isso seria um bom exemplo para dar a você: quando uma conexao termina por qualquer motivo com o meio de origem, o que envia os dados, uma nova conexo pode ser estabelecida sem prejuizo dos dados que estavam sendo recebidos, ou seja, pode ser reinicializada de onde se parou sem problemas. Assim funciona o meio de transmissao de pacotes e acho que você já pegou o espirito da coisa sobre a importancia desse protocolo. O protocolo TCP/IP implantou um novo conceito arrojado no modo de transmissao mundial entre redes mesmo as heterogeneas (Sistemas Operacionais diferentes) e qualquer Sistema que tenha por pretensao conectar o usuario em rede mundial Internet deve ter tais protocolos instalados Bom, era isso que eu queria falar a você como introducao. Agora vamos a parte tecnica da coisa. Conceitos Técnicos Antes de comecar, um esclarecimento: Um provedor de acesso a internet funciona por concessao de uma outra grande rede maior. Assim, seu provedor nada mais é do que uma rede conectada a outra maior e você, quando conectado ao seu provedor e fazendo parte dele como um host, é um micro-host em toda a essa rede maior. Essa grande rede maior é chamada de backbone (espinha-dorsal em ingles) e é nela onde estao conectadas as redes menores que oferecem servicos, as provedoras. É o nivel mais alto das redes. Os backbones nacionais sao: RNP, Embratel, Unysis, Global One, IBM e Banco Rural. Creio que sao os unicos ate o momento. Esse sao os de nivel mais alto no Brasil, mas existem os backbones estaduais tambem (na realidade podem ser considerados como centros de roteamento aos backbones nacionais): ANSP - SP; Rede Bahia - BA; Rede Catarinense - SC; Rede Internet Minas - MG; Rede Paraibana de Pesquisa - PB; Rede Rio - RJ; Rede Pernambuco de Informática - PE; Rede Norte-riograndense de Informática - RN e Rede Tchê - RS. Sendo assim, a sua provedora é seu backbone pessoal, que se liga ao backbone do estado onde esta localizada que por sua vez é conectada ao de maior nivel, os backbones nacionais. Se seu estado nao possui backbone provavelmente sua provedora utiliza um backbone de outro estado ou entao de algum instituto de tecnologia proprio que possa fazer pelo menos um roteamento satisfatorio. Quando estabelecemos uma comunicacao com nosso provedor de acesso a internet, por exemplo, nos é atribuido um numero de identificacao na rede. Esse numero de identificacao é o IP. Um numero IP nada mais é do um numero de 32 bits segmentado em quatro partes, portanto com oito bits, formando um byte. Ao total teriamos 4 bytes. Se voce recebe por exemplo 11001000.11111001.11011111.1110010 esse numero define voce no mundo inteiro, ou seja, seu computador é unico na internet naquele momento e voce é perfeitamente identificado por ele. Assim como um numero de telefone, não existem dois numeros IP conectados ao mesmo tempo a não ser, obvio, que seja pertencente a uma rede interna (que não possua acesso a Internet). Algo interessante a se dizer sobre essa identificacao é que, como foi dito, sao um conjunto de bits e como tal é representado por numeros binarios. O mesmo numero acima traduzido para tabela decimal ficaria: 200.249.223.114. Isso é importante notar, porque um numero como esse nao é dado a voce em formato decimal mas sim binario e depois convertido gracas ao servidor ou servidores DNS. Outra coisa interessante a ser dita a respeito é que numeros IP nunca ultrapassam o patamar de numero 256. Assim, voce nunca ira ver nada como 200.286, isso não é possivel. Simplesmente porque a tabela de conversao atinge somente 256 possibilidades numericas (de 0 a 255). Portanto, o maximo que voce ira ver sera 255 como numero identificador de um dos segmentos do quarteto decimal. Na realidade poderiamos dizer 253 possibilidades porque o numero 0 eh destinado a processos especiais e 255 não pode ser atribuido a numeros IP de hosts, eles possuem outra finalidade (a mascara de sub-rede). Maiores detalhes sobre isso na secao "HIERARQUIA DE REDES". Outro fato que eu acredito muitas pessoas facam confusao é a respeito do host. Um host nada mais é do que um computador conectado em rede (em uma rede interna ele tambem pode ser chamado de nó). Vamos citar um exemplo de provedora, a ELOGICA. Quando voce disca para la e você é conectado, eles te fornecem um numero IP, ok. Para a ELOGICA voce nada mais é do que um computador conectado na rede dela, meramente um numero de identificacao. Como identifico um host? simples. Um endereco IP é dividido em duas partes: uma destinada a identificao da rede e a outra identificando o host, ou seja o micro que pertence a essa rede e se conectou a ela. Voltando ao exemplo acima: se nos temos 200.249.223.114 os dois primeiros bytes desse numero (lembre-se da definicao mais Outro item a ser comentado eh sobre o que se chama de mascara da sub-rede . Isso nada mais eh do que a determinacao da classe a qual uma rede pertence. Assim nos poderiamos ter: • Classe A: 255.0.0.0 • Classe B: 255.255.0.0 • Classe C: 255.255.255.0 Parece desnecessario? Pois eh, realmente nos damos a olhar a primeira vista e pensar que não eh necessario um tipo de identificacao de redes desse tipo. Bastaria olhar o numero do primeiro byte e isso jah seria suficiente p/ saber a que classe a rede pertence. Isso a nossos olhos eh otimo mas para uma maquina, a que ira analisar pedidos, por exemplo, isso não eh suficiente. Precisamos informar a ela que a rede eh do tipo C, A ou B e isso eh feito pela mascara da sub-rede (tambem chamada de netmask). Eh necessario esse tipo de informcao porque uma rede de amplo espectro, uma classe A, por exemplo, pode ser dividida em redes classe B que por sua vez pode ser subdividida em redes classe C. Por exemplo, voce pode ter uma rede classe A mas achou muito grande e resolveu dividi-la em varias redes B, no final voce quis varias tipo C, ok, sem problemas. Mas quando voce fez isso, voce automaticamente criou redes verdadeiras e não apenas subsividoes. Assim a menor divisao que voce fez foi em 20 vezes. Não se deu por satisfeito e resolveu criar redes menores dentro daquelas 20, vamos supor 5. Cada uma dessas divisoes não eh tratada como um mero host, por exemplo, eh uma rede inteira. Sendo assim, voce precisa informar que aquela subdivisao das 20, as outras 5 redes, não são hosts e sim redes classe C. E, na verdade, quando se chega a um ponto como esse, nem mesmo uma simples "olhada" nos numeros eh suficiente para informar que tipo de rede é e fatalmente voce ira precisar se certificar disso por meio do netmask. Isso eh importante porque sem essas informacoes não eh possivel o roteamento de dados. Eh necessario manter o nivel de hierarquia das redes. Se voce tem, por exemplo, um numero de rede como: 125.142.75.6 isso parece ser uma rede classe A. Quem pode garantir? Uma "olhada" nesse numero não eh suficiente pra termos certeza. Essa pode ser a nossa divisao de redes que fizemos nas linhas acima ou entao uma rede A verdadeira. Sendo assim, é extremamente necessario informar que essa rede não eh uma rede A e sim uma classe C dentro de uma A. Dependendo di sistema em uso, podemos definir simplesmente pelo netmask. 255.255.255.0 eh suficiente pra informar que essa eh uma rede C. Espero que tenha sido esclarecedor essas informacoes. Eh muito importante o conhecimento desses topicos se quiser saber mais sobre construcao de redes. Conceitos Técnicos O protocolo IP possui outras determinacoes alem de identificar voce na rede: ele transforma a informacao a ser enviada em pequenos pacotes cada um contendo em torno de 512 bytes (alguns autores se divergem quanto ao tamanho dos pacotes, alguns chegam a admitir 200 bytes). Esses pacotes recebem o nome de datagrams e em cada um desses pacotes é alocada a informacao do computador de origem e de destino. Que informacao é essa? o numero IP. Assim, se por exemplo voce estabelece uma conexao com algum servidor tipo ftp, junto de cada pacote vai o seu numero IP, para que o servidor saiba para quem esta enviando os dados, alem do proprio numero IP do servidor para que possa ser localizado, logico. A respeito do tamanho dos pacotes eles podem ser facilmente percebidos: experimente fazer um upload por e-mail de um arquivo qualquer de, digamos, 137 kb. Na janela informativa de status da operacao voce ira perceber que aquele pacote de 137 kb aumentou para algo em torno de 188 kb. Esse arquivo de 137 kb foi segmentado em varias partes de mais ou menos 512 bytes cada e foi anexado um cabeçalho informativo feito pelo IP (explicado mais adiante) contendo informacoes do computador de origem e de destino. Essa informacoes adcionais, colocadas em cada pacote, constituem alguns kbytes a mais em tudo e foi por isso que aumentou para 188 kb. Um dado interessante a respeito é que algumas aplicacoes cliente (leia-se programas que recebem exclusivamente dados) como um mIRC por exemplo, anexa os dois protocolos em seu meio e é perfeitamente configuravel o tamanho de cada pacote, ou seja, voce poderia enviar pacotes de dados com 512 ou 200 bytes sem problemas. Contudo, pacotes maiores sao mais confiaveis e é sempre aconselhavel voce utilizar pacotes de 512 byes. Tambem nao vamos exagerar e colocar pacotes de 1024 bytes. Absurdo. É possivel? é. Mas nao é uma boa ideia. Uma cartacteristica interessante da rede é que os dados transformados em pacotes podem se perder no caminho da transmissao. Nos primordios do TCP/IP, essas informacoes nao se perdiam tao facilmente mas com o crescente congestionamento da rede, um ou outro pacote pode se perder no caminho ou no minimo chegar na ordem errada. Isso ocorre primeiramente porque qualquer coisa enviado atraves de rede deve passar pelo meio fisico e nesse meio essas "coisas" nada mais sao do que sinais eletricos provenientes de um meio digital. Assim, um pacote de informacoes sao varios pulsos de interrupcao numa corrente continua. Assim, os pacotes sao enviados sequencialmente mas nao é garantida a sucessao correta, assim um pacote de numero 20 pode chegar na frente do 15. Ai entao entra o TCP responsavel pelo recebimento dos pacotes que chegam. Esse protocolo tem sua maior funcao no reordenamento dos pacotes. Assim, se um pacote enviado pelo IP se perde no caminho, o TCP manda novo pedido ao computador que estava enviando a informacao a fim de ser reestabelecido o processo e o envio novamente do mesmo pacote ou entao, se todos os pacotes conseguiram chegar, po-los na ordem correta. Esse pedido geralmente eh feito pelo protocolo ICMP (parte do IP que trata de controle de erros, explicado mais adiante) o qual é enviado em um pacote menor do que 512 bytes informando que um pacote chegou de forma inadequada ou nao chegou. Perceba que a informacao nao chega inteira mas segmentada em centenas ou milhares de pacotes, dependendo do tamanho do que se quer enviar. Entao como o TCP ao receber o pacote sabe em que ordem ele deve ficar? Nesse caso entra o TCP de origem. O TCP do computador de origem fornece um numero sequencial a cada pacote segmentado pelo IP. Assim, quandos os pacotes chegam no destino, o TCP de destino se incumbe de "ver" esses numeros e po-los na ordem correta e nao na ordem em que chegam. Já pensou se nao fosse assim? Quando uma pagina html fosse "aberta" no seu navegador ficaria tudo desorganizado, porque o seu TCP os receberia e os ordenaria do modo como chegassem. Outro protocolo que acredito que poucas pessoas possam conhecer ou se conhecem tem certa duvida é o UDP. O UDP (User Datagram Protocol) possui as mesmas qualificacoes que o protocolo TCP e exerce a nivel de rede a mesma coisa. A diferenca real se resume no fato de que qualquer conexao realizada por UDP é bastante falha e insegura. Enquanto o TCP fornece um numero sequencial a cada pacote a fim de serem reorganizados na ordem correta, o UDP envia os pacotes a esmo, ou seja, sem sequencia. Quando esse pacotes chegam no destino fica meio dificil a conexao. Mas ai fica a pergunta: para que diabos serve o UDP entao? Bom, se voce tem certeza que possui uma conexao confiavel e sabe que os pacotes nao irao se perder no meio do caminho ou entao que chegarao na ordem correta, o UDP pode ser a sua escolha. Nesse caso nao se perderia tempo na reordenacao de pacotes. Um exemplo paratico de quando se usa o UDP? quando se nuka alguem ou quando se da o chamado death ping. Ninguem vai se preocupar em enviar alguma coisa a vitima na ordem correta. O objetivo do nuke eu creio que você já conheca. Entao pode ser uma boa pedida já que o envio é mais rapido, se bem que nuke alem de ser condenavel eh um pouco antigo e diversas formas de protecao jah foram feitas. Bom, entao alguem poderia se perguntar: "mas e como fica o IP?". Bom, o IP fica na mesma, ou seja, ele, a nivel de rede, continua a exercer a mesma funcao de antes e nao é porque foi incluido o UDP que ele nao vai ser usado. Isso não implica. O TCP ai foi substituido meramente para se acelerar o processo ou com algum outro proposito como o do nuke ou death ping. Os Servidores Bom, resolvi incluir esse adido como parte integrante desse tutorial a respeito de modos de transmissao em redes por ser um assunto que, acredito, muita gente ainda faça bastante confusao. Como havia dito em outra parte do texto, IP sao numeros de 32 bits segmentados em quatro partes cada uma contendo oito bits, um byte portanto. Quando voce faz uma comunicacao remota com um computador qualquer em especial os que atendem servicos, os chamados servidores, o IP fornece um numero de identificacao que recebe o nome de IP como simples alusao ao serviço que ele faz. Nao so o numero de identificacao do seu proprio host mas tambem do servidor que atendera os pedidos. Entao, quando voce faz a solicitacao de um pedido qualquer a um servidor como o ftp por exemplo, junto a ele vai o seu IP e o IP do servidor. Lembre-se que o processo IP "quebra" qualquer informacao em pequenos pacotes conhecidos como datagrams. Entao como é feita a comunicacao? Bastante simples: vamos supor que voce esteja no seu navegador, um Netscape por exemplo, e voce quer acessar uma pagina qualquer. Entao voce descreve uma url e aponta o browser nesse pedido. O IP entao entra em açao. Ele agrupa esse pedido num unico pacote contendo os Ips de identificacao e manda ao servidor que atendera os pedidos. (*Eu nao sei como funciona um servidor como um Windows® NT, por exemplo, entao vou descrever como se processa tudo em uma maquina padrao POSIX, um Linux por exemplo. Embora o NT esteja incluido nesse padrao tambem, eu nao sei como o servico é atendido por la.*) Esse pacote chegando por la é recebido por algo como se fosse um grande secretario geral de um grande departamento. O responsavel nesse caso seria o que é chamado em servidores UNIX de daemon, mais conhecido como inetd (nao vou entrar em detalhes sobre isso, acredito que ira fugir bastante do assunto em questao). Esse "secretario geral" atende todos os pedidos que chegam, mas desvia o sercvico a um servidor especifico que no nosso exemplo sera o httpd (outro daemon) . Nesse caso, o servico que o inetd fez foi somente "avisar" ao pacote que ele por si nao faz o servico, mas avisa quem é o responsavel, o httpd. Entao, chegado o pedido, o httpd verifica em seus arquivos (novamente nomes de arquivos nao sao importantes ao entendimento do assunto, isso é uma questao especificca a assuntos em UNIX e nao é preciso entrar em detalhes sobre isso) onde se encontra, por exemplo, uma pagina qualquer. Encontrando essa pagina, o httpd a organiza e segmenta em pacotes e envia ao computador que fez o pedido, o cliente. Os pacotes recem chegados no computador de origem sao colocados em sua ordem correta e a aplicacao cliente, o Netscape, ira se encarrega de mostrar o conteudo da pagina que foi organizada. Portas de Comunicação Esse é outro assunto bastante difundido na internet e temido por muita gente. Mas antes, merece uma descricao detalhada: Tal como os numeros IP, numeros de portas sao formados por bits. As portas sao atendidas em numeros que vao de 0 a 65534 (na verdade o mais correto seria de 1 a 65535. Ate agora nao vi nenhum servidor que atendesse em portas de numero 0). Numeros de portas de comunicao sao formadas por sequencia de 16 bits dividido em duas partes cada uma com um byte portanto e separados por pontos de divisao como em um numero IP. Como havia dito, numeros de portas vao de 0 a 65535, sao muitas portas portanto e cada uma destinada a alguma conexao qualquer. Lembre-se que a cada dia sao inventados novos servicos que se utilizam do protocolo TCP/IP como meio e esses novos servicos, vamos citar como exemplo o ICQ, precisam de uma dessas portas disponiveis para conexao. "Qualquer uma?" -- Sim, qualquer uma. Nao ha um padrao para as portas serem abertas com o mesmo numero anterior. O Sistema Operacional se encarregara de escolher uma porta adequada nao necessariamente igual a anterior. Numeros de porta inferiores a 1024 sao destinadas ao computador que atende determinado servico. Voltando ao exemplo anterior, o dos servidores: observe que esse pedido é sempre atendido na porta 80 (porta padrao de servicos http), contudo, nada impede que essa porta seja atendida em outro numero. Em relacao a isso, tal pratica é muito corriqueira, ou seja, numa Intranet, por exemplo, é bastante comum o administrador da rede reservar um numero maior a um servico especial que nao possa ser acessado assim tao facilmente. Nesse ultimo exemplo, vamos supor que o administrador tenha ficado receoso porque algumas pessoas estao conseguindo acessar um determinado servico que, embora deva ficar sempre no ar porque atende a certas pessoas, nao deve ser acessivel a todos. Entao ele pode muito bem mudar a porta padrao do servico - vamos supor um telnet que atende na porta 23 - para algo em torno de 56263. Bem, o administrador é realmente uma pessoa responsavel e muda todos os dias o endereco da porta de forma a que ninguem possa acessa-lo assim tao facilmente, dessa forma se tornando bastante dificil a alguem o acesso a esse servico. Essa é uma pratica bastante difundida em servidores particulares visando a seguranda de toda a rede, mas nao pde ser usada em servidores permanentes como um proevdor de acesso a intenet. Nesse caso , a medida mais correta é inabilitar o servico inteiro já que nao se pode avisar a todos os usuarios que o numero da porta mudou de numero. Alguem pode estar se perguntando: "Ok, entendi o que voce quis dizer. Mas vamos supor que o meu progama cliente, o que envia o pedido, vamos supor um telnet, queira se comunicar com um servidor telnet remoto. Nao saberia ele a porta correta de comunicao?" -- BBBem, nao é assim tao simples. Já pensou se tudo fosse assim? Simplesmente eu saberia onde qualquer servico é atendido e todo o trabalho do administrador vai por agua a baixo com todas aquelas mudancas de numeros. Na verdade, o seu telnet envia o pedido e o inetd o repassa ao telned. Mas acontece uma coisa: se eu mudar o endereco de porta do telnet para outro numero qualquer, o inetd nao sabera o numero a nao ser que eu o informe. O pedido vai ser atendido? Nesse caso nao. Mas se voce indicar a porta correta onde o servico esta disponivel, a comunicacao sera estabelecida. Entao, voce teria de apontar o numero correto ao seu cliente telnet e este enviaria o numero ao servidor remoto. Simples? Pois é, é assim que as coisas funcionam e a seguranca é mantida. Algo importante que nao foi explicado anteriormente é que um dos papeis que o TCP exerce nesse monte de protocolos é que ele fornece o numero da porta a ser atendida. Assim, me utilizando do cliente telnet, o TCP fornece o numero da porta. Mas quem envia é o IP. Confundiu? Vamos dizer assim: O IP é responsavel na rede pela transmissao de pacotes, como você já sabe. Em cada pacote vai o IP de destino e de origem (isso esta meio repetitivo mas é necessario). Isso é como se fosse um envelope onde no corpo externo da carta vai o endereço para onde quero enviar, o destinatario, e de onde foi mandado, o remetente. Dentro do envelope vai uma carta. Nessa carta sao fornecidos os enderecos de portas onde o servico é atendido. É interessante dizer que o IP nao sabe o numero da porta, isso é papel do TCP ou do proprio UDP. Nem o UDP nem o TCP sabem para onde vao, ou seja, eles nao sabem quais sao os numeros IP. Bom, ok. Mas e quanto aos numeros de portas acima de 1024? Bem, essas sao destinadas apenas a comunicao entre programas que se utilizam de TCP/IP. Como havia dito mais acima, vamos citar o exemplo do ICQ. Otimo programa. Quando voce estabelece uma comunicacao com os servidores que conectam voce ao ICQ, automaticamente é aberta uma porta de comunicao. Se voce executar qualquer PortScan para rastreamento de portas abertas, voce ira verificar que uma porta, sempre acima de 1024, foi aberta. Voce pode verificar agora mesmo se alguma porta de comunicacao foi aberta no seu micro. Simplesmente no prompt do seu MS-DOS digite:netstat -an. Algo como o que segue abaixo vai aparecer: Route Table Active Connections Prot o Local Address Foreign Address State TCP 127.0.0.1:1041 0.0.0.0 LISTENING TCP 127.0.0.1:1041 127.0.0.1:110 ESTABLISHED TCP 200.215.169.67:1034 200.215.160.63:110 TIME_WAIT TCP 200.215.169.67:1040 200.215.160.63:110 TIME_WAIT TCP 200.215.169.67:137 0.0.0.0:0 LISTENING UDP 200.215.169.67:138 0.0.0.0:0 LISTENING UDP 200.215.169.67:139 0.0.0.0:0 LISTENING Podemos interpretar isso assim: Proto: é o protocolo utilizado para transportar o servico, nesse caso foi utilizado o TCP, mas poder poderia ter sido utilizado o UDP sem problemas, quer dizer, ate certo ponto e dependendo do servico. Local Address: É o numero de porta local ode foi estabelecida a conexao. Observe que foram todas acima de 1024. Excecoes foram vistas mas serao explicadas. Foreign Address: É o endereco de porta remoto onde a conexao foi estabelecida. Foi colocado o nome do protocolo que atende o servico, o pop3. Poderia ter sido colocado o numero de porta sem problemas, nesse caso ficaria 110. State: Define o estado em que a conexao se encontra no momento. Desses estados, tres foram efetuados: listening: isso é a espera de conexao que ainda nao foi estabelecida. No momento em que foi executado o netstat, a porta estava sendo ouvida. A grande gama de produtos disponíveis para a informatização e automação de processos sempre foi voltada para as médias e grandes empresas. Com as ferramentas disponibilizadas na Internet, muitas delas a um custo irrisório, estão surgindo recursos que permitem a empresas de qualquer porte implementar uma rede corporativa com baixo nível de investimento quando comparado aos sistemas proprietários. O uso de sistemas de informação proprietários sempre exigiu pessoal técnico especializado, treinamentos, investimentos em equipamentos de grande porte, em aplicativos e consultores que somente se justificavam em grandes corporações capazes de amortizar tais investimentos em períodos longos. Porém muitos especialistas, recomendam para as empresas de pequeno porte apenas o acesso à Internet através de um Gateway na rede local, onde diversos microcomputadores terão acesso simultâneo à Internet utilizando apenas um modem e uma única linha telefônica (dedicada ou telefônica comum). A comunicação com filiais, fornecedores pode ser facilitada com a utilização correio eletrônico e até mesmo troca de arquivos via Internet. Mas como em qualquer rede corporativa, a implantação de intranets exige planejamento além de investimento de tempo e capital, porém, os benefícios obtidos com a otimização de processos e a organização de informações tem levado empresários, diretores e gerentes de empresas a darem uma atenção especial a esta tecnologia As Vantagens • É uma excelente plataforma para divulgação de informações sobre marketing, pessoal, benefícios e política corporativa internamente. • Paginador Web com múltiplos recursos está disponível para praticamente qualquer sistema operacional cliente. • Pode substituir tanto os sistemas de informação para executivos (EIS) como os de computação colaborativa. • Os servidores Web não necessitam de tanto hardware e espaço em disco como os pacotes de software para grupos de trabalhos clássicos. • A tecnologia Web apresenta capacidade expansão e pode ser utilizada através de redes remotas. • A Intranet fornece os recursos da Internet sem o risco de invasão. • As informações confinadas numa rede Intranet são acessíveis apenas à organização a que pertence e às pessoas autorizadas por ela. • Os produtores de front-end competem entre si, o que resulta em baixa no preço dos produtos e até produtos gratuitos. • Diminui gastos com hardware e software, treinamento, troca de arquivos, backups periódicos, gerenciamento e tudo o que é necessário para uma rede convencional funcionar. • Disponibiliza as informações sob demanda, quando e onde ela é necessária. • Mantém uma única fonte de informação. • Utiliza o mesmo pessoal que normalmente seria responsável por preparar o material impresso. As Desvantagens • Os grupos de trabalhos tradicionais, apresenta aplicativos de colaboração mais poderosos. • Não existe um sistema unificado como os pacotes de grupos de trabalho. É necessário configurar e manter aplicativos separados, como correio eletrônico e servidores Web. • As Intranets exigem uma rede com o protocolo TCP/IP, ao contrário de outras soluções de software para grupos de trabalho que funcionam com os protocolos de transmissão de rede local existentes. • Deve-se manter uma equipe de manutenção do servidor Web, em dedicação exclusiva, a nível de fazer e manter páginas Web, pois as informações ali guardadas são dinâmicas, dependendo do caso, podendo ser alteradas da noite para o dia. Como construir uma Intranet: Escolha de uma plataforma Os softwares para Intranet estão disponíveis em praticamente todas as plataformas. É recomendável escolher um ambiente robusto, com boas ferramentas de segurança e gerenciamento. Historicamente, o Unix tem sido preferido nessa função. É para ele que foi criada a maior variedade de programas capazes de implementar e gerenciar essas redes. "É o mais confiável. Já tem muitos anos de tradição", diz Sérgio Pretto, diretor da prestadora de serviços Nutec. No entanto, o Windows NT vem emergindo como alternativa atraente. "É mais barato contratar um especialista em NT do que um conhecedor do Unix", argumenta Paulo Marques, especialista da U-Net. O NetWare aparece como uma opção para a empresa que já possui uma rede Novell e quer aproveitar um servidor existente. Sua principal limitação é a escassa oferta de softwares de Intranet. O programa básico que vai implementar a rede é o servidor de Web, também chamado de servidor HTTP (leia a tabela 01). Em geral, ele proporciona vários outros serviços aos usuários, além de suprir as páginas de hipertexto que caracterizam a Web. Outro software básico é um servidor de correio eletrônico que, na Internet e nas Intranets, segue o padrão SMTP/ POP3. O Unix já vem com uma ferramenta desse tipo, mas ela oferece poucos recursos, o que torna recomendável a instalação de um programa adicional. Isso pode ser dispensado se a organização já possui outro sistema de correio eletrônico. Um servidor de grupos de discussão também é útil. Ele cria newsgroups semelhantes aos da parte da Internet conhecida como Usenet. "A empresa pode definir, por exemplo, uma área para a troca de informações sobre um determinado aplicativo ou sobre ocorrências de suporte e de manutenção", exemplifica Paulo Marques. Outro serviço popular na Internet, o Telnet (emulação de terminal) serve, na corporação, apenas para permitir a administração remota do servidor. Essa facilidade está disponível nativamente no sistema Unix. O recurso de conversa on-line do tipo IRC, Internet Relay Chat, é outro opcional que pode ser agregado ao sistema. Normalmente, não é necessário adquirir todos esses programas separadamente. Pacotes como o da Netscape e o da Microsoft já oferecem vários desses serviços integrados. Servidores Intranet Não existe uma regra exata para dimensionar um servidor de Intranet., recomenda-se como ponto de partida, um Pentium de 133 MHz com 64 MB de memória e 4 GB de disco SCSI. Essa configuração é capaz de atender a mais de uma centena de seções HTTP simultâneas. É adequada para uma organização com várias centenas de usuários. O computador deve estar equipado com drive de CD-ROM e com um dispositivo de backup, que pode ser uma unidade de fita do tipo DAT. O que é colocado nos servidores Web de uma Intranet Procedimentos administrativos internos, manuais de funcionamento de departamentos, atribuições das funções e cargos dos funcionários, tabelas de preços, circulares, descrição de produtos, notícias do dia, notícias da semana, e tudo aquilo que a criatividade permitir. Hipertexto Para que a Intranet atinja seu pleno potencial como ferramenta de gestão, ela deve comunicar-se com os bancos de dados da empresa. Assim, seus executivos poderão utilizar o navegador de WWW para acessar as informações corporativas. A maneira clássica de fazer essa ligação é por meio da interface CGI, Common Gateway Interface. Cria-se um formulário em HTML no qual o usuário vai especificar que informações deseja consultar. Um programa, desenvolvido em Perl (Practical Extraction and Report Language) ou em outra linguagem de programação, recebe a solicitação pela CGI e se encarrega de repassá-la ao gerenciador de bancos de dados. Atendido o pedido, os dados são inseridos em uma página HTML, que é enviada ao usuário que a requisitou. Um exemplo típico de aplicação desse tipo é um banco de dados de telemarketing. O profissional que atende ao telefone preenche um formulário com os dados a registrar. Para buscar uma informação específica na base de dados, utiliza outro formulário. A comunicação entre o aplicativo e o gerenciador pode ser feita por meio da linguagem SQL, pelo padrão Microsoft ODBC ou pela linguagem de consulta nativa do gerenciador. Esta última opção, que proporciona um melhor desempenho, é oferecida por fabricantes de bancos de dados, como Oracle, Sybase e Informix. Segurança Mesmo com uma rede totalmente privativa, é possível ter conexões remotas por meio de linhas telefônicas discadas ou dedicadas. No entanto, muitas companhias preferem ligar suas Intranets à Internet e, assim, aproveitar a estrutura de comunicação da rede mundial. Essa abertura para o mundo externo possibilita, ainda, que os parceiros comerciais da empresa acessem seus registros para obter determinadas informações. A conexão com a Internet é potencialmente perigosa porque cria uma porta por onde os eventuais sabotadores e bisbilhoteiros podem entrar nos sistemas da empresa. Por isso, requer cuidados especiais com a segurança. O principal deles é a instalação de um firewall (parede contra fogo), uma espécie de guarda de fronteira que passa a controlar que tipo de informação pode entrar ou sair da empresa. A maneira mais segura de implementar isso fisicamente é definir um segmento à parte na rede apenas para os servidores que terão acesso pela Internet. Esse segmento se liga à rede interna da companhia por meio de um roteador ou do próprio firewall. A conexão física com um ponto de acesso à Internet -- a Embratel, por exemplo -- é feita por um modem ligado a uma linha de comunicação dedicada e ao roteador. Embora haja equipamentos especialmente construídos para atuar como firewall, a maneira mais comum de implementar esse aparato é rodando um software específico num servidor equipado com duas placas de rede. Há dois tipos básicos de firewall. O primeiro atua como um filtro de pacotes. O protocolo TCP/IP, que forma a base da Internet e das Intranets, divide a informação em pequenos pacotes. Cada um deles contém, entre outros elementos, seus endereços de origem e de destino. O firewall de pacotes verifica esses endereços, barrando a passagem quando se tratar de um emissor não autorizado. Há muitas histórias de hackers habilidosos que conseguiram enganar um firewall de pacotes e invadir um sistema. Um método popular consiste em filtrar todos os pacotes por meio de um programa que falsifica o endereço do emissor de forma a dar a impressão de que o acesso está sendo feito de dentro da empresa. Para evitar isso, muitas organizações protegem suas Intranets com firewalls de aplicações, considerados mais seguros. O firewall de aplicação analisa a solicitação de acesso e verifica que tipo de serviço o usuário está querendo obter. Quando se trata de serviços considerados perigosos para a segurança do sistema, o acesso é barrado. É o que acontece, por exemplo, se alguém tentar assumir o controle do servidor via Telnet. Como norma de segurança, o firewall de aplicações bloqueia todos os tipos de serviço que não foram explicitamente liberados pelo administrador. Nesse ponto, é necessário muito cuidado para não limitar demais a liberdade dos usuários e, ao mesmo tempo, não criar brechas na segurança. "Configuração de firewall é um trabalho para profissionais. A empresa não deve hesitar em pagar um especialista em segurança para isso", recomenda Paulo Marques, da U- Net. Além da instalação do firewall, há outros cuidados a tomar para garantir a segurança na Intranet. Os usuários devem ser divididos em grupos com direitos de acesso específicos. Assim, por exemplo, apenas determinados executivos conseguirão obter dados financeiros da companhia. Todos devem ter um controle de senha para ingressar no sistema. O servidor deve ficar fisicamente protegido para que somente os operadores do sistema possam manuseá-lo. Por fim, é indispensável ter um no-break e uma programação de backup (produção de cópias de segurança) para todos os documentos armazenados. Com esses cuidados, o risco de ter uma rede de portas abertas para o mundo pode ser mantido sob controle. Ao mesmo tempo, evita-se o risco maior de, por falta de uma comunicação interna eficiente, a empresa tornar-se menos competitiva e perder espaço para os concorrentes. O crescimento de servidores internos (máquinas que permitem que computadores pessoais individuais compartilhem arquivos) já está ultrapassando os servidores externos. Hoje, aproximadamente dois terços dos 240.000 servidores do mundo estão voltados para o uso interno e privativo, de acordo com a Netscape Communications Corp. O San Jose Mercury News calculou que para o ano de 2000 haverá 10 vezes mais servidores de Intranet do que Internet. Os fabricantes de servidores, como a Compaq, acreditam agora que as vendas de servidores para a Internet possam representar até 40% do mercado total de servidores nos Estados Unidos e na Europa. Mas o que só foi descoberto agora é que uma grande quantidade destes servidores de Internet na realidade são servidores de Intranet. Crescimento das Intranets no mercado mundial. Conforme previsões da Zone Research para 1998 o faturamento dos servidores Intranet em todo o mundo será da ordem de US$ 7,8 bilhões, quase 4 vezes o tamanho do mercado de servidores de Internet, de US$ 1,8 bilhões. Conforme declarações do grupo europeu de pesquisa de mercado, Input, para 2001 os produtos e serviços relacionados com a Intranet representarão 20% do mercado total de produtos e serviços da TI. Isso representa um crescimento combinado anual de 130%, o dobro do previsto para as vendas de Internet, e muito, maior que o crescimento das tecnologias convencionais de sistemas cliente/servidor. Estas projeções são espetaculares, até para os padrões de um mercado acostumado a picos de crescimento de até três dígitos. Extranet É o nome dado a um conjunto de Intranets interligadas através da Internet. É uma rede de negócios que une empresas parceiras por meio de suas Intranets utilizando os padrões abertos da Internet. Esses parceiros não precisam Ter o mesmo tipo de computador (hardware), sistema operacional , gerenciadores de banco de dados (software) ou browser para navegação. Esta é uma das formas mais baratas, fáceis e inteligentes para as empresas se interligarem com os parceiros e clientes. Principalmente para aqueles que já são usuárias de Internet e as que já possuem uma Intranet. Mas é necessário com a Intranet se ter uma política de segurança, ou seja, é preciso se ter desde do início, quando se estar instalando a senha para acesso de cada participante, até um firewall, dependendo do nível de preocupação da empresa. Principais Termos A proliferação das redes intranet trouxe para dentro das empresas uma série de siglas e conceitos que devem estar na ponta da língua dos técnicos. Veja a seguir os principais termos relacionados a Internet/Intranet: - CGI (Common Gateway Interface) - Conjunto de regras que descreve como um servidor Web se comunica com um programa existente na mesma máquina (chamado programa CGI). Normalmente, o programa CGI recolhe os dados enviados pelo servidor e coloca o conteúdo numa mensagem ou num banco de dados. - DN (Domain Name) - Um nome único que identifica os sites na internet. Para tradução do nome de um endereço, é necessário um programa especial chamado Domain Name Server. - Firewalls - Combinação de hardware e software que separa uma rede LAN em duas ou mais partes. O objetivo é evitar que intrusos tenham acesso a dados confidenciais. - FTP (File Transfer Protocol) - Método muito comum de mover arquivos entre dois sites na internet. Usado para grandes arquivos. - HTTP (Hyper Text Transport Protocol) - Protocolo utilizado para mover arquivos de hipertexto na internet. Necessita de um HTTP cliente (o navegador), de um lado, e de um HTTP server (servidor Web), de outro. - ISAPI (Internet System Application Program Interface) - Conjunto de chamadas desenvolvido pela Microsoft para acesso acesso ao seu servidor Web. - NSAPI (Netscape System Application Program Interface) - Conjunto de chamadas desenvolvido pela Netscape para acesso ao seu servidor Web. - POP (Post Office Protocol) - Maneira como um software de correio eletrônico, como o Eudora, localiza as mensagens num servidor. Em virtude disso, o custo da integração da Web começará a aumentar. Nesse momento, é provável que cada um dos departamentos comece a solicitar que esses custos de integração sejam alocados globalmente, entre os grupos, e não localmente. Não seja muito duro com esses departamentos - eles estão certos. Você deverá prever esse estágio de desenvolvimento alocando determinados custos em uma escala maior que outros. O mapa de fiação, por exemplo, de uma rede empresarial pode ter um componente local (para que um grupo de 100 nós pague mais que um de apenas 10 nós), mas a maior parte da despesa será compartilhada. Isso faz sentido, pois a rede é um recurso compartilhado. Da mesma forma, uma intranet local pode ser custeada localmente até o ponto em que as demandas globais relacionadas a seu conteúdo possibilitem a definição de parte do recurso, pelo menos, como propriedade comum. Uma abordagem preventiva em relação ao custeio pode impedir que os grupos isolem seu conteúdo. Esse tipo de territorialidade tem sempre um motivo econômico. Se a gerência incentivar o compartilhamento de informações, por exemplo através da divisão do custeio, os grupos trabalharão melhor em conjunto. Afinal, não é exatamente para isso que você está montando uma intranet? Justifique o Seu Investimento em uma Intranet Ter em mente os benefícios e identificar os custos do ciclo de vida constituem a base para o planejamento do projeto de uma intranet, e também a chave para justificar esse investimento. O perfil da sua intranet pode diferir consideravelmente da intranet apresentada, pois as suas metas específicas podem exigir atributos de projeto com custos associados. No entanto, você deverá ser capaz de usar a abordagem apresentada a seguir como um ponto de partida para o cálculo do valor "líquido" do projeto. Como Compor uma Estimativa de Custo A tabela apresentada abaixo fornece uma noção inicial dos custos de uma intranet. À medida que o projeto se desenvolver, retorne essa tabela e redefina as suas estimativas para manter um quadro preciso do investimento. Item de Linha Iniciais Contínuos CONFIGURAÇÃO DO CLIENTE Pilha TCP/IP (Inclui o Winsock) Licenciamento Instalação Suporte Navegador Avaliação Licenciamento Integração Plug-ins Atualização de Plataforma Memória/Processador Disco Sistema Operacional Configuração do Servidor Web Licenciamento Instalação e suporte Outros Softwares do Servidor Gateway SMTP (correio eletrônico da intranet) Servidor Proxy Servidor de artigos (news server) Recursos de pesquisa Acesso a bancos de dados Analisadores de log Certificados digitais (para servidores seguros) OUTROS SOFTWARES Ferramentas de Autoria Editores de HTML Editores Gráficos Software de gerenciamento do site Ferramentas de Desenvolvimento Plataformas de programação Novas linguagesn (Java, VBScript) Bibliotecas de códigos CUSTOS DE PESSOAL Treinamento Navegação/Pesquisa/Recuperação Específicos do aplicativo Qualificação do provedor de conteúdo Manutenção do Conteúdo Horas por arquivo Arquivos por semana Gerenciamento e Suporte Administração do servidor Web Suporte interno Comitê de normalização Como Estimar o Retorno sobre o Investimento A checklist de benefícios apresentada a seguir dará algumas idéias. Ao preencher essa lista para a sua empresa, dedique atenção especial ao momento da ocorrência dos benefícios e das despesas. Um investimento que é recompensado em um período de seis meses é muito mais interessante que um investimento que promete um retorno após cinco anos. OBS : Os benefícios que você estabelece nesta etapa tornam-se as metas de desempenho da sua intranet. Toda decisão sobre tecnologia ou conteúdo deverá ser avaliada com base nessas metas. Os benefícios mostrados a seguir se enquadram nestas duas categorias: novas receitas e custo reduzido. Lembre-se de que são apresentados apenas exemplos dos benefícios que você pode estabelecer para a sua empresa. Alguns dos benefícios apresentados podem não se aplicar ao seu caso específico, e você pode considerar outros que não constem nesta lista. Benefício Resulta de... Novas Receitas Análise de mercado aprimorada Análise competitiva aprimorada Gerenciamento de contatos aprimorada Tempo de lançamento reduzido Cobrança aprimorada Novos serviços Custo Reduzido Redução do quadro de funcionários Redução do tempo de duração das reuniões Redução das viagens Redução dos custos de processo Inventário reduzido (em virtude do processamento just-in-time) Aquisição mais rápida (através da automaçáo do fornecimento, por exemplo) Conclusão 1. custo da operação e da manutenção de uma rede de computadores aumenta exponencialmente em relação ao número de usuários associados, ao passo que a utilidade da rede aumenta mais lentamente. As intranets não são uma exceção. 2. Ao definir o escopo da sua primeira intranet, inclua o menor grupo capaz de tirar proveito da nova Web e se concentre em satisfazer aos requisitas dessa equipe. 3. Quando chegar o momento de ampliar as suas Webs internas, promova a expansão ao redor dos grupos de trabalho ou centros departamentais importantes (centros funcionais). 4. Envolva os usuários de forma intensa na experiência com uma intranet desde o planejamento conceitual. 5. Enquadre os custos nestas duas categorias: custos iniciais -que correspondem a despesas realizadas uma única vez, como, por exemplo, a aquisição de equipamentos - e custos contínuos - por exemplo, os custos decorrentes de contratos de manutenção de software. 6. Enquadre os benefícios pretendidos nestas duas categorias: custos empresariais reduzidos e perspectiva aprimorada de receita. O que diferencia a Internet da Intranet A Internet define tecnologias com o propósito de globalização da comunicação (externa), enquanto a Intranet aplica essas tecnologias dentro de uma organização, possibilitando a sua comunicação interna. Vantagem que a Intranet tem sobre a Rede Local Em uma rede empresarial típica, você normalmente precisa saber o nome do arquivo que contem as informações que deseja. Depois o nome da pasta ou do diretório em que o arquivo está guardado e saber em qual disco e servidor se encontra. Para um especialista, isto é uma coisa corriqueira. Mas pode virar um dor de cabeça, mesmo para um especialista, quando alguem muda o nome, localização ou conteúdo de um arquivo, e para quem é apenas um usuário isto pode ser um grande problema, senão impossível. O que é necessário é uma página de texto que descreva o que está acontecendo para que enquanto se navega de um lugar para outro, tenha-se a mão um guia que explique o conteúdo e a localização dos arquivos. Esse texto descritivo, explicando como a informação é organizada, é exatamente o que uma intranet fornece. Remoteware O Remoteware é um recurso de conectividade desenvolvido para responder às necessidades de conexão remota dos atuais usuários de ambiente DOS / NOVELL(*), que tenham aplicações desenvolvidas em quaisquer linguagens (Clipper / COBOL / Pascal / C / etc.), já estáveis e confiáveis, e que não tenham tempo, "folga orçamentária", paciência e espírito de aventura suficientes para começar sua INTRANET jogando fora todo o investimento já realizado no passado, começando do ZERO. O remoteware é uma solução de software e hardware que visa solucionar os problemas das empresas que precisam efetuar o acesso remoto a servidores / sistemas em ambiente DOS/NOVELL(*), sem abrir mão do desempenho da rede local, mesmo que num acesso de baixa velocidade (mínimo de 19.2Kbps), para operar uma aplicação escrita em Clipper, manipulando dezenas de arquivos. Como é feita a segurança na conexão com a Internet A confidencialidade dos dados da empresa é de extrema relevância num projeto de Intranet, o qual deve estar em conformidade com a política de segurança da corporação. Quando uma empresa se conecta a Internet, todos os seus funcionários podem, confortavelmente e ao mesmo tempo, acessarem a Internet. Da mesma forma, qualquer pessoa ou empresa conectada a Internet pode também acessar os dados da empresa em questão, incluindo seus clientes e concorrentes. Surge portanto a necessidade de controlar o acesso à rede de dados, separando o que se deseja que seja público do que se quer manter sob acesso restrito. Num projeto Intranet, a proteção ou restrição de acesso aos dados é vital e é feita através de um mecanismo ou ferramenta conhecido como porta fogo (FireWall). O FireWall é uma combinação de Hardware e Software, com características tais como filtros de endereçamento, isolação rede local x remota, criptografia, autenticação, entre outras. Podem ser implementados parcialmente em roteadores, ou em sua totalidade em microcomputadores e até mesmo equipamentos dedicados. Existem diversos produtos no mercado para Windows NT, Unix, etc. e tem preços que variam de R$ 3.000 a R$ 30.000. Web Sites <http://www.computerworld.com.br/><http://www.megasisti.com.br/artigos/garcia/><http://www2.uol.com.br/info/ arquivo/ie121/intranet.html><http://www.elogica.com.br/users/giuseppe/><http://www.artnet.com.br/> http://www.netds.com.br/><http://www.geocities.com/EnchantedForest/Fountain/3919/><http:// www.viavale.com.br/~v0199601/> Apostila de Banco de Dados e SQL Autores: Prof. Jorge Surian Prof. Luiz Nicochelli Introdução Devido a carência de literatura destinada ao ensino de Banco de Dados e SQL para estudantes, elaboramos a presente apostila, que não possue o intento de esgotar tão abrangente volume de informações, servindo tão somente para estabelecer um mínimo de conhecimentos destinados a introduzir o estudante no mundo dos Gerenciadores de Banco de dados e da Linguagem SQL. Banco de Dados Todos nós sabemos existirem gigantescas bases de dados gerenciando nossas vidas. De fato sabemos que nossa conta bancária faz parte de uma coleção imensa de contas bancárias de nosso banco. Nosso Título Eleitoral ou nosso Cadastro de Pessoa Física, certamente estão armazenados em Bancos de Dados colossais. Sabemos também que quando sacamos dinheiro no Caixa Eletrônico de nosso banco, nosso saldo e as movimentações existentes em nossa conta bancária já estão à nossa disposição. Nestas situações sabemos que existe uma necessidade em se realizar o armazenamento de uma série de informações que não se encontram efetivamente isoladas umas das outras, ou seja, existe uma ampla gama de dados que se referem a relacioamentos existentes entre as informações a serem manipuladas. De fato, quanto maior o número de pessoas envolvidas no desenvolvimento de aplicações e gerenciamento do Banco de Dados, mais importante tornam-se estas duas características, pois cada novo sistema desenvolvido precisará sempre estar adequado ao Banco de Dados da Empresa e aderente aos padrões de acesso utilizados nos sistemas concorrentes. As interfaces ISQL e WinSQL devem deixar muito claro ao estudante como uma interface pobre (no caso a existente no ISQL) perde muito, quando comparada a uma interface mais recursiva. A esquematização existente no Banco de Dados é muito melhor do que aquela mantida em alguma pasta, em algum arquivo do CPD, que sempre está “um pouquinho” desatualizada. O Controle de Integridade, é outra característica sempre presente nos Bancos de Dados, mas existem diferenças quando da implementação desta característica. Assim, é comum encontrarmos Bancos de Dados que suportam determinado acesso, enquanto outros não dispõe de recurso equivalente. O Backup em tempo de execução, é outra característica sempre disponível, porém temos aplicações que invariavelmente são comprometidas por falhas de hardware, e outras, que o mesmo tipo de falha não causa perda alguma de dados ou de integridade. Novamente, cada Banco de Dados tem esta característica melhor ou pior implementada, cabendo ao Administrador de Banco de Dados escolher aquele que lhe oferecer mais segurança. Devemos ressaltar ainda, que podemos ter um Banco de Dados Modelo A, que respeite integralmente as regras básicas e disponha de todas as características apresentadas, enquanto um Modelo B que apesar de respeitar as regras básicas, não suporte uma ou outra característica desejável, mas tenha um desempenho excelente, enquanto o Modelo A seja apenas razoável no quesito desempenho, nos levará seguramente a escolher o Modelo B como sendo o ganhador para nossa instalação! Isto ocorre pois, na prática, todo usuário deseja um tempo de resposta muito pequeno. O chamado “prazo de entrega” muito comum em Bancos de Dados operando nos limites de sua capacidade, ou nos casos onde o hardware está muito desatualizado, é fonte de inúmeros problemas para o pessoal de informática. Neste caso é melhor abrirmos mão de uma Interface Amigável, de um Gerenciamente Automático de Backups ou ainda de outras características que não julgarmos fundamentais, para nos livrarmos do problema típico de ambiente extremamente comprometido, por má performance do Banco de Dados. A escolha do Banco de Dados da empresa, portanto é uma decisão muito delicada, na medida em que está irá acarretar troca de aplicativos e troca de hardware. Os investimentos diretamente aplicados no Banco de Dados, costumam ser infinitamente menores do que aqueles a serem aplicados na empresa, visando sua perfeita adeqüação ao novo SGBD. Esta decisão, sempre que possível, deve ser tomada por especialistas em Banco de Dados, com profundos conhecimentos de Análise de Sistemas, de Banco de Dados e de Software de Gerenciamento de Bases de Dados, de forma a evitar que a empresa escolha um Banco de Dados inadequado aos seus propósitos, e que pouco tempo depois, seja obrigada a perder todos investimento realizado em Software e Hardware. Arquitetura de um SGBD Estrutura Podemos dizer que o Banco de Dados tem um Nível Interno, onde é descrita a estrutura de armazenamento físico dos dados, um Nível Intermediário, onde temos a descrição lógica dos dados e um Nível Externo onde são descritas as visões para grupos de usuários. Não podemos deixar de lembrar ainda que o Banco de Dados garante a Independência Lógica e Física dos Dados, portanto podemos alterar o esquema conceitual dos dados, sem alterar as visões dos usuários ou mesmo alterar o esquema interno, sem contudo alterar seu esquema conceitual. Modelos de Dados O Modelo de Dados é basicamente um conjunto de conceitos utilizados para descrever um Banco de Dados. Não existe uma única forma de representação deste modelo, porém qualquer forma que permita a correta compreensão das estruturas de dados compreendidas no Banco de Dados, pode ser considerada adequada. Vamos descrever sucintamente este modelo, pois estes serão objetos de outras disciplinas: Modelo Orientado ao Registro: São modelos que representam esquematicamente as estruturas das tabelas de forma bastante próxima a existente fisicamente. Basicamente são apresentados os registros de cada tabela (inclusive seus campos) e seus relacionamentos elementares. O Modelo Relacional, o Modelo de Rede e o Hierárquico são exemplos deste tipo de representação. Modelo Semântico: São modelos onde existe uma representação explícita das entidades e relacionamentos. O Modelo Entidade-Relacionamento e o Funcional, são exemplos deste tipo de abordagem. Modelo Orientado ao Objeto: São modelos que procuram representar as informações através dos concietos típicos da Programação Orientada ao Objeto, utilizando o conceito de Classes que irão conter os objetos. Citamos os Modelos O2 e o de Representação de Objetos como exemplos típicos desta abordagem. O conceito de instância, sempre muito presente, poderia ser definido como sendo o conjunto de dados que definem claramente um Banco de Dados em deteminado instante. Devemos entender então o Banco de Dados como sendo não apenas um conjunto de dados digitados, mas também todo o esquema e regras armazenada e controladas pelo SGBD. Em outras palavras, podemos dizer que os SGBD, vieram para eliminar todo o trabalho que anteriormente um programador de aplicação realizava controlando o acesso, integridade e redundância dos dados. Componentes de um Banco de Dados Um Banco de Dados é composto pelas seguintes partes: Gerenciador de Acesso ao Disco: O SGBD utiliza o Sistema Operacional para acessar os dados armazenados em disco, controlando o acesso concorrente às tabelas do Banco de Dados. O Gerenciador controla todas as pesquisas queries) solicitadas pelos usuários no modo interativo, os acessos do compilador DML, os acessos feitos pelo Processador do Banco de Dados ao Dicionário de Dados e também aos próprios dados. O Compilador DDL (Data Definition Language) processa as definições do esquema do Banco de Dados, acessando quando necessário o Dicionário de Dados do Banco de Dados. O Dicionário de Dados contém o esquema do Banco de Dados, suas tabelas, índices, forma de acesso e relacionamentos existentes. O Processador do Banco de Dados manipula requisições à própria Base de Dados em tempo de execução. É o responsável pelas atualizações e integridade da Base de Dados. O Processador de Pesquisas (queries) dos usuários, analisa as solicitações, e se estas forem consistentes, aciona o Processador do Banco de Dados para acesso efetivo aos dados. As aplicações fazem seus acessos ao pré-compilador DML da linguagem hospedeira, que os envia ao Compilador DML (Data Manipulation Language) onde são gerados os códigos de acesso ao Banco de Dados. Tipos de SGBD Introdução Podemos citar como tipos principais os Bancos de Dados Relacionais, os Hierárquicos, os de Rede, os Semânticos, os Orientados a Objetos e os Universais. Os Bancos de Dados alvo de nosso estudo serão os Relacionais, sendo que os demais tipos serão apenas citados superficialmente, por não serem parte integrante de nosso curso. Esquema de Organização dos Dados Em Linguagem C os estudantes tomaram (ou irão tomar contato) com os ponteiros de registro, que aqui representaremos como sendo números de acesso ao registro. Visando diferenciar o número do registro físico do número do registro apontado pelo ponteiro, usaremos o símbolo (#) para indicar o número do registro físico, enquanto o símbolo (*) será utilizado pelo para indicar o endereço indicado pelo ponteiro, a semelhança da representação usual dos programadores da Linguagem C. Vamos supor o arquivo abaixo ordenado alfabeticamente (físico): #1- Amarelo *2 #2- Azul *3 #3- Branco *4 #4- Preto *5 #5- Verde *6 #6- Vermelho -- Supondo desejarmos incluir a cor Laranja, seríamos obrigado a re-escrever todo o arquivo de modo a Laranja ocupar o registro 4. Vamos antes de fazer uma nova ordenação, analisar a solução abaixo: #1- Amarelo *2 #2- Azul *3 #3- Branco *7 #4- Preto *5 #5- Verde *6 #6- Vermelho -- #7- Laranja *4 Observe que o registro #3 (Branco) passou a apontar para o registro *7, que contém o novo dados (Laranja). O novo dado passa a apontar para o registro previamente apontado pelo registro que agora o aponta. Parece, e é confuso, mas se você analisar o esquema abaixo perceberá que apesar do palavreado confuso, facilmente qualquer um de nós percebe a maneira adequada de inserir novos registros. Algo --> Apontado Algo --> Novo --> Apontado #1 Algo --> *2 #2 Apontado não aponta (é o último física e logicamentex) #1 Algo --> *3 #2 Apontado não aponta (é o último logicamente) #3 Novo --> *2 (é o último fisicamente) A chamada perda de ponteiros, fenômeno dos mais temidos pelos profissionais de sistema, nada mais é que a perda de referência lógica entre registros de uma tabela. Existem diversas técnicas de acesso como as chamadas Btree+ (Arvore Binária Balanceada), Hashing, Sequencial Ordenado, Hashing Dinâmico, Hashing Extensível e Hashing Linear, próprios para um curso específico de Banco de Dados, que não chegaremos a analisar em nosso curso. Sabemos que em linguagem C foi (ou será) apresentada a técnica de balanceamento de estruturas, que mostrou (ou mostrará) como um Banco de Dados é arranjado internamente. Exercício: Represente esquematicamente o arranjo alfabético dos seguintes times de futebol: Fluminense, Flamengo, Vasco, Botafogo, Madureira, América e Olária. Suponha ainda que o Bangu queira participara do campeonato, como ficaria a nova ordem da tabela? Banco de Dados Hierárquicos Seguem o estilo de um organograma empresarial (Diretoria-Divisão-Seção-Setor) ou de biblioteca (Exata- Matemática-Algebra Linear-Vetores). Este modelo é capaz de representar este tipo de organização de forma direta, mas apresenta inconvenientes quando esta situação não aparece claramente com relações de hierarquia. O Exemplo a seguir (Folha de Pagamento) deve servir para esclarecer melhor o estilo deste modelo Fábrica Financeiro Comercial Injeção Extrusão Pagar Receber Contábil Vendas Marketing Paulo Vinícius Vilma Sílvia Dagoberto Juracy Richard Pedro Carlos Ernesto Sandra Paula Pedrinho João Sabemos que Paulo é "filho" da Injeção que por sua vez é "filha" da Fábrica. Banco de Dados em Redes Neste modelos os dados são dispostos em registros, previamente classificados em classes que descrevem a estrutura de determinado tipo de registro. Os registros são descritos em relações de conjuntos onde são estabelecidas as ligações lógicas entre eles. O esquema abaixo representa este tipo de Ligação Fábrica #1 Nome Local ... Apontada Aponta_Início Aponta_Final Injeção #7 Nome Máquina ... Apontada (*1) Aponta_I(*15) Aponta_F(*18) #15 Paulo 28 (Idade) ... (*7) (*17) #18 João 25 ... (*17) (*7) Um confusão habitualmente verificada, diz respeito a confusão que existe entre o conceito do Modelo de Redes e o existente na matemática. No modelo de Redes temos sempre um elemento distitivo, o registro base e a partir dele são dispostos os demais registros. Temos sempre tipos de conjunto, que dispõe de três elementos, a saber: nome, tipo de registro pai e tipo de registro filho. Supondo um Registro contido no Arquivo de Disciplinas ministradas na Íbero, este seria um registro pai, na medida em que conteria a referência aos seus registros filhos (os alunos cursando aquela disciplina). As restrições impostas pelo Modelo de Redes podem ser descritas como de ordem de Entrada e de Existência. Em relação as restrições de entrada citamos a obrigatoriedade de cada novo registro estar conectado (ou apontado, como preferem os programadores C) ao conjunto indicado. Em relação a restrições de Existência podemos dizer que um componente de um tipo de registro pode existir de forma independente de outros desde que esteja conectado a algum outro registro fazendo parte de algum conjunto, ou sendo base de um novo conjunto. A identificação de um conjunto pode ser verificada através do esquema de ligação entre o registro pai e o registro filho, assim sendo, cada instância de conjunto apresenta um elemento de distinção, o tal registro pai, e os registros filhos devidamente ordenados, e portanto passíveis de serem acessados pelos seus elementos. Exemplo: Disciplina Tópicos Avançados e seus Alunos IteQtde O esquema apresentado anteriormente poderia ser inferido diretamente, usando metodologia tipicamente apresentada em Organização e Método. Se soubermos, por hipótese, que um profissional habilitado desenhou o pedido da empresa, e que esta o está utilizando com sucesso, poderíamos basear nosso modelo de dados neste formulário. Devemos notar que muitos Analistas de Sistemas não adotam estes procedimentos, por preferirem os métodos convencionais para elaboração do Modelo de Dados. Considerando qualquer formulário de pedidos podemos notar que o Número do Pedido geralmente tem destaque e sempre é único, ou seja encontramos nossa chave primária da Tabela de Pedidos, como sabemos que um cliente pode fazer mais de uma compra, achamos nossa Tabela de Clientes, que pode ter um Código, portanto achamos sua chave primária, que por conseguinte será a chave estrangeira da Tabela de Pedidos. Um ponto delicado, diz respeito aos itens do pedido, que formam geralmente um espaço destacado dentro do formulário de pedidos. Geralmente, e este é um dos casos, estas áreas em separado dos formulários darão origem a tabelas filhas, como é o caso típico das duplicatas em notas fiscais, ou dos dependentes na ficha de funcionários. Portanto achamos nossa Tabela de Itens que será ligada à Tabela de Pedidos através do Número do Pedido, que é ao mesmo tempo chave primária e chave estrangeira para a Tabela de Itens. Finalmente podemos perceber, que da mesma forma como os clientes se repetem em relação a Tabela de Pedidos, os produtos podem se repetir na tabela de itens (observe que não obstante não termos nenhum pedido com o mesmo item grafado duas vezes, este item pode ser adquirido em outro pedido). Assim descobrimos nossa quarta tabela, a Tabela de Produtos e a chave primária Código do Produto. SQL - Structured Query Language Introdução Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. O Departamento de Pesquisas da IBM, desenvolveu a SQL como forma de interface para o sistema de BD relacional denominado SYSTEM R, início dos anos 70. Em 1986 o American National Standard Institute ( ANSI ), publicou um padrão SQL. A SQL estabeleceu-se como linguagem padrão de Banco de Dados Relacional. SQL apresenta uma série de comandos que permitem a definição dos dados, chamada de DDL (Data Definition Language), composta entre outros pelos comandos Create, que é destinado a criação do Banco de Dados, das Tabelas que o compõe, além das relações existentes entre as tabelas. Como exemplo de comandos da classe DDL temos os comandos Create, Alter e Drop. Os comandos da série DML (Data Manipulation Language), destinados a consultas, inserções, exclusões e alterações em um ou mais registros de uma ou mais tabelas de maneira simultânea. Como exemplo de comandos da classe DML temos os comandos Select, Insert, Update e Delete. Uma subclasse de comandos DML, a DCL (Data Control Language), dispõe de comandos de controle como Grant e Revoke. A Linguagem SQL tem como grandes virtudes sua capacidade de gerenciar índices, sem a necessidade de controle individualizado de índice corrente, algo muito comum nas linguagens de manipulação de dados do tipo registro a registro. Outra característica muito importante disponível em SQL é sua capacidade de construção de visões, que são formas de visualizarmos os dados na forma de listagens independente das tabelas e organização lógica dos dados. Outra característica interessante na linguagem SQL é a capacidade que dispomos de cancelar uma série de atualizações ou de as gravarmos, depois de iniciarmos uma seqüência de atualizações. Os comandos Commit e Rollback são responsáveis por estas facilidades. Devemos notar que a linguagem SQL consegue implementar estas soluções, somente pelo fato de estar baseada em Banco de Dados, que garantem por si mesmo a integridade das relações existentes entre as tabelas e seus índices. O Ambiente SQL Dispomos na Ibero de dois softwares destinados a linguagem SQL o ISQL e o WinSQL. O ISQL faz parte do pacote Ideo e permite construirmos Banco de Dados e tabelas diretamente pelo interpretador SQL, bem como acessarmos as Bases de Dados construídas no Ideo. O ISQL pode gerar Banco de Dados em seu ambiente proprietário (Watcom, hoje pertencente a Symantech) ou ainda nos consagrados Banco de Dados Oracle, SyBase, Ingres (Computer Associates), DB/2 (IBM) e Informix. Devido as origens do Ideo, o Banco de Dados SQL Server da Microsoft não é suportado, pois este Banco de Dados originou-se na microinformática e somente recentemente a Sapiens migrou seu software dos Ambientes Mainframe e Unix. Já o WinSQL é um ambiente inteiramente gráfico (ao contrário do ISQL que guarda fortes características do ambiente em Mainframe onde se originou), destinado ao apredinzado, portanto somente pode criar Banco de Dados em seu formato proprietário. Os comandos do WinSQL por serem visuais, não necessitam de maior esclarecimento além daqueles já contidos no Help. Já o ISQL apesar de possuir um Help bastante completo necessita, em nosso entender, de alguns esclarecimentos iniciais. Uma série de comandos do interpretador, que funciona de forma análoga àquela existente no dBase modo interativo, podem ser utilizados pelo usuário. Não obstante alguns comandos tenham nome idêntico a alguns comandos do DOS, devemos notar que muitas vezes sua sintaxe é bastante diversa daquele sistema operacional. Vamos destacar os seguintes comandos: \EDIT - Carrega o editor de bloco de notas do windows, o qual serve para a criação de arquivos para serem executados no Ideo. Ex: \edit teste.sql \CD - Mostra o diretório onde serão gravados os arquivos *.sql, *.dic *.dat. Permite alterar para determinado diretório (\CD DADO, fará com que o diretório corrente passe a ser C:\DADO, caso o diretório corrente fosse a raiz. Permite retornar ao diretório de nível inferior (\CD ..). Atenção este comando não é análogo ao Change Dir do DOS, na medida em que não permite a mudança direta de um subnível do diretório X para um diretório Y por exemplo. \DEFAULT <drive> - permite alterarmos o drive corrente. Ex: \DEFAULT F: \INCLUDE - Executa arquivos *.sql. O arquivo .sql deverá conter uma série de instruções SQL. Ex: \include teste.sql @< file > ; - Também executa arquivos *.sql. Ex: @teste.sql; EXIT; - Finaliza a sessão do ISQL. ou ( \QUIT ) COMMIT; - Confirma a transação. ROLLBACK; - Desfaz a transação. SHOW <tabela>; - Mostra os nomes das tabelas existentes em determinado banco de dados. Ex: SHOW tables; SHOW FIELDS FOR <tabela>; - Mostra os campos de determinada tabela. Ex: SHOW FIELDS FOR ATOR; SHOW INDEXES FOR <tabela>; - Lista de indices da tabela. SHOW RELATIONSHIPS FOR <tabela>; - Lista de relacionamentos da tabela. LIST <tabela> ; - Lista conteúdo da tabela. Estudo Dirigido Consideramos a linguagem SQL eminentemente prática, desta forma criamos um exmplo completo e propomos um exercício análogo, para tornar o estudante apto a manipular a linguagem SQL de maneira prática, em conformidade a filosofia eminentemente prática da Linguagem SQL. O exemplo apresentado nesta apostila já está disponível para sua utilização do diretório \IDEO\SQL, bastando para isso você copiar este exemplo para seu diretório e iniciar os testes de forma simultânea a sua apresentação pelo professor. É conveniente que você procure montar o exercício clássico (mundo), de forma a testar todos os conhecimentos adquiridos. Para tanto analise cuidadosamente o exercício proposto a seguir, e construa as relações, tabelas e queries adequadas ao final de cada exemplo. Exercício: Elabore Banco de Dados Mundo que contenha as seguintes tabelas: Continente, País e Cidade. Observe que uma cidade deverá pertencer exclusivamente a um país e que cada país deverá estar cadastrado no continente onde se localizar sua área mais importante. Assim não obstante grande parte do território russo fazer parte Ásia, a Rússia será considerada fazendo parte da Europa. Assim teríamos basicamente uma relação do tipo: Cidade --> País --> Continente PARTE I - Comandos de Modificações do Esquema e Criação de Banco de Dados Comando Create Este comando permite a criação de tabelas no banco de dados ou mesmo de sua criação. Sintaxe: CREATE DATABASE < nome_db >; onde: nome_db - indica o nome do Banco de Dados a ser criado. Sintaxe: CREATE TABLE < nome_tabela > ( nome_atributo1 < tipo > [ NOT NULL ], nome_atributo2 < tipo > [ NOT NULL ], ...... nome_atributoN < tipo > [ NOT NULL ] ) ; onde: nome_table - indica o nome da tabela a ser criada. nome_atributo - indica o nome do campo a ser criado na tabela. tipo - indica a definição do tipo de atributo ( integer(n), char(n), real(n,m), date... ). n- número de dígitos ou de caracteres m- número de casas decimais Agora vamos criar uma tabela. Use o editor para salvar em um arquivo ou digite na linha de comando do ISQL. CREATE DATABASE TRABALHO; O comando acima criou um Banco de Dados, porém este na verdade não passa de uma abertura no diretório, pois não conta com nenhuma tabela. Agora criaremos as tabelas que estarão contidas no Banco de Dados TRABALHO. A primeira Tabela será a de Departamentos (DEPT). Esta tabela conterá além dos campos também sua chave primária, suas chaves estrangeiras e também seus índices. A segunda tabela será a de Empregados (EMP), que também será criada. Não devemos esquecer de primeiramente abrirmos o Banco de Dados. Diferentemente do que ocorre em alguns aplicativos, em SQL o fato de criarmos um Banco de Dados, não significa que o banco recém criado já está preparado para utilização. A instrução a seguir, providencia a abertura do Banco de Dados criado. OPEN DATABASE TRABALHO; Agora estamos prontos para criarmos as tabelas necessárias. Lembramos aos Estudantes, que o Arquivo TABS.SQL, contém todas as instruções necessárias para criação do Banco de Dados Trabalho e de suas tabelas. Já o Arquivo DADOS.SQL irá popular estas tabelas. Para efeitos didáticos, criamos as tabelas de forma que sua população, em outras palavras os dados, sejam facilmente referenciáveis pelos estudantes. Assim sendo, na tabela de departamentos, contamos com 5 departamentos, cada um deles tendo seu gerente. Todos os “gerentes” tem nomes de cantoras brasileiras (Gal Costa, Marina Lima, etc), todos os “operários” tem nomes de jogadores de futebol, todas as vendedoras tem nomes de jogadoras de volei, todas as balconistas tem nome de jogadoras de basquete e o presidente da empresa exemplo, tem o mesmo nome do presidente do Brasil. Desta forma os testes devem resultar em grupos bastante definidos. Assim se você estiver listando Gerentes e aparecer um homônimo da Ana Paula (jogadora de volei), verifique sua query atentamente, pois muito provavelmente a mesma estará errada. A seguir código necessário a criação da tabela Departamento e seu índice: Where como base das Restrição de tuplas. A cláusula "where" corresponde ao operador restrição da álgebra relacional. Contém a condição que as tuplas devem obedecer a fim de serem listadas. Ela pode comparar valores em colunas, literais, expressões aritméticas ou funções. A seguir apresentamos operadores lógicos e complementares a serem utilizados nas expressões apresentadas em where. Operadores lógicos operador significado = igual a > maior que >= maior que ou igual a < menor que <= menor que ou igual a Exemplos: SELECT EMPNOME, EMPSERV FROM EMP WHERE DEPNUME > 10; SELECT EMPNOME, EMPSERV FROM EMP WHERE EMPSERV = 'GERENTE'; O conjunto de caracteres ou datas devem estar entre apóstrofes (‘) na cláusula "where". 2) Selecione todos os departamentos cujo orçamento mensal seja maior que 100000. Apresente o Nome de tal departamento e seu orçamento anual, que será obtido multiplicando-se o orçamento mensal por 12. Resp: Neste problema precisamos de uma expressão que é a combinação de um ou mais valores, operadores ou funções que resultarão em um valor. Esta expressão poderá conter nomes de colunas, valores numéricos, constantes e operadores aritméticos. SELECT DEPNOME, DEPORCA * 12 FROM DEPT WHERE DEPORCA > 100000; 3) Apresente a instrução anterior porém ao invés dos "feios" DepNome e DepOrca, os Títulos Departamento e Orçamento. Resp: Neste exemplo deveremos denominar colunas por apelidos. Os nomes das colunas mostradas por uma consulta, são geralmente os nomes existentes no Dicionário de Dado, porém geralmente estão armazenados na forma do mais puro "informatiquês", onde "todo mundo" sabe que CliCodi significa Código do Cliente. É possível (e provável) que o usuário desconheça estes símbolos, portanto devemos os apresentar dando apelidos às colunas "contaminadas" pelo informatiquês, que apesar de fundamental para os analistas, somente são vistos como enigmas para os usuários. SELECT DEPNOME "DEPARTAMENTO", DEPORCA * 12 "ORCAMENTO ANUAL" FROM DEPT WHERE DEPORCA > 100000; 4) Apresente todos os salários existentes na empresa, porém omita eventuais duplicidades. Resp: A cláusula Distinct elimina duplicidades, significando que somente relações distintas serão apresentadas como resultado de uma pesquisa. SELECT DISTINCT EMPSERV FROM EMP; 5) Apresente todos os dados dos empregados, considerando sua existência física diferente de sua existência lógica (ou seja devidamente inicializado). Resp: Desejamos um tratamento diferenciado para valores nulos. Qualquer coluna de uma tupla que não contenha informações é denominada de nula, portanto informação não existente. Isto não é o mesmo que "zero", pois zero é um número como outro qualquer, enquanto que um valor nulo utiliza um "byte" de armazenagem interna e são tratados de forma diferenciada pelo SQL. SELECT EMPNOME, EMPSALA + EMPCOMI FROM EMP; SELECT EMPNOME, NVL(EMPSALA,0) + NVL(EMPCOMI,0) FROM EMP; Obs: a função "NVL" é utilizada para converter valores nulos em zeros. 6) Apresente os nomes e funções da cada funcionário contidos na tabela empresa, porém classificados alfabeticamente (A..Z) e depois alfabeticamente invertido (Z..A). Resp: A cláusula Order By modificará a ordem de apresentação do resultado da pesquisa (ascendente ou descendente). SELECT EMPNOME, EMPSERV FROM EMP ORDER BY EMPNOME; SELECT EMPNOME, EMPSERV FROM EMP ORDER BY EMPPNOME DESC; Nota: Também é possível fazer com que o resultado da pesquisa venha classificado por várias colunas. Sem a claúsula "order by" as linhas serão exibidas na sequência que o SGBD determinar. 7) Selecione os Nomes dos Departamentos que estejam na fábrica. Resp: SELECT DEPNOME FROM DEPT WHERE DEPLOCA = "SAO PAULO"; O exemplo exigiu uma restrição (São Paulo) que nos obrigou a utilizar da instrução Where. Alguns analistas costumam afirmar em tom jocoso que SQL não passa de "Selecione algo De algum lugar Onde se verificam tais relações" Acreditamos que esta brincadeira pode ser útil ao estudante, na medida em que facilita sua compreensão dos objetivos elementares do SQL. Demais Operadores Operador Significado between ... and ... entre dois valores ( inclusive ) in ( .... ) lista de valores like com um padrao de caracteres is null é um valor nulo Exemplos: SELECT EMPNOME, EMPSALA FROM EMP WHERE EMPSALA BETWEEN 500 AND 1000; SELECT EMPNOME, DEPNUME FROM EMP WHERE DEPNUME IN (10,30); SELECT EMPNOME, EMPSERV FROM EMP WHERE EMPNOME LIKE 'F%'; SELECT EMPNOME, EMPSERV FROM EMP WHERE EMPCOMI IS NULL; O símbolo "%" pode ser usado para construir a pesquisa ("%" = qualquer sequência de nenhum até vários caracteres). Operadores Negativos operador descrição <> diferente not nome_coluna = diferente da coluna not nome_coluna > não maior que not between não entre dois valores informados not in não existente numa dada lista de valores not like diferente do padrao de caracteres informado is not null não é um valor nulo 8) Selecione os Empregados cujos salários sejam menores que 1000 ou maiores que 3500. Resp: Necessitaremos aqui a utilização de expressão negativas. A seguir apresentamos operadores negativos. SELECT EMPNOME, EMPSALA FROM EMP WHERE EMPSALA NOT BETWEEN 1000 AND 3500; 9) Apresente todos os funcionários com salários entre 200 e 700 e que sejam Vendedores. Resp: Necessitaremos de consultas com condições múltiplas. Operadores "AND" (E) e "OR" (OU). SELECT EMPNOME, EMPSALA, EMPSERV FROM EMP WHERE EMPSALA BETWEEN 700 AND 2000 AND EMPSERV = 'VENDEDOR'; 10) Apresente todos os funcionários com salários entre 200 e 700 ou que sejam Vendedores. Resp: SELECT EMPNOME, EMPSALA, EMPSERV FROM EMP WHERE EMPSALA BETWEEN 700 AND 2000 OR EMPSERV = 'VENDEDOR'; 11) Apresente todos os funcionários com salários entre 200 e 700 e que sejam Vendedores ou Balconistas. Resp: SELECT EMPNOME, EMPSALA, EMPSERV FROM EMP WHERE EMPSALA BETWEEN 700 AND 2000 AND ( EMPSERV = 'BALCONISTA' OR EMPSERV = 'VENDEDOR' ); Funções de Caracteres Lower - força caracteres maiúsculos aparecerem em minúsculos. Upper - força caracteres minúsculos aparecerem em maiúsculos. Concat(x,y)- concatena a string "x" com a string "y". Substring(x,y,str)- extrai um substring da string "str", começando em "x", e termina em "y". To_Char(num)- converte um valor numérico para uma string de caracteres. To_Date(char,fmt)- converte uma string caracter em uma data. ^Q - converte data para o formato apresentado. 12) Apresente o nome de todos os empregados em letras minúsculas. Resp: SELECT LOWER( EMPNOME ) FROM EMP; 13) Apresente o nome de todos os empregados (somente as 10 primeiras letras). Resp: SELECT SUBSTRING (1,10,EMPNOME) Resp: Precisamos criar um auto-relacionamento, ou seja, juntar uma tabela a ela própria. É possível juntarmos uma tabela a ela mesma com a utilização de apelidos, permitindo juntar tuplas da tabela a outra tuplas da mesma tabela. SELECT A.EMPNUME, A.EMPNOME, A.EMPSERV, B.EMPNOME FROM EMP A, EMP B WHERE A.EMPGERE = B.EMPNUME; As Sub-Consultas Uma sub-consulta é um comando "select" que é aninhado dentro de outro "select" e que devolve resultados intermediários. 20) Relacione todos os nomes de funcionários e seus respectivos cargos, desde que o orçamento do departamento seja igual a 300000. Resp: SELECT EMPNOME, EMPSERV FROM EMP A WHERE 300000 IN ( SELECT DEPORCA FROM DEPT WHERE DEPT.DEPNUME = A.DEPNUME ); Nota: Observe que a cláusula IN torna-se verdadeira quando o atributo indicado está presente no conjunto obtido através da subconsulta. 21) Relacione todos os departamentos que possuem empregados com remuneração maior que 3500. Resp: SELECT DEPNOME FROM DEPT A WHERE EXISTS (SELECT * FROM EMP WHERE EMPSALA > 3500 AND EMP.DEPNUME = A.DEPNUME'); Nota: Observe que a cláusula EXISTS indica se o resultado de uma pesquisa contém ou não tuplas. Observe também que poderemos verficar a não existência (NOT EXISTS) caso esta alternativa seja mais conveniente. Uniões Podemos eventualmente unir duas linhas de consultas simplesmente utilizando a palavra reservada UNION. 22) Liste todos os empregados que tenham códigos > 10 ou Funcionários que trabalhem em departamentos com código maior que 10. Resp: Poderíamos resolver esta pesquisa com um único Select, porém devido ao fato de estarmos trabalhando em nosso exemplo com apenas duas tabelas não consiguimos criar um exemplo muito adequado para utilização deste recurso. (Select * From Emp Where EmpNume > 10) Union (Select * From Emp Where DepNume > 10); Inserções, Alterações e Exclusões Uma linguagem direcionada a extração de informações de um conjunto de dados, em tese não deveria incorporar comandos de manipulação dos dados. Devemos observar contudo que a mera existência de uma linguagem padronizada para acesso aos dados "convidava" os desenvolvedores a aderirem a uma linguagem "padrão" de manipulação de tabelas. Naturalmente cada desenvolvedor coloca "um algo mais" em seu SQL (SQL PLUS, SQL *, ISQL, e toda sorte de nomenclaturas), por um lado desvirtuando os objetivos da linguagem (padronização absoluta), mas em contrapartida otimiza os acessos ao seu banco de dados e por maior que sejam estas mudanças, jamais são tão importantes que impeçam que um programador versado em SQL tenha grandes dificuldades em se adaptar ao padrão de determinada implementação. De fato as diferenças entre o SQL da Sybase, Oracle, Microsoft, são muito menores dos que as existentes entre o C, o BASIC e o Pascal, que são chamadas de linguagens "irmãs", pois todas originam-se conceitualmente no FORTRAN. Podemos observar que todas as três linguagens mencionadas possuem estruturas de controle tipo "para" (for), "enquanto" (while) e repita (do..while, repeat..until). Todas trabalham com blocos de instrução, todas tem regras semelhantes para declaração de variáveis e todas usam comandos de tomada decisão baseadas em instruções do tipo "se" ou "caso", porém apesar de tantas semelhanças (sic), é praticamente impossível que um programador excelente em uma linguagem consiga rapidamente ser excelente em outra linguagem do grupo. Poderíamos arriscar a dizer que um excelente programador C que utilize a implementação da Symantech terá que passar por um breve período de adaptação para adaptar-se ao C da Microsoft. O que ocorreria então se este programador tiver que adaptar-se ao Delphi (Pascal) da Borland? De forma alguma o mesmo ocorrerá com o especialista em SQL ao ter que migrar do Banco de Dados X para o Banco de Dados Y. Naturalmente existirá a necessidade de aprendizado, mas este programador poderá ir adaptando-se aos poucos sem precisar ser retreinado, o que é um aspecto extremamente vantajoso para as empresas. Inserir (Insert) INSERT INTO <tabela> [<campos>] [VALUES <valores>] Ex: INSERT INTO DEPT; Possibilita a inserção de registros de forma interativa. INSERT INTO DEPT (DEPNUME,DEPNOME,DEPLOCA) VALUES (70,"PRODUCAO","RIO DE JANEIRO"); Possibilita a inserção de registros em tabelas sem digitação dos dados. Atualizar (Update) UPDATE <tabela> SET <campo> = <expressão> [WHERE <condição>]; Ex: UPDATE EMP SET EMPSALA = EMPSALA* 1.2 WHERE EMPSALA< 1000; Excluir (Delete) DELETE FROM <tabela> [WHERE <condição>]; Ex: DELETE FROM emp WHERE EMPSALA > 5000; Transações Muitas vezes gostaríamos que determinado processo, caso fosse abortado por qualquer motivo, pudesse ser inteiramente cancelado. Imaginemos por exemplo um usuário digitando um pedido. Imaginemos ainda que o sistema possa reservar cada item solicitado de maneira "on line", ou seja ao mesmo tempo em que estou digitando a quantidade o sistema já "empenhe" uma quantidade equivalente no estoque. Imaginemos ainda que o sistema deve cancelar todas as operações se apenas um dos itens não puder ser atendido. Grande problema, caso não pudéssemos anular todos os processos a partir de determinada condição. Vamos simular tal ocorrência com nosso banco de dados EMP. Imaginemos que ao invés de digitarmos DELETE FROM emp WHERE salario > 5000; tivéssemos digitado DELETE FROM emp WHERE salario > 500; Ao invés de eliminarmos 2 registros, praticamente teríamos eliminado o banco de dados todo. Para evitarmos que um erro de digitação, ou um processo iniciado porém sem condição de ser completado integralmente comprometa todos nossos dados podemos criar uma transação que nos assegurará que nossos testes sejam bem sucedidos ou cancelados sem comprometer nossos dados. begin transaction; delete from emp where salario > 500; if SQL_RECORDCOUNT > 20 THEN; ROLLBACK TRASACTION; else COMMIT; endif; end transaction; Visões Uma visão consiste basicamente de uma tabela derivada de outras tabelas. Considerando o exemplo TRABALHO, poderíamos criar uma visão baseada na Tabela de Empregados (EMP) e na Tabela de Departamentos (DEPT) onde tivéssemos somente os Nomes dos Funcionários e os Departamenos nos quais estes trabalhassem. Teríamos algo assemelhado ao abaixo representado CREATE VIEW EMP_DEP AS SELECT E.EMPNOME, D.DEPNOME FROM EMP E, DEPT D WHERE E.DEPNUME = D.DEPNUME; Devemos observar que: 1- Uma visão definida sobre uma única tabela somente será atualizável se os atributos da tal visão contiverem a chave primária de tal tabela. 2- Visões sobre várias tabelas não são passíveis de atualizações. 3- Visões que se utilizam de funções de agrupamentos, também não poderão ser atualizadas. PARTE III - Relatórios Comando: REPORT DISTINCT / UNIQUE [ atributo(s) ] REPORTTOP PAGETOP TOP DETAIL NONE BOTTOM PAGEBOTTOM REPORTBOTTOM FROM [ tabela(s) ] [ WHERE clausula-where ] [ GROUP BY clausula-grupo ] [ ORDER BY clausula-order by ]; Como exemplo converteremos um simples Select em um Report, temos: SELECT EMPNOME FROM EMP WHERE DEPNUME = 1000; REPORT DETAIL EMPNOME WHERE DEPNUME = 1000; Podemos direcionar a saida de um relatório tanto para um arquivo como para uma impressora. Para um arquivo: REPORT ON “RELAT.DAT” ... Para uma impressora: REPORT ON LP:” ... Agora incrementando um report temos: REPORT REPORTTOP COL 10, “*** RELATORIO DE FUNCIONARIOS *** “, TODAY %Q”DD/MM/YY”, SKIP, COL 10, “=================================“, SKIP 2 DETAIL COL 10, NOME %C22, SALARIO %FS, ADMISSAO %Q”DD/MM/YY” REPORTBOTTOM COL 10, “=================================“, SKIP, Janela Banco de Dados A janela principal de banco de dados aparece assim que é criado um novo banco de dados ou carregado para a memória um banco de dados já existente, nesta janela você irá trabalhar com os objetos do seu banco de dados. Esta janela é constituída: 1. Nome do Banco de Dados. 2. Botão “Novo”: Para criar um novo objeto. 3. Botão “Abrir”: Para executar um objeto já existente. 4. Botão “Estrutura”: Para entrar na estrutura do objeto. 5. Guias de Objetos: Tabelas, Consultas, Formulários, Relatórios, Macros e Módulos (Uma série de procedimentos programados na linguagem VBA - Visual Basic para Aplicativos). 6. Lista dos objetos existentes no seu banco de dados. Para trabalhar com os objetos nesta janela é preciso: • Clicar sobre a guia do objeto desejado. • Clicar sobre o botão “Novo” ou selecionar o objeto e clicar sobre o botão “Abrir” ou “Estrutura”. Criando uma Tabela Uma tabela é um objeto do Access que armazena dados em linhas (registros) e colunas (campos). Os dados normalmente descrevem um assunto como, por exemplo, empregados ou vendas. Para criar uma nova tabela, siga os passos abaixo: · Com a janela de banco de dados ativa, clique sobre o objeto “Tabela”. · Clique sobre o botão “Novo”. O Access exibirá a caixa de diálogo “Nova Tabela”, onde você possui as alternativas: · Modo Folha de Dados - Você irá cadastrar diretamente os dados e a estrutura será criada baseada no conteúdo dos dados cadastrados, como por exemplo, se você cadastrar uma data (15/07/97), na estrutura o tipo do campo será data/hora. · Modo Estrutura - Você primeiramente criará a estrutura de sua tabela, como nome, tipo de dados e características de cada campo, para depois cadastrar os dados. · Assistente de Tabela - O assistente ajudará na criação de sua tabela, porém, é limitado em tabelas pré-definidas. · Importação de Tabela - O assistente ajudará na importação de dados (veja em "Importar Dados"). · Assistente de Vinculação de Tabela - O assistente criará tabelas no banco de dados atual que estão vinculadas a um arquivo externo, você poderá utilizar o arquivo como se fosse uma tabela do seu banco de dados atual, porém, não poderá modificar a estrutura de uma tabela vinculada. Estrutura da Tabela O Access apresenta esta janela para você definir a estrutura da tabela que será criada. Para criar uma tabela, você precisa: · Criar os campos que a compõem (nome campo). · Definir o tipo de dados dos campos (texto, memorando, número, data/hora, ...). · Definir as propriedades dos campos (tamanho, formato, regras, ...). · Definir que campos são indexados e o tipo de índice. · Definir qual campo ou conjunto de campos será chave primária da tabela. A Janela de Estrutura da Tabela é constituída por: · Nome do Campo: nesta coluna você deve definir os campos para a tabela (os nomes podem ter até 64 caracteres, espaços, undescore, acento). · Tipo de Dados: onde você define o tipo dos campos (nesta coluna, clique em cima da seta para baixo para visualizar a lista dos tipos de campos disponíveis). · Descrição: Digite uma descrição que informe sobre o conteúdo do campo (não é obrigatório). · Propriedades: aqui você deve definir as propriedades (características) dos campos e da tabela. Todos os objetos do Microsoft Access possuem propriedades, que são definidas para determinar a sua aparência e o seu funcionamento. Para criar um campo na estrutura da Tabela: · Clique na primeira linha da coluna “Nome do Campo”. Depois de digitar o nome do campo aperte a tecla <TAB> para mover o cursor para as próximas colunas. Propriedades do Campo Para cada campo que é criado na tabela, o Access atribui um conjunto de propriedades de acordo com o tipo de dados escolhido. Veja a seguir a descrição dessas propriedades: · Tamanho - Define o tamanho do campo na tabela (tipo texto, número e autonumeração). · Casa Decimal - Define o número de casas decimais dos campos numéricos (tipo número e moeda). · Formato - Define o layout que o campo assume (todos os tipos, exceto o objeto OLE). · Máscara de Entrada - Define o padrão para entrada de dados num campo (tipo texto, número, data/hora e moeda). · Legenda - É um título para o campo (todos os tipos). · Valor Padrão - Define o mesmo conteúdo para um campo (todos os tipos exceto autonumeração e objeto OLE). · Regra de Validação - É uma condição de validade para a informação ser aceita (todos os tipos, exceto autonumeração e objeto OLE). · Texto de Validação - A mensagem que o usuário recebe quando afeta a regra de validação (todos os tipos, exceto autonumeração e objeto OLE). · Requerido - Define se um campo deve ou não ser preenchido (todos os tipos, exceto autonumeração). · Permitir Comprimento Zero - Indica se uma seqüência vazia é válida como informação para um campo (tipo texto, memorando e hyperlink). · Indexado - Ajuda na pesquisa e classificação dos campos de maneira rápida e eficiente (todos os tipos, exceto memorando, objeto OLE e hyperlink). · Novos Valores - Como novos valores devem ser gerados (tipo autonumeração): incremento ou aleatório. Definindo as Propriedades do Campo Para definir qualquer propriedade de um campo: · Clique no seletor de linhas do campo desejado. · Clique na linha da propriedade que deseja alterar. ð Na propriedade “Tamanho do Campo” procure usar sempre o menor tipo de dados, pois exige menos memória e o processamento fica mais rápido. Um campo definido como tipo de dados igual a “Número”, pode ter os seguintes tamanhos: Byte (ocupa 1 byte); Inteiro (ocupa 2 bytes); Inteiro Longo (ocupa 4 bytes); Simples (ocupa 4 bytes); Duplo (ocupa 8 bytes); Código de Replicação (ocupa 16 bytes). Chave Primária A Chave Primária permite a identificação única de cada registro de uma tabela. Considerada como índice principal para a tabela, ela é utilizada para associar dados entre as tabelas. Você pode selecionar mais de um campo (até dez campos) para Chave Primária, ou seja, a concatenação dos campos passa a ser uma Chave Primária. Os campos do tipo memorando, objeto OLE e hyperlink não poderão compor sua chave primária. Para definir a chave primária: · Clique no seletor de linhas do campo que será chave primária. Para selecionar mais de um campo: · Clique no seletor do primeiro campo, aperte a tecla <CTRL> e clique nos outros campos que deseja marcar. · Clique sobre o ícone “Chave Primária” na barra de ferramentas ou a partir do menu “Editar”, escolha a opção “Chave Primária”. Se ao gravar sua tabela, o Access não encontrar um campo como chave primária, ele pergunta se você deseja ou não que ela seja criada. Caso responda “Sim”, o Access criará na tabela um campo com o nome “Código”, do tipo “AutoNumeração” e o definirá como chave primária da tabela, se a tabela já possuir um campo do tipo “AutoNumeração”, o Access o designará como chave primária da tabela. Modo Folha de Dados – Incluir e Excluir registros Através da folha de dados você pode incluir e excluir registros em uma tabela. · Se a janela de Banco de Dados estiver ativa, selecione a Tabela desejada e clique o botão “Abrir”. · Se a Estrutura da Tabela estiver ativa, clique o ícone “Folha de Dados” na barra de ferramentas. · Para incluir um registro na tabela: Digite as informações campo a campo, registro a registro, utilize o mouse ou a tecla <TAB> para mudar de campo. Cada registro digitado é automaticamente inserido na tabela ativa. · Clique no asterisco (*) existente no topo de cada lista de campos e depois arraste-o para a linha de campo. Nesta linha será apresentado um campo assim: tabela3.* - o que significa que todos os campos da tabela3 foram selecionados para consulta. Para executar uma consulta: · clique sobre o ícone “Executar” na barra de ferramentas. Conhecendo os modos da consulta, na barra de ferramentas clique na seta do ícone "Exibir", aparecerá as opções: · Modo estrutura - Para alterar a consulta. · Modo folha de dados - Para visualizar o resultado da consulta. · Modo SQL - Para consultar o código em SQL. Para gravar sua consulta: · Clique o ícone “Salvar” na barra de ferramentas ou no menu “Arquivo”, escolha a opção “Salvar”. Criando consultas com critérios Consulta utilizando Critérios: Critério é a condição utilizada para limitar o conjunto de registros desejados para o resultado da consulta. Como o exemplo acima, onde você consulta apenas o jogador Eduardo. Para isso, com o modo estrutura da Consulta ativo: · Na linha Critério, do campo "nome do jogador" digite Eduardo* (o asterisco *, é quando não sei o nome completo) e execute a consulta. Você pode especificar os critérios de vários outros modos, por exemplo: Na linha Critério, do campo "num do jogador", digite: · Entre 2 e 3 e execute, depois digite: > 1 e < 4 e execute. · Na linha Critério, do campo "nome do jogador", digite: · c* (o resultado desta consulta será os registros com os nomes dos jogadores que começam com “c”). Criando consultas, classificando registros e fornecendo parâmetros Consulta classificando registros: Para especificar a ordem de classificação dos registros, faça o seguinte: · Na linha de Classificação do campo desejado, especifique “Crescente” (0-9 e A-Z) ou “Decrescente” (9-0 e Z-A). Consulta de parâmetros solicitando critério: Estabeleça parâmetros para que a consulta faça uma pergunta ao usuário. · Na linha Critério, do campo desejado, digite a pergunta entre colchetes, como a seguir: [Entre com o número do jogador] Ao executar a consulta, o Access exibirá uma caixa de diálogo onde o usuário deverá digitar o número do jogador que deseja pesquisar. O que é um filtro? Quais os métodos usados para filtrar registros? Filtro é uma consulta rápida feita diretamente na tabela. Ambos recuperam um subconjunto de registros de uma tabela/consulta. Quando usar o filtro? Você deverá usar o filtro para visualizar temporariamente ou editar um subconjunto de registros enquanto estiver dentro de uma tabela. Quando usar a consulta de seleção? Você deverá usar a consulta de seleção se desejar: · Visualizar um subconjunto de registros sem abrir uma tabela. · Consultar registros de mais de uma tabela ao mesmo tempo. · Escolher os campos que exibirão o resultado. · Efetuar cálculos na consulta. Quais os métodos usados para filtrar registros? Filtrar Por Seleção - Utiliza um valor ou parte de um valor selecionado em um campo da folha de dados, para localizar somente registros que contenham ou que não contenham esse valor. Filtrar Por Formulário - Utiliza uma versão da folha de dados com campos vazios, você poderá digitar os valores que deseja que os registros filtrados contenham. Filtrar Para Entrada - Utiliza um valor ou expressão que você digita na caixa “Filtro para:", para localizar somente registros que contenham o valor ou satisfazem a expressão que você especificar. (para localizar a caixa "Filtro para:", basta clicar com o botão direito em um campo no modo folha de dados de uma tabela/consulta) Como criar um filtro: · No objeto “Tabela”, selecione a tabela desejada e clique no botão “Abrir” (para abrir no modo folha de dados). · Escolher o método desejado para filtrar registros na barra de ferramentas ou na barra de menu no item “Registros” . · Para executar esse filtro, clique o ícone “Aplicar Filtro” na barra de ferramentas. Como criar um filtro avançado? Você pode criar também um Filtro Avançado. Para criar um filtro avançado: · No objeto “Tabela”, selecione a tabela desejada e clique no botão “Abrir” (para abrir no modo folha de dados). · Na barra de menu no item “Registros”, escolha a opção "Filtrar" e "Filtrar/classificar avançado". O Access exibirá uma tela parecida com uma estrutura de Consulta. · Selecione o(s) campo(s) desejados para o filtro do mesmo modo como você fez na consulta. · Digite a condição na linha do critério da coluna do campo desejado. · Para executar esse filtro, clique o ícone “Aplicar Filtro” na barra de ferramentas. O Access, após a execução do filtro, exibirá os registros de acordo com o critério estipulado. Para mostrar todos os registros novamente: · Na barra de ferramentas ou na barra de menu no item “Registros”, escolha a opção "Remover Filtro". Para voltar na estrutura do filtro: · Na barra de menu no item “Registros”, escolha a opção “Filtrar" e "Filtrar/classificar avançado" Para salvar um filtro como consulta, faça o seguinte: · Primeiramente você deve estar na estrutura do filtro. · Na barra de ferramentas, clique o ícone “Salvar como Consulta”. Criando um formulário Um formulário é um objeto do banco de dados que permite a visualização e manipulação (inclusão /alteração /exclusão das informações contidas em uma tabela ou consulta através de um Layout mais agradável). Criando um novo Formulário: Para criar um formulário, você deve estar com a Janela de Banco de Dados ativa: · Clique sobre o objeto “Formulário”. · Clique sobre o botão “Novo” A caixa de diálogo “Novo Formulário” será apresentada. É nesta caixa que você definirá em qual consulta ou tabela o seu formulário será baseado. Você deverá escolher uma das seguintes opções que lhe ajudarão a criar um formulário automaticamente (exceto modo estrutura que será manual): · Modo de Estrutura: cria um formulário sem utilizar um assistente, os campos são selecionados manualmente. · Assistente de Formulário - cria o seu formulário automaticamente baseado nos campos que você selecionou. · AutoFormulário: Colunar - exibe as informações em uma única coluna, um campo embaixo do outro. · AutoFormulário: Tabular - exibe as informações como em uma planilha, ou seja, linhas e colunas onde cada linha equivale a um registro e cada coluna um campo. · AutoFormulário: Folha de Dados – cria automaticamente um formulário de Folha de Dados (formato tabela). · Assistente de gráfico - exibe as informações na forma de gráficos. · Assistente de tabela dinâmica – cria formulário como uma Tabela Dinâmica do Microsoft Excel. No nosso caso, clique em “Assistente Formulário” · Clique sobre o botão “OK”. Assistente de Formulário Esta é a janela do “Assistente de formulário”, que irá ajudá-lo, nesta primeira etapa você deve escolher os campos que irão compor o seu formulário. Para selecionar apenas um campo, clique no ícone ; ou se você quiser todos, clique no ícone . Os ícones e vão permitir que você remova da lista dos campos que irão compor seu formulário os campos que você não deseja. Siga os passos do assistente respondendo as perguntas: · Selecione todos os campos que deseja para o formulário. · Clique sobre o botão “Avançar”. · Agora, você deve escolher o Layout do Formulário e clique em “Avançar”. Escolhendo estilo e titulo para seu formulário · Selecione o Estilo do seu formulário e depois, clique sobre o botão “Avançar”. · Na próxima tela escolha um título para o seu formulário, escolha a opção Abrir o formulário para iniciar as alterações ou entrar na Estrutura do Formulário para modificá-la e clique sobre o botão “Concluir”. Visualizando registros em um formulário No Access, um formulário, cada uma de suas seções e controle possui o seu conjunto de propriedades que determinam a sua aparência e o seu comportamento. Algumas propriedades dos controles assumem as mesmas características definidas em uma tabela. Para visualizar as propriedades de um controle, um formulário ou uma seção, faça o seguinte: · Selecione o objeto que você deseja alterar ou visualizar suas propriedades. · Clique, na barra de ferramentas, o ícone “Propriedades” ou na barra de menu, o item Exibir e escolha “Propriedades”. Definindo algumas propriedades de um controle: · Nome – um nome de identificação para seu controle. · Origem do Controle – Você determinará a origem de seu controle, ou seja, o valor que este controle irá assumir estará acoplado a uma tabela ou consulta. · Comportamentos da Tecla ENTER - nesta propriedade você pode definir qual o efeito da tecla ENTER no seu formulário. · Visível - definir se o seu controle deve ou não ser exibido no Formulário. · Exibir Quando - definir quando um controle pode ser exibido, se somente em um formulário, ou impressão ou impressão e formulário. · Bloqueado - se seu controle permitirá a alteração de seus dados no modo formulário. Ativado - permite que o campo tenha o foco no modo Formulário. · Parada de Tabulação - permite que você mude de campo apertando a tecla <TAB>. Criando um relatório O relatório é um objeto do banco de dados com a finalidade de imprimir registros em um Layout personalizado, além de permitir a utilização de agrupamento de registros em vários níveis, cálculos de somatória, médias e outros, obtendo totais e subtotais. O relatório é muito parecido com o formulário, porém possui maior controle sobre a exibição dos dados quando impressos. Para criar um relatório, você deve: · Estar com a janela de Banco de Dados ativa. · Clique sobre o objeto “Relatórios” · Clique sobre o botão “Novo” A caixa de diálogo “Novo Relatório” será apresentada. É nesta caixa que você definirá em qual consulta ou tabela o seu relatório será baseado. Você deverá escolher uma das seguintes opções que lhe ajudarão a criar o relatório automaticamente (exceto modo estrutura que será manual): · Modo de estrutura: cria um relatório sem utilizar um assistente, os campos são selecionados manualmente. · Assistente de relatório – irá ajudá-lo a criar o seu relatório baseado nas respostas que você fornecer para o assistente. · AutoRelatório: Colunar - exibe as informações em uma única coluna, um campo embaixo do outro. · AutoRelatório: Tabular - exibe as informações como em uma planilha, ou seja, linhas e colunas onde cada linha equivale a um registro e cada coluna um campo. · Assistente de gráfico - exibe as informações na forma de gráficos. · Assistente de etiqueta - relatório para emissão de Etiquetas. Por exemplo, etiquetas de endereçamento para Mala Direta. Assistente de relatórios Selecionando a opção “Assistente de relatório”, escolha a tabela/consulta desejada e clique no botão “OK”. Siga respondendo o assistente. · você deve escolher os campos que farão parte do seu Relatório, para isso utilize as flechas “>” (move campo a campo), “>>” (move todos os campos) e clique sobre o botão “Avançar”. Agrupando Dados no Assistente Nesta tela você definirá os níveis de grupo que deseja, basta selecionar o campo que será agrupado e clicar no ícone “>”. Se desejar mais de um agrupamento, você poderá definir a prioridade, o relatório exibirá os dados classificados por grupos. Por exemplo, este relatório estará agrupado por cidade. Dentro de opções de agrupamento, você poderá definir o intervalo de agrupamento do campo. Siga no assistente clicando no botão “Avançar”. Especifique a ordem de classificação para seus campos na tela abaixo. Se desejar incluir um resumo de valores (subtotal) para cada grupo, clique no botão “Opções de resumo”. Escolhendo o Layout, Orientação e Estilo Na primeira tela você deverá escolher: · layout – forma mais agradável de apresentação de seus dados, dependerá do tipo de relatório que você escolher se agrupado ou não. · orientação – forma de apresentação horizontal definir como paisagem ou forma vertical definir como retrato. · clicar em “Avançar” . Escolher na segunda tela o estilo do seu relatório e clicar em “Avançar”. Na próxima tela digite um título para o seu Relatório e clicar no botão “Concluir”. Visualizando o relatório Visualizar Impressão: neste modo o Access exibe seu relatório como ele seria impresso. Para alternar para o Modo de Visualização: · Clique sobre o ícone “Visualizar Impressão”, na barra de ferramentas. Para mudar de página em um Relatório, siga os passos a seguir: Para imprimir um relatório: · Na barra de menu no item “Arquivo”, escolha imprimir ou na barra de ferramentas, clique o ícone “Imprimir”. Trabalhando na Estrutura do relatório No Modo Estrutura, você pode alterar a aparência do seu Relatório. Para isso: · Clique sobre o ícone “Estrutura”, na barra de ferramentas. Será apresentada a tela da estrutura, como mostra a figura acima. Um relatório é divido basicamente em três partes: Cabeçalhos, Detalhes e Rodapés. · Cabeçalhos - aqui ficarão os dados constantes. Por exemplo, um título ou uma data. Os dados do cabeçalho do relatório só serão exibidos na primeira página do relatório e os dados do cabeçalho da página serão exibidos a cada nova página. Poderemos ter também cabeçalho de campo ao escolhermos agrupar por um determinado campo, neste caso a cada agrupamento será apresentado um conjunto de registros. · Detalhes - aqui ficarão os dados que variam, como o campo número do telefone. · Rodapé - funciona como um cabeçalho, só que é exibido no final da página. Para inserir, excluir ou modificar qualquer objeto do relatório siga as mesmas instruções dos formulários. Conhecendo tela de Classificar e agrupar SE BEI Es] EE EEE] Diferenças entre o ORACLE e o SQL Server 7.0 Visto os objetivos principais de um SGBD, será feita uma breve explanação sobre os SGBD mais utilizados no mercado, observado suas características e diferenças. Oracle O servidor Oracle apresenta facilidade de uso, potência e relação custo/desempenho sem precedentes. Pré ajustado e pré configurado para os ambientes de grupos de trabalho, dinâmicos e diversificados para os dias de hoje, o Oracle contém um conjunto totalmente integrado de ferramentas de gerenciamento simples de usar, além de recursos completos de distribuição, replicação e utilização na Web. Os recursos de acesso a dados distribuídos e replicados permitem que os usuários compartilhem dados relacionais entre aplicativos e servidores. As capacidades internas de utilização da Web proporcionam uma solução completa para a implementação de uma Intranet. Poder para Grupos de Trabalho Distribuídos: No atual ambiente de computação em constante modificação, os novos grupos de usuários exigem o acesso rápido e eficiente às informações. Eles exigem soluções de baixo custo que permitam a aceleração do processo de tomada de decisões. É fundamental a capacidade de reagir rapidamente às necessidades de mudanças empresariais, o que exige soluções gerenciáveis, potentes e de boa relação custo-benefício. O Oracle atende às demandas de grupos de trabalho distribuídos e diversificados. O servidor Oracle reduz os custos de implementação, ao mesmo tempo em que utiliza a mais ampla variedade de hardwares. Dos ambientes com um só servidor para pequenas empresas até ambientes com várias filiais, amplamente distribuídos, o servidor Oracle contém todos os recursos necessários para criar aplicativos de acordo com a empresa, garantindo o acesso eficiente e seguro aos dados, gerenciando os dados da corporação de maneira simples e completa.
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved