Você está na página 1de 69

1

Í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

1
2
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 acima, para nao ficar perdido) sao destinados a rede, entao: 200.249 é a rede a qual me conectei.

2
3
Ok. Os outros dois ultimos bytes definem o host: 223.114. Entao, para ficar facil, eu sou um micro chamado de
host com identificacao 223.114 conectado na rede 200.249.
Mais outra coisa deve ser dita: acho que voce já ouviu falar em sub-rede, claro. Pois é, uma sub-rede
nada mais é do que uma rede hierarquicamente inferior em relacao a uma rede maior. Geralmente, os numeros
que identificam a sub-rede sao referidos ao terceiro byte da cadeia do IP, assim o mesmo numero
200.249.223.114 pode definir uma sub-rede de identificacao 223. Como voce pode ver, uma rede pode ter varias
sub-redes menores cada uma interdependente entre si mas dependente em relacao a rede maior.
(*Esse conceito de identificacao de sub-redes envolve detalhes maiores e voce ira obter melhores informacoes na
secao "HIERARQUIA DE REDES"*)
Voltando ao exemplo da ELOGICA: ela possui varias sub-redes cada uma com um papel diferente mas de
importancia suma dentro de toda a rede. Para a ELOGICA foi concedido o numero 200.249.XXX como identificador
da rede em geral. Dentro dessa rede maior, a ELOGICA criou varios outros departamentos menores cada um com
um servico especifico. Assim, poderiamos ter 200.249.223; 200.249.238; 200.249.219; 200.249.218, etc. Cada
uma dessas sub-redes com uma funcao especifica. Se você por exemplo, se conecta a rede e recebe:
200.249.219.15 entao voce é um host de numero 15 dentro da sub-rede 219 na rede 200.249.
(*Infelizmente desconheco o menor e o maior nivel de rede concedido a ELOGICA porque, como eh uma rede
classe C, apenas o segundo byte não informa a sub-rede verdadeira. Assim outras redes tambem podem ter
200.249.XXX como identificador, o que vai diferenciar ai seria o terceiro byte, justamente o que define uma rede
dessa classe.*)

O conjunto de sub-redes da ELOGICA segue abaixo:

 200.249.238.2 bbs.ELOGICA.com.br
 200.249.238.3 PE.ELOGICA.com.br
 200.249.238.4 ceiun01.ELOGICA.com.br
 200.249.238.9 irc.ELOGICA.com.br
 200.249.238.11 os390.ELOGICA.com.br
 200.249.238.15 dominus.ELOGICA.com.br
 200.249.238.16 oxente.ELOGICA.com.br
 200.249.238.17 clovis.ELOGICA.com.br.238.249.200.in-addr.arpa
 200.249.238.18 host238-18.ELOGICA.com.br
 200.249.238.19 host238-19.ELOGICA.com.br

Observe que os servidores principais se concentram na sub-rede 238. Isso nao significa que um host de
um usuario nao possa entrar e ser identificado como pertencente a sub-rede 238. De fato, esses sao enderecos
fixos e pertencem aos servidores que atendem servicos tais como o IRC mais acima ou o de e-mail (se nao me
engano o responsavel ai seria o ceiun01). Mas observe que mais abaixo (os dois ultimos hosts) encontramos
numeros de hosts comuns, ou seja, sao de usuarios conectados no momento.
Um outro exemplo:
 200.249.223.1 host223-1.ELOGICA.com.br
 200.249.223.2 host223-2.ELOGICA.com.br
 200.249.223.3 host223-3.ELOGICA.com.br
 200.249.223.4 host223-4.ELOGICA.com.br
 200.249.223.5 host223-5.ELOGICA.com.br
 200.249.223.6 host223-6.ELOGICA.com.br
 200.249.223.7 host223-7.ELOGICA.com.br
 200.249.223.8 host223-8.ELOGICA.com.br
 200.249.223.9 host223-9.ELOGICA.com.br
 200.249.223.10 host223-10.ELOGICA.com.br
 200.249.223.11 host223-11.ELOGICA.com.br
 200.249.223.12 host223-12.ELOGICA.com.br

Nessa sub-rede de agora, a 223 nao ouve nenhum servidor anunciado, apenas usuarios conectados.
Outras sub-redes foram verificadas mas nao houve nenhuma nova inclusao de servidores, parece que todo o
servico se concentra na sub-rede 238. De fato, como sera visto no proximo capitulo, sub-redes superiores a 224
são destinadas a servicos especiais e ficam destinadas aos servidores.

Hierarquia de Redes

Como havia dito antes, a ELOGICA não obteve um numero de rede do nada. A ela foi concedido um
numero de rede que é: 200.249.XXX. O fato de ter colocado os caracteres X é porque a ELOGICA não é única no
mundo com identificacao 200.249. De fato, assim como ela, a NETPE (uma outra provedora aqui de PE) tambem
recebeu 200.249 como identificacao. Ambas são redes classe C e são varias pelo mundo. O que vai diferenciar as
duas sera o terceiro byte da cadeia do IP. Uma organização mundial chamada IETF (Internet Engineering Task
Force, ou Força Tarefa de Engenharia da Internet) eh quem outorga esses numeros a quem a solicita.

3
4
As redes são divididas hierarquicamente no mundo, assim nos temos rede de maior tamanho e aquelas
menores. Essa definicao de maior ou menor atende o simples fato da possibilidade de um numero maior ou menor
de hosts conectados. Assim nos temos: Redes classe A, B e C.
Redes classe A: São as redes de maior numero de hosts conectados e somente pouquissimos orgaos ao
redor do mundo possuem o privilegio de possuir um endereco de rede situado na classe A (diga-se de passagem,
não existem mais enderecos dessa classe disponiveis a novos cadastros, a não ser que alguem se descadastre).
De fato, não eh qualquer organizacao no mundo que possui esse privilegio e eh apenas concedido a Universidades
e organismos Governamentais. A quantidade de enderecos disponiveis a esse nivel é pequena, atinge numeros de
1 a 126. Observe que não utilizei os caracteres X pra identificar um outro nivel, isso não eh necessario em classes
do tipo A, porque o primeiro byte jah eh suficiente para a identificacao de toda a rede. Já deu pra perceber
portanto que essas redes são muito poucas mas atende o maior numero possivel de hosts conectados:
16.777.215. No mundo inteiro somente existe 126 redes classe A com demanda de aproximadamente 16 milhoes
de hosts. Entao nos poderiamos ter: 1.0.0.1 ate 126.255.255.254. Esses dezesseis milhoes de hosts reflete o
numero de possibilidades possiveis entre os tres ultimos bytes do quarteto. Assim, se fizermos uma analise
combinatoria desses termos chegariamos no numero em questao. Bom, uma pergunta poderia surgir: "Ok, redes
desse tipo são realmente grandes mas não entendi como ficou essa ultima parte, e quanto aos outros enderecos?
Por que não foram incluidos? - Os outros enderecos de rede não foram incluidos poque são o resultado da analise
combinatoria entre os outros possiveis hosts. Levando em conta que possuimos ainda os tres ultimos bytes da
cadeia do IP, teriamos 256 possibilidades diferentes em um byte da cadeia do IP.
Se temos 256 possibilidades entre cada um dos tres ultimos bytes da cadeia do IP entao faca o seguinte:
eleve 256 ao cubo. O que voce vai obter é exatamente 16.777.216 como resultado. Uma pergunta interessante
poderia surgir: "Certo, mas em outra parte do tutorial voce afirma que o numero 0 e o 255 não podem ser
atribuidos a numeros IP porque possuem outras funcoes" - Não eh bem assim. O que afirmei eh que numeros de
hosts não podem ter esses numeros e quando me refiro a host me refiro a um micro conectado e não um servidor
de rede. Dessa forma, uma rede pode se utilizar de todas as possibilidades desde que não seja atribuido aqueles
valores a hosts.
Rede tipo B: Essas são as redes intermediarias e possuem enderecos de rede de 128 a 16.384. Redes
desse tipo são identificadas pelos dois primeiros bytes. São possiveis portanto um numero de redes dessa classe
da ordem de 16.256. Faca as contas: se voce já sabe que a rede ira comecar em 128 e terminara em 191 (o
proximo nivel da hierarquia das redes começara em 192) , basta subtrair 128 de 192, o resultado voce multiplica
por 256. Assim, voce ira obter 16.384. Por exemplo: o resultado que voce obteve foi 64 jah que o primeiro byte do
nivel iria de 128 a 192 e o segundo de 0 a 255. Assim, como exemplo, poderiamos ter: 128.0.0.1 ate
191.255.255.254. O numero de hosts disponiveis nessa classe eu acho que voce já sabe como calcular: 256
elevado ao quadrado (são os dois ultimos bytes restantes). Teriamos entao 65.536. Esse é o numero possivel de
hosts conectados nessa classe. No mundo temos entao 16.256 redes classe B com um maximo de 65.536 hosts
conectados.
Uma pergunta poderia surgir: "Voce comecou a contar esta rede a partir de 128, a rede anterior não
terminou em 126? Onde esta o numero 127?" - O numero 127 não se destina a identificar redes publicas. De fato,
esse numero eh destinado a testes de loopback em uma rede. Um loopback nada mais eh do que a conexao que a
rede faz com ela mesma para testes internos, configuracoes, etc. Isso não eh exclusivo de redes e tanto eh que
loopbacks existem quando queremos verificar a velocidade de trafego numa comunicacao paralela ou serial por
exemplo. Dessa forma, uma rede que comece com 127 não eh uma rede que conecte hosts. Eh um teste interno
apenas. Entao se voce vir 127.0.0.1, por exemplo, isso eh um numero de loopback.
Rede tipo C: Essas são as menores e são as mais numerosas em todo mundo. Provavelmente a sua
provedora de acesso a Internet usa uma rede tipo C. Enderecos de rede vao de 192 ate 2.097.152. No mundo são
possiveis, entao, algo em torno de 2 milhoes de redes com apenas 254 hosts conectados (que eh o ultimo byte).
Os endereços de rede ficariam entao: 192.0.0.1 a 224.255.255.254. Como provavelmente sua provedora não
possui apenas 254 usuarios cadastrados, ela com certeza dividiu a sua rede em redes menores cada uma
comportando 254 usuarios. Isso ira acontecer sempre a medida que a demanda por acessos a novos usuarios
aumentar, ou seja, se uma rede classe C jah não atende mais a demanda, ela pode ser aumentada com a inclusao
de novas sub-redes. Para se chegar a esse numero de 2 milhoes o calculo eh o mesmo do que jah foi feito acima,
ou seja, redes classe C são identificadas pelos tres primeiros bytes entao faça somente o 256 elevado ao cubo e vc
achara o valor, certo? Bastante errado.
Ao contrario das outras redes, uma rede classe C possui mais restricoes. Uma rede classe C comeca do
numero 192, ok. Mas não termina em 256! De fato, ela termina no numero 224. Isso acontece porque numeros
superiores a 224 são destinados a servicos especiais (com protocolos diferentes) e não são incluidos como
identificador de rede. Assim nos teriamos apenas 32 possibilidades no primeiro byte (de 192 ate 224). Os dois
bytes seguintes continuariam da mesma forma, ou seja, não existem restricoes e continuariam com 256
possiblidades. Entao nos teriamos: 32 x 256 x 256 = 2.097.152. E assim nos temos o numero de redes disponiveis
nessa classe. Na verdade o numero de redes disponiveis eh isso menos uma rede: a 192.168 que eh feita quando
queremos construir nossa rede particular. Se algum dia voce quiser montar sua rede provavelmente ira nomear
seus hosts como: 192.168.0.1; 192.168.0.2.... ate o fim do numero de maquinas disponiveis. Se chegar na
maquina de numero 24, por exemplo, era podera ser conhecia como: 192.168.2.4.
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

4
5
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.

5
6
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

6
7
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

Proto 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.
Established: Essa nao precisa de muita definicao, a conexao foi efetuada com sucesso nas portas em questao e o
programa cliente esta recebendo dados de forma normal.
Time Wait: O servidor parou momentaneamente de enviar dados e no momento em que o comando netstat foi
executado isso estava ocorrendo.

7
8
Observe as portas que foram estabelecidas no computador local: 1041, 1034, 1040, 137, 138, 139.
Como voce pode verificar foram estabelecidas conexoes nas portas menores a 1024, como 137, 138, 139. Essas
portas atendem servicos portanto. Vamos a elas:
A porta 139 na realidade é apenas um bug encontrado nas versoes Windows® anteriores a OSR2 e pode
ser fechada pelo usuario com programas especificos ou pelo renomeamento de um driver de dispositivo virtual que
nesse caso é o vnbt.386. Os efeitos provocados pelo mau uso dessa porta já sao bastante divulgados: isso causa
uma pane geral nos sistemas Windows® e mesmo os NTs mais antigos ainda sofrem com esse problema. Nao é
um nuke propriamente dito porque os efeitos sao diferentes. Na realidade aproveita-se a falha que o Windows®
possui em atender servicos marcados como urgente (os chamados OOB ou out-of-band). O Windows® da
preferencia a pacotes marcados dessa forma e relega a segundo plano as outras conexoes que você possui. O
efeito é o termino da sua conexao TCP/IP.
Isso siginifica que alguem poderia tentar usar seu micro com alguma forma de hacking? Provavelmente
nao. Digo provavelmente porque a porta 139 é usada ainda como brincadeira por muita gente metida a hacker
mas que nada mais fazem do que cancelar uma conexao TCP/IP e travar a maquina de um usuario inocente
(existem exceçoes). Brincadeira de criança. Essa porta, portanto, nao atende servicos a nao ser o de enviar
resposta ao pacote OOB.
As portas 137 e 138 sao reservadas ao NetBios (Network Input/Output System) do Windows®. Na
verdade nao é exclusividade dos sistemas Windows® e pode ser implementado em qualquer maquina. O NetBios
foi desenvolvido pela IBM como forma de servir o micro cliente como host servidor em alguns casos especificos.
Assim, alguem usando um Windows® 95 poderia disponibilizar essas duas portas para permitir servicos como
acesso a uma impressora compartilhada por exemplo. Mas é altamente recomendavel que estas portas estejam
fechadas. Se voce nao é usuario de uma rede interna de algum departamento e ninguem usa seu micro como host
servidor temporario para, por exemplo, compartilhar sua impressora entao nao ha nenhum motivo para
permanecer com essas portas abertas. O usuario dessa configuracao de portas precisa urgentemente de uma re-
configuracao do Windows®. Verifique em seu micro, caso use Windows®, se voce esta com algum servico
compartilhador de redes como o NetBios. Se está, nao permita nenhum compartilhamento entao. Isso constitui-se
de uma forma de hacking realmente e nao é usada por criancas que adoram nukar o usuario inocente, hackers que
possuem conhecimento dessas portas abertas (e tem conhecimento da tecnica) podem acessar seu micro da forma
como quiserem jah que essas portas sao atendentes de servicos ao contrario da porta 139. O Windows® usando o
NetBios vai permitir acesso nesse caso.
Essa descricao acima (do NetBios) nao se constitui de uma falha dos sistemas Windows® propriamente
dita - é inclusive anunciada pela Microsoft. É sim uma má configuracao do usuario que, por algum descuido,
permitiu essa forma de conexao.
Mas as tres portas se encontravam em modo listening o que quer dizer que nenhuma conexao foi
estabelecida, o que nao significa que nao possa ser feito.
Agora poderia sobrevir uma duvida: "Ok, essas tres portas foram estabelecidas e estavam em modo
listening mas e quanto ao endreço do host? Por que nao foi informado nada?" - Bom, é simples. As portas estavam
abertas apenas, todas as tres, mas nenhum host externo, naquele momento, estava tentando acessa-las
Exatamente por isso nao foi informado nenhum IP de identificação remoto. Possivelmente, quando alguem
tentasse firmar uma conexao, o IP seria fornecido.
As outras portas maiores, acima de 1024 foram estabecidas normalmente no computador local sem
problemas. O que acontece é o seguinte: Como expliquei mais acima a respeito de uma conexao telnet, o
programa cliente informa a porta na qual devera ser estabelecida a conexao mas nao informa a porta local. Isso
sera feito depois e quem o fara é o seu Sistema Operacional. Assim, o computador remoto, o servidor envia um
pacote qualquer de volta ao computador de origem (lember-se que ele sabe qual o IP de origem) e somente
depois disso a porta é aberta. Sera que isso seria motivo de preocupacao de alguem? Acredito que, infelizmente, a
maioria das pessoas ainda temem essas portas abertas quando dao o comando netstat. Na verdade nao ha o que
se preocupar. As portas sao estabelecidas temporariamente e depois que a conexao é terminada a porta se fecha,
a nao ser aquelas que sao conhecidas, como o bug do Windows® da porta 139 e/ou as 137 e 138. Se isso nao
acontecesse ninguem receberia informacao de lugar nenhum. Assim, uma porta origem e destino devem ser
abertas.
Uma outra duvida que poderia surgir a respeito: "Ok, as portas sao fechadas, mas e durante a minha
conexao, as portas estao abertas e nao possuem conexao com portas tao altas, qualquer pessoa com um
scaneador de portas conseguiria descobrir facilmente onde estou conectado." -- Calma, nao é bem assim. Uma
porta so atende um servico de cada vez e nao consegue estabelecer conexao em dois pontos simultaneamente.
Assim, qualquer um que tentasse estabelecer qualquer comunicacao com seu computador primeiro teria de
esperar a porta aberta parar de ser solicitada para depois atender outra coisa. Ou seja, para poder scanear as
suas portas de comunicacao primeiro o servico teria de cancelar a conexao que havia estabelecido antes, o que
nao é possivel , e segundo lhe enviar um pacote informando a porta que esta aberta. Assim, deu para entender
como o scaneador de portas funciona: ele fica perturbando o computador remoto com pacotes aleatorios de dados
(ai entraria o UDP, porque nao é necessrio nenhuma reorganizacao de pacotes) funcionando como uma especie de
ping esperando pelas resposta.

TCP/IP em Camadas

Uma rede TCP/IP eh dividida apenas em quatro camadas (não confunda com divisao de redes em
camadas OSI, isso jah eh aplicado a construcao de redes desde o andamento e construcao dela em um escritorio,
por exemplo ate o ponto final, em outra localidade. Divisao em camadas por TCP/IP não envolve os conceitos de

8
9
construcao desde a origem real ate o final). A divisao das redes TCP/IP eh como se segue (Esse modelo de rede
TCP/IP foi feito pensando-se na origem em relacao ao destino):

Aplicação
Transporte
Rede
Físico

Fisico: Esse é o proprio meio fisico da rede ou , em outras palavras, é onde as coisas acontecem de
fato. Assim, qualquer comunicacao entre mcros deverao pessar pelo meio fisico. Nessas camada esto incluidas
todos os dispositivos fisicos de sua rede: cabos, placas da rede, enfim todo hardware usado em comunicacao em
redes esta incluido nessa camada. Em relacao a esse nivel, todos os dados sao tratados como pulsos eletricos, ou
seja, interrupcoes na corrente continua do micro.
Rede: Essa camada é a responsavel pelo roteamento dos pacotes entre os hosts, ou seja, tem por
funcao encontrar o caminho mais curto e confiavel entres os computadores. Eh exercida pelo protocolo IP. A nivel
de redes espcificicamente, (não apenas a TCP/IP podemos incluir ainda nessa camada um outro protocolo
conhecido como X.25) esse nivel eh ainda responsavel pelo envio dos pacotes.
Transporte: Essa camada jah inclue o protocolo que transporta o servico, ou seja, ai esta incluido o
TCP e/ou o UDP. Assim, essa camada eh a responsavel pelos pacotes criados pelo IP da camada anterior. Eh
obrigacao da camada de transporte oferecer a comunicacao mais confiavel entre os hosts de uma rede e tentar a
todo custo enviar dados da forma mais clara e limpa possivel. Caso algum pacote se perda na rede, por exemplo,
eh obrigacao dessa camada enviar novo pedido a fim de ser restabecida a conexao correta novamente. Para não
evitar confusao nessa camada: o nivel mais acima, o de rede, cria os pacotes e os envia mas lembre-se que o TCP
eh quem tem por obrigacao fornecer uma maneira de colocar esses pacotes na ordem correta. Assim, o TCP aloca
essas informacoes em cada pacote e o IP o envia. Quando esses pacotes chegam ao destino, o TCP desse destino
eh quem vai coloca-los em ordem de acordo com o que o TCP de origem fez.
Aplicação: Aqui se incluem as aplicacoes processadas (os programas). Assim, quando voce faz um
pedido a fim de receber uma pagina html, o seu navegador processa os pacotes que chegam (ai entrar o TCP) e
forma a pagina para que voce possa ver. Isso não ocorre apenas com o destino, ou seja, para que voce recebesse
essas informacoes um outro programa teve de ser processado para que as informacoes chegassem a voce.

INTRANET

A Intranet é uma rede interna baseada no protocolo IP que se caracteriza pelo uso das tecnologias Word
Wide Web no ambiente privativo da empresa. Composta por um servidor Web corporativo, tornando-se disponíveis
para os usuários através de uma rede interna ou acesso discado privativo, fornecendo assim uma variedade de
informações por meio de um único front-end, o paginador (browser) Web.

Além de incorporar toda a tecnologia Internet, as Intranets podem utilizar a estrutura de comunicação de
dados da própria rede pública para se comunicar com filiais ou com qualquer empresa conectada à grande rede.

Dentro dos limites da empresa, tudo o que circula em forma de papel pode ser colocado na intranet de
forma simples e objetiva: desde manuais e políticas de procedimento até informações de marketing, catálogos de
venda de produtos, recursos humanos e catálogos telefônicos. Tudo baseado na estrutura de Hipertexto,
interligados por links.

Origem da Intranet no Brasil

9
10
A Rhodia, esta foi uma das primeiras organizações brasileiras a implantar a Intranet, isso ocorreu em
1995. Isto porque a organização necessitava de um sistema que engloba-se correio eletrônico, vídeo texto, listas
telefônicas e outras facilidades. E como a Intranet já era utilizada inicialmente em outras organizações de grande
porte no exterior e estava dando certo, a Rodhia resolveu inicialmente implantar na organização como experiência,
mas logo percebeu-se que era vantajoso utiliza-la pois os resultados da experiência foram ótimos, ou seja,
atenderam as necessidades da empresa.

Inicialmente a esse novo sistema, aqui no Brasil foi trabalho chamado de Internet - In - House, mas tarde
de intranet, e adotaram na organização como Internet Rodhia. Em seguida foram tomadas as seguintes medidas
de mudanças na organização, ou seja, foram migradas todas as aplicações que são comuns a todos os usuários
Rodhia para a Intranet e criaram também uma opção para consultar as noticias do dia, totalizando 600 páginas.

A quem se destina a Intranet

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.

10
11
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

11
12
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.

12
13
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.

13
14
- POP (Post Office Protocol) - Maneira como um software de correio eletrônico, como o Eudora, localiza as
mensagens num servidor.

- Portas e Múltiplas Portas - Na Internet, cada serviço ou processo lê as requisições que chegam da rede por
uma porta ou número. Você pode especificar a porta pela URL. Exemplo: os servidores Web têm como padrão a
porta 80. Quando o servidor consegue ler várias delas, é chamado de servidor de múltiplas portas.

- Proxy Server - Programas utilizados para guardar os documentos acessados mais freqüentemente no servidor.

- Servidores Virtuais - São os que suportam múltiplos domain names, ou seja, podem lidar com diferentes home
pages na mesma máquina.

- SSL (Secure Sockets Layer) - Modo padronizado de encriptar senhas e dados para garantir transações seguras
entre um cliente e um servidor. A versão mais usada atualmente é a v2, mas a v3 é mais segura e começa a
ganhar adeptos. Para tê-la é preciso conseguir antes um certificado (ou senha) criado por empresa especializada.

- TCP/IP (Transmission Control Protocol/Internet Protocol) - Conjunto de protocolos que define a internet.
Originalmente desenvolvido para os sistemas UNIX, agora está disponível em todas as plataformas.

Planejamento do Sucesso de uma Intranet


A chave para que seu investimento em tecnologia da informação (IT) seja compensador é o planejamento.
Esses investimentos implicam custos desde o momento em que você começa a pensar no assunto - o custo do
tempo que você dedica ao planejamento. Os custos vão aumentando com o projeto e o desenvolvimento (ou
aquisição) do sistema, treinamento, operação e manutenção. Até mesmo a desativação de sistemas de rede pode
ter um custo elevado, entre alterações no mapa de fiação e a eliminação de materiais de risco.

Embora os gastos associados à tecnologia da informação sejam contínuos, o valor é agregado apenas
durante uma fase da vida de um sistema: a utilização. A maximização do retorno sobre o investimento se resume
na maximização dos benefícios proporcionados pelo uso de um sistema, aliado à minimização dos custos.

Uma intranet não representa uma exceção. Para maximizar os benefícios proporcionados pela utilização de
um sistema, você deve Ter uma noção bem clara de quaisbenefícios pretende obter e de quem você espera que
gere esses benefícios. Os benefícios de uma intranet não ocorrem de forma espontânea. Você deve gerenciar os
usuários tendo esses benefícios em mente. A minimização dos custos, por outro lado, depende da previsão do ciclo
de vida desde o início e do planejamento da eficiência do sistema. Você precisa planejar cuidadosamente a
instalação o gerenciamento da configuração, o treinamento dos usuários e programadores, a manutenção do
conteúdo, a capacidade da rede e diversos outros aspectos desde o início para poder minimizar os custos inerentes
a todas as fases do processo.

Determine o Tamanho da Sua Web


A primeira e mais importante decisão que tem efeito direto sobre o custo de um sistema é o escopo. A
duplicação do tamanho de uma rede (ou seja, do número de usuários associados) aumenta em mais de duas vezes
o overhead. O efeito é quase exponencial.

É muito mais difícil estimar a rapidez com que os benefícios da rede aumentam em função do tamanho
dessa rede, mas certamente esse aumento não é exponencial, pelo menos entre grupos de trabalho. Na verdade,
se alguns grupos da sua empresa não precisarem colaborar uns com os outros, você poderá prejudicar a eficiência
de uma rede ao inclui-los nela. Afinal, o trabalho na Torre de Babel estava correndo bem antes de as pessoas
começarem a falar diferentes idiomas. Além disso, são muitas as diferenças semânticas e culturais nas empresas.
Imagine todos os advogados, engenheiros, contadores e vendedores da sua empresa participando de uma reunião.
Uma reunião virtual (por exemplo, através de uma intranet) com todos esses profissionais produzirá uma confusão
apenas um. pouco menor que a da Torre de Babel, a menos que você adote processos para harmonizar a
comunicação.

Uma Estratégia de Duas Etapas para Dar Início à Sua Web


Se os custos se elevam drasticamente em função do tamanho da rede, e os benefícios aumentam somente
quando há coordenação, o que isso indica em relação à definição do escopo da sua intranet? Bem, essa
perspectiva fornece estas duas diretrizes fundamentais para a estratégia que você deverá adotar para dar início a
uma intranet:
1. Inclua o menor grupo que for capaz de tirar proveito de uma Web interna e se concentre em
atender aos requisitos de rede desses usuários. Essa espécie de projeto-piloto de aplicativo Web
permite que você descubra - em uma escala menor - onde se encontram as áreas de risco do seu projeto
de intranet e onde elas são menos evidentes. Ao mesmo tempo, esse projeto-piloto aumenta as suas
perspectivas de sucesso, pois você se concentra em usuários que já estão motivados para o trabalho em
equipe. Uma intranet no nível do grupo de trabalho evita questões relacionadas à semântica interfuncional
que podem prejudicar redes maiores.

14
15
2. Amplie a sua intranet ao redor de um grupo de trabalho ou núcleo departamental. Cada servidor
Web que você acrescentar deverá atender primeiramente a uma necessidade local. Em seguida, poderá
atender a uma necessidade global. Esse tipo de expansão é mostrado na Figura abaixo. A ampliação do
sistema de forma incremental ao redor dos centros funcionais ajuda a garantir que os benefícios sejam
maiores que os custos.

Mas, antes de você atribuir a cada departamento seu próprio orçamento de intranet e colocá-los em
contato com uma revenda de produtos de informática, deve se lembrar do conhecido dizer de pára-choque de
caminhão de alguns anos atrás que dava o seguinte conselho: "Pense Globalmente, Aja Localmente." O simples
fato de você ter instalado servidores Web nos locais em que eles provavelmente serão mais úteis não o libera da
necessidade de planejar a sua rede empresarial como um todo! As Webs locais são normalmente segmentos de
rede TCP/IP interligados por roteadores. Um roteador pode também funcionar como um firewall que conecte a
intranet corporativa à Internet global.
No exemplo mostrado na Figura, o grupo de marketing utiliza uma conexão à WWW para reunir dados de
levantamentos sobre os clientes. O grupo usa então sua intranet local para analisar as respostas obtidas nos
levantamentos e publica os resultados sob a forma de uma especificação de um novo produto. O departamento de
engenharia obtém essa especificação e, após usar sua própria intranet para colaborar com um projeto preliminar,
publica um conjunto de desenhos, que será usado pelo grupo de manufatura.

Definição de Objetivos: Quem Se Beneficia? Quem Paga por Isso ?


Após identificar um ou mais grupos de trabalho que se beneficiarão de uma intranet, a próxima etapa do
planejamento consiste na obtenção da participação nas decisões. Essa etapa fundamental é muitas vezes omitida.
A sua empresa pode não estar acostumada a envolver os usuários em decisões de tecnologia da informação em
etapas anteriores à implantação do sistema e ao treinamento. Mas uma Web interna agrega valor de uma forma
inteiramente diferente, por exemplo, de um sistema de contabilidade ou até mesmo de correio eletrônico. E a
iniciativa do usuário é a chave para a concretização desse valor.

Envolvimento dos Usuários na Experiência com a Intranet


As Webs seguem um modelo "pull" de distribuição de dados. Quando você surfa na WWW, por exemplo, os
sites não vêm ao seu encontro. Você é quem tem de localizá-los e acessá-los. Naturalmente, você fará esse
esforço apenas para ter acesso aos sites do seu interesse. Você extrai ("pull") as informações que considera
importantes. Todas as outras informações que não são selecionadas com um clique no mouse são ignoradas.
O mesmo princípio se aplica a uma intranet. As pessoas acessam um navegador para extrair informações
que as ajudam a realizar seu trabalho. Se essas informações não estiverem disponíveis na Web ou puderem ser
obtidas mais rápida e facilmente em outro local, isso significa que a Web não está funcionando.
Na verdade, como as intranets podem perfeitamente ser usadas para a publicação de material não
relacionado a trabalho - fotos de bebês, programações de acontecimentos sociais, contagem de pontos de boliche
etc.-, uma Web que não esteja sendo utilizada para trabalhar para a empresa pode perfeitamente trabalhar contra
ela.
Além disso, boa parte do conteúdo armazenado em um servidor Web local será fornecido pelos usuários.
Muitas Webs internas acessarão algumas informações de fontes remotas, como, por exemplo, fontes de artigos, ou
conexões baseadas na Web a dados corporativos. Mas, para expor para toda a empresa dados armazenados
localmente e até mesmo compartilhá-los em um grupo de trabalho, o conteúdo tem de ser transmitido a um
servidor. Apenas as bases locais podem executar essa tarefa com eficiência.
Por todos esses motivos, você precisa envolver os usuários desde o início e de forma intensa na
experiência com a intranet. O envolvimento pode começar com um fórum de debate simples baseado na Web. Se
você já tiver uma rede TCP/JP, para configurar esse fórum, bastará instalar navegadores Web e um único servidor
Web. Você deverá ser capaz de manter a despesa total de capital inferior a alguns milhares de dólares se usar
produtos comerciais - e a níveis ainda menores se optar pelo uso de programas freeware.

Cálculo do Custo das Necessidades do Usuário


Esteja você usando um fórum de uma intranet ou participando de uma reunião cara a cara, tem de
catalogar os tipos de dados que os usuários precisam trocar. Nem todos os fóruns de informações funcionam bem
em uma Web. Um projeto gráfico, por exemplo, exige em geral uma grande variedade de formatos de arquivo. E
pode ter um resultado inadequado quando transmitido em um meio que pode apresentar apenas imagens GIF ou
JPEG. Dependendo das necessidades específicas dos usuários, isso pode obrigá-lo a incluir um conjunto de
requisitos de projeto, ou a excluir o uso da tecnologia Web para determinado aplicativo.
A catalogação dos tipos de dados, das quantidades e da periodicidade das atualizações dará a você uma
noção mais clara do custo que a intranet terá. Uma Web de texto consumirá menos recursos de rede que uma
Web que transmita dados multimídia continuamente. Da mesma forma, uma biblioteca de documentos atualizada
de três em três meses exigirá menos recursos humanos que uma biblioteca de noticiário que tenha de ser
atualizada diariamente. O custo das atualizações do conteúdo e outras despesas paralelas podem ultrapassar em
muito o orçamento inicial de aquisição.
É aconselhável conscientizar todas as pessoas envolvidas sobre os custos desde o início para que não haja
(ou haja menos) surpresas. Parte desses custos de longo prazo assumem a forma de mão-de-obra contratada. Os
gerentes devem reconhecer o investimento em pessoal, em dólares, ou em ambos, necessário para a manutenção

15
16
do conteúdo da Web. Se eles concluírem de antemão que os benefícios pretendidos compensam o investimento
necessário, se sentirão motivados a gerenciar sua equipe tendo em mente esses benefícios. Uma intranet com
esse tipo de apoio tem condição de obter êxito.

Redes Distribuídas, Custos Distribuídos


A menos que a sua empresa seja muito pequena, o modelo local de desenvolvimento da intranet dará
lugar gradativamente a uma condição mais interconectada. Isso pode não estar evidente nos estágios iniciais do
desenvolvimento. Mas, à medida que as Webs locais se expandirem e a sinergia interfuncional ficar evidente para
os usuários, os servidores Web serão cada vez mais acessados por usuários remotos.
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

16
17
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).

17
18
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

18
19
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/i
nfo/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.co
m.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.

19
20
Estes Bancos de Dados, além de manterem todo este volume de dados organizado, também devem permitir
atualizações, inclusões e exclusões do volume de dados, sem nunca perder a consistência. E não podemos
esquecer que na maioria das vezes estaremos lidando com acessos concorrentes a várias tabelas de nosso
banco de dados, algumas vezes com mais de um acesso ao mesmo registro de uma mesma tabela!
O fato de montarmos uma Mala Direta em um micro PC-XT com um drive já faz de nós um autor de um Banco de
Dados?
Claro que não! Um Banco de Dados é antes de mais nada uma coleção logicamente coerente de dados com
determinada significação intrínseca. Em outras palavras um arquivo contendo uma série de dados de um cliente,
um arquivo com dados aleatoriamente gerados e dois arquivos padrão dbf (dBase) que tem uma relação definida
entre ambos, não pode ser considerada uma Base de Dados Real.
Um Banco de Dados contém os dados dispostos numa ordem pré-determinada em função de um projeto de
sistema, sempre para um propósito muito bem definido.
Um Banco de Dados representará sempre aspectos do Mundo Real. Assim sendo uma Base de Dados (ou Banco de
Dados, ou ainda BD) é uma fonte de onde poderemos extrair uma vasta gama de informações derivadas, que
possui um nível de interação com eventos como o Mundo Real que representa. A forma mais comum de interação
Usuário e Banco de Dados, dá-se através de sistemas específicos que por sua vez acessam o volume de
informações geralmente através da linguagem SQL.
Os Administradores de Banco de Dados (DBA) são responsáveis pelo controle ao acesso aos dados e pela
coordenação da utilização do BD. Já os projetistas de Banco de Dados (DBP) são analistas que identificam os
dados a serem armazenados em um Banco de Dados e pela forma como estes serão representados.
Os Analistas e Programadores de Desenvolvimento, criam sistemas que acessam os dados da forma necessária ao
Usuário Final, que é aquele que interage diretamente com o Banco de Dados.

SGBD x GA

Um SGBD - Sistema de Gerenciamento de Banco de Dados é uma coleção de programas que permitem ao usuário
definir, construir e manipular Bases de Dados para as mais diversas finalidades.
Um conceito que deverá ficar bastante claro inicialmente é o que envolve a separação clara entre os Gerenciadores
de Base de Dados dos Gerenciadores de Arquivo.
Sistemas baseados em "Banco de Dados" baseados em Btrieve e dBase (Fox e Clipper), podem no máximo simular
as características típicas de um ambiente de Banco de Dados. As linguagens Delphi (utiliza opcionalmente o padrão
dBase) e o VB (que utiliza o Access), recomendam a utilização de Banco de Dados reais, porém utilizam àqueles
"Banco de Dados" que possuem algumas características de Bancos de Dados, mas possuem características típicas
de Gerenciadores de Arquivo.
Vamos definir algumas regras básicas e claras para um sistema de manipulação de dados ser considerado um
SGBD. Fica implícito que se ao menos uma das características abaixo não estiver presente no nosso "candidato" a
SGBD, este poderá ser um GA (Gerenciador de Arquivo) de altíssima qualidade, "quase" um
SGBD, mas não um SGBD.

Regra 1: Auto-Contenção- Um SGBD não contém apenas os dados em si, mas armazena completamente toda a
descrição dos dados, seus relacionamentos e formas de acesso. Normalmente esta regra é chamada de Meta-Base
de Dados. Em um GA, em algum momento ao menos, os programas aplicativos declaram estruturas (algo que
ocorre tipicamente em C, COBOL e BASIC), ou geram os relacionamentos entre os arquivos (típicos do ambiente
xBase). Por exemplo, quando você é obrigado a definir a forma do registro em seu programa, você não está
lidando com um SGBD.
Regra 2: Independência dos Dados- Quando as aplicações estiverem realmente imunes a mudanças na
estrutura de armazenamento ou na estratégia de acesso aos dados, podemos dizer que esta regra foi atingida.
Portanto, nenhuma definição dos dados deverá estar contida nos programas da aplicação. Quando você resolve
criar uma nova forma de acesso, um novo índice, se precisar alterar o código de seu aplicativo, você não está
lidando com um SGBD.
Regra 3: Abstração dos Dados- Em um SGBD real é fornecida ao usuário somente uma representação
conceitual dos dados, o que não inclui maiores detalhes sobre sua forma de armazenamento real. O chamado
Modelo de Dados é um tipo de abstração utilizada para fornecer esta representação conceitual. Neste modelo, um
esquema das tabelas, seus relacionamentos e suas chaves de acesso são exibidas ao usuário, porém nada é
afirmado sobre a criação dos índices, ou como serão mantidos, ou qual a relação existente entre as tabelas que
deverá ser mantida íntegra. Assim se você desejar inserir um pedido em um cliente inexistente e esta entrada não
for automaticamente rejeitada, você não está lidando com um SGBD.
Regra 4: Visões- Um SGBD deve permitir que cada usuário visualize os dados de forma diferente daquela
existente previamente no Banco de Dados. Uma visão consiste de um subconjunto de dados do Banco de Dados,
necessariamente derivados dos existentes no Banco de Dados, porém estes não deverão estar
explicitamente armazenados. Portanto, toda vez que você é obrigado a replicar uma estrutura, para fins de acesso
de forma diferenciada por outros aplicativos, você não está lidando com um SGBD.
Regra 5: Transações- Um SGBD deve gerenciar completamente a integridade referencial definida em seu
esquema, sem precisar em tempo algum, do auxílio do programa aplicativo. Desta forma exige-se que o banco de
dados tenha ao menos uma instrução que permita a gravação de uma série modificações simultâneas e uma
instrução capaz de cancelar um série modificações. Por exemplo, imaginemos que estejamos cadastrando um
pedido para um cliente, que este deseje reservar 5 itens de nosso estoque, que estão disponíveis e portanto são
reservados, porém existe um bloqueio financeiro (duplicatas em atraso) que impede a venda. A transação deverá
ser desfeita com apenas uma instrução ao Banco de Dados, sem qualquer modificações suplementares nos dados.

20
21
Caso você se obrigue a corrigir as reservas, através de acessos complentares, você não está lidando com um
SGBD.
Regra 6: Acesso Automático- Em um GA uma situação típica é o chamado Dead-Lock, o abraço mortal. Esta
situação indesejável pode ocorrer toda vez que um usuário travou um registro em uma tabela e seu próximo passo
será travar um resgistro em uma tabela relacionada à primeira, porém se este registro estiver previamente
travado por outro usuário, o primeiro usuário ficará paralisado, pois, estará esperando o segundo usuário liberar o
registro em uso, para que então possa travá-lo e prosseguir sua tarefa. Se por hipótese o segundo usuário
necessitar travar o registro travado pelo primeiro usuário (!), afirmamos que ocorreu um abraço mortal, pois cada
usuário travou um registro e precisa travar um outro, justamente o registro anteriormente travado pelo outro!
Imaginemos um caso onde o responsável pelos pedidos acabou de travar o Registro Item de Pedido, e, necessita
travar um registro no Cadastro de Produtos, para indicar uma nova reserva. Se concomitantemente estiver sendo
realizada uma tarefa de atualização de pendências na Tabela de Itens, e para tanto, previamente este segundo
usuário travou a Tabela de Produtos, temos a ocorrência do abraço mortal. Se a responsabilidade de evitar esta
ocorrência for responsabilidade da aplicação, você não está lidando com um SGBD.
Conclusão: Um SGBD deve obedecer INTEGRALMENTE as seis regras acima. Em caso contrário estaremos diante
de um GA ou de um "quase" SGBD.

Considerações Finais

Atualmente, existe uma tendência de mercado em se dizer que qualquer problema será resolvido, caso a empresa
adquira um Banco de Dados. Naturalmente, em um ambiente com acesso constante ao Banco de Dados (acesso
concorrente, obviamente), onde a segurança seja de vital importância e que o desempenho da aplicação escrita
estiver comprometendo a empresa, considerando-se logicamente uma aplicação bem escrita, sem dúvida a
aquisição de um Banco de Dados poderá ser o primeiro passo na solução do problema.
Analogamente ao que ocorreu com o aparecimento das primeriras linguagens de programação voltadas ao
Windows, onde estas foram apresentadas como capazes de alavancar os negócios da empresa, e no geral
causaram mais frustação do que solução, a aquisição do Banco de Dados, pode gerar o mesmo tipo de problema.
É fundamental que a empresa candidata a utilizar um Banco de Dados, normatize-se totalmente, pois soluções
“quebra-galho”, típicas do ambiente que dispõe de um Gerenciador de Arquivo, tendem a ser impossíveis em um
ambiente estruturado sobre o Banco de Dados. Portanto, sob pena de se realizar um grande investimento, e não
se colher fruto algum, é muito conveniente, que a empresa antes de adquirir um Banco de Dados, passe por um
processo de adaptação, preferencialmente contando com pessoal especializado, geralmente consultores, que não
tenham qualquer ligação com fabricantes de Bancos de Dados.

Características Gerais de um SGBD

Os SGBD tem sete características operacionais elementares sempre observadas, que passaremos a listarr:

Característica 1: Controle de Redundâncias- A redundância consiste no armazenamento de uma mesma


informação em locais diferentes, provocando inconsistências. Em um Banco de Dados as informações só se
encontram armazenadas em um único local, não existindo duplicação descontrolada dos dados. Quando existem
replicações dos dados, estas são decorrentes do processo de armazenagem típica do ambiente Cliente-Servidor,
totalmente sob controle do Banco de Dados.
Característica 2: Compartilhamento dos Dados- O SGBD deve incluir software de controle de concorrência ao
acesso dos dados, garantindo em qualquer tipo de situação a escrita/leitura de dados sem erros.
Característica 3: Controle de Acesso- O SGDB deve dispor de recursos que possibilitem selecionar a
autoridade de cada usuário. Assim um usuário poderá realizar qualquer tipo de acesso, outros poderão ler alguns
dados e atualizar outros e outros ainda poderão somente acessar um conjunto restrito de dados para escrita e
leitura.
Característica 4: Interfaceamento- Um Banco de Dados deverá disponibilizar formas de acesso gráfico, em
linguagem natural, em SQL ou ainda via menus de acesso, não sendo uma "caixa-preta" somente sendo passível
de ser acessada por aplicações.
Característica 5: Esquematização- Um Banco de Dados deverá fornecer mecanismos que possibilitem a
compreensão do relacionamento existentes entre as tabelas e de sua eventual manutenção.
Característica 6: Controle de Integridade-Um Banco de Dados deverá impedir que aplicações ou acessos pelas
interfaces possam comprometer a integridade dos dados.
Característica 7: Backups- O SGBD deverá apresentar facilidade para recuperar falhas de hardware e software,
através da existência de arquivos de "pré-imagem" ou de outros recursos automáticos, exigindo minimamente a
intervenção de pessoal técnico.

Existe a possibilidade de encontramos Bancos de Dados que não satisfaçam completamente todas as
características acima, o que não o inválida como Banco de Dados. Na prática podemos encontrar situações onde a
primeira característica não seja importante, pois podemos ter o Banco de Dados baseado totalmente em um único
servidor, e as redundâncias podem ser aceitas em algumas situações sob controle da aplicação (algo não muito
recomendado, mas passível de aceitação, em situações onde a existência do nome do cliente em um arquivo
contendo duplicatas emitidas, possibilita o acesso a apenas uma tabela sem relacionamentos, e sabe-se de
antemão que uma duplicata depois de emitida, não pode ter seu cliente alterado).
A segunda característica (Compartilhamento dos Dados) pode ser desconsiderada principalmente em ambiente de
desenvolvimento, ou ainda em aplicações remotas.

21
22
O Controle de Acesso pode ser descartado em pequenas empresas, sendo que o aplicativo em questão, mais o
software de rede, podem facilmente se imcumbir desta característica, no caso de pequenas empresas, com
reduzido número de pessoas na área operacional.
O Interfaceamento e a Esquematização, são características sempre disponíveis, o que varia neste caso é qualidade
destes compoenentes, que vai desde o sofrível até o estado da arte. É muito conveniente que esta característica
seja muito boa em um Banco de Dados, onde estiverem em atuação mais de um Administrador de Banco de Dados
e tivermos um número relativamente alto de sistemas desenvolvidos ou em desenvolvimento neste ambiente.
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.

22
23
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

23
24
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

24
25
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

Registro de Disciplinas

Informática

Álvaro

Maurício

Cláudio

Registro de Alunos

O exemplo anterior representa uma instância de connjunto, no caso Disciplinas (Tópicos Avançados) e seus alunos
(no caso Álvaro, Amorim e Cláudio).

Banco de Dados Orientados ao Objeto

Representam os dados como coleções que obedecem propriedades. São modelos geralmente conceituais dispondo
de pouquíssimas aplicações reais. Neste Modelo não seria interessante a existência de uma tabela de funcionários
e dentro dela alguma referência para cada registro, de forma a podermos saber onde (em que departamento) o
funcionário está alocado. Um conjunto de regras disponibilizaria em separado os funcionários da fábrica, que no
entanto estariam agrupados aos demais, para o sistema de folha de pagamento.

Banco de Dados Universal

Usa fortemente o conceito dos bancos de dados relacionais (ainda a serem vistos), no que concerne ao tratamento
da informação dita caracter e muito do Modelo Orientado ao Objeto, no tocante ao tratamento de Imagens e Sons.
É um dos assuntos top do momento, e será alvo de pesquisas na disciplina Tópicos Avançados - Atualidades, não
sendo objeto imediato de nossa matéria.

Banco de Dados Relacional

O Modelo de Dados relacional representa os dados contidos em um Banco de Dados através de relações. Estas
relações contém informações sobre as entidades representadas e seus relacionamentos. O Modelo Relacional, é
claramente baseado no conceito de matrizes, onde as chamadas linhas (das matrizes) seriam os registros e as
colunas (das matrizes) seriam os campos. Os nomes das tabelas e dos campos são de fundamental importância
para nossa compreensão entre o que estamos armazenando, onde estamos armazenando e qual a relação
existente entre os dados armazenados.

Cada linha de nossa relação será chamada de TUPLA e cada coluna de nossa relação será chamada de ATRIBUTO.
O conjunto de valores passíveis de serem assumidos por um atribruto, será intitulado de DOMÍNIO.

Estes tópicos serão estudados cuidadosamente na disciplina Análise de Sistemas, que se incumbirá de apresentar
cuidadosamente regras e normas para elaboração destes modelos.

Em nosso curso, voltado à construção prática dos Bancos de Dados, e não de sua construção teóricas, apenas
citaremos os aspectos básicos da construção teórica, de forma a facilitar ao estudante o relacionamento que existe
entre Análise de Sistemas e Banco de Dados (uma das sub-disciplinas de Tópicos Avançados).

O domínio consiste de um grupo de valores atômicos a partir dos quais um ou mais atributos retiram seus valores
reais. Assim sendo Rio de Janeiro, Paraná e Pará são estados válidos para o Brasil, enquanto que Corrientes não é
um estado válido (pertence a Argentina e não ao Brasil).

O esquema de uma relação, nada mais são que os campos (colunas) existentes em uma tabela. Já a instância da
relação consiste no conjunto de valores que cada atributo assume em um determinado instante. Portanto, os
dados armazenados no Banco de Dados, são formados pelas instâncias das relações.

25
26
As relações não podem ser duplicadas (não podem existir dois estados do Pará, no conjunto de estados brasileiros,
por exemplo), a ordem de entrada de dados no Banco de Dados não deverá ter qualquer importância para as
relações, no que concerne ao seu tratamento. Os atributos deverão ser atômicos, isto é, não são íveis de novas
divisões.

Chamaremos de Chave Primária ao Atributo que definir um resgistro, dentre uma coleção de registros. Chave
Secundária (Terceária, etc), serão chaves que possibilitarão pesquisas ou ordenações alternativas, ou seja,
diferentes da ordem criada a partir da chave primária ou da ordenação natural (física) da tabela. Chamaremos de
Chave Composta, aquela chave que contém mais de um atributo (Por exemplo um cadastro ordenado
alfabéticamente por Estado, Cidade e Nome do Cliente, necessitaria de uma chave composta que contivesse
estes três atributos). Chamaremos de Chave Estrangeira, aquela chave que permitir a ligação lógica entre uma
tabela (onde ela se encontra) com outra na qual ele é chave primária.

Exemplo:

Cidade Estado
* CidCodi * EstCodi
CidNome EstNome
EstCodi (E)

CidCodi e EstCodi, são chaves primárias respectivamente das tabelas Cidade e Estado, enquanto EstCodi é chave
estrangeira na tabela de cidades. É precisamente por este campo (atributo, ou coluna), que será estabelecida a
relação entre as tabelas Cidade-->Estado.
Forma Normal

A disciplina Análise de Sistemas abordará detalhadamente esta importante metodologia para definição das tabelas
que irão compor a base de dados, que aqui apenas citaremos.

Primeira Forma Normal: Uma relação se encontra na primeira forma normal se todos os domínios de atributos
possuem apenas valores atômicos (simples e indivisíveis), e que os valores de cada atributo na tupla seja um valor
simples. Assim sendo todos os atributos compostos devem ser divididos em atributos atômicos.

Segunda Forma Normal: Uma relação se encontra na segunda forma normal quando estiver na primeira forma
normal e todos os atributos que não participam da chave primária são dependentes desta. Assim devemos verificar
se todos os atributos são dependentes da chave primária e retirar-se da relação todos os
atributos de um grupo não dependente que dará origem a uma nova relação, que conterá esse atributo como não
chave. Desta maneira, na segunda forma normal evita inconsistências devido a duplicidades.

Terceira Forma Normal: Uma relação estará na terceira forma normal, quando estiver na primeira forma norma
e todos os atributos que não participam da chave primária são dependentes desta porém não transitivos. Assim
devemos verificar se existe um atributo que não depende diretamente da chave, retirá-lo criando uma nova
relação que conterá esse grupo de atributos, e defina com a chave, os atributos dos quais esse grupo depende
diretamente.

O processo de normalização deve ser aplicado em uma relação por vez, pois durante o processo de normalização
vamos obtendo quebras, e por conseguinte, novas relações. No momento em que o sistema estiver satisfatório, do
ponto de vista do analista, este processo iterativo é interrompido. De fato existem
literaturas indicando quarta, quinta formas normais, que não nos parece tão importante, nem mesmo
academicamente.
A normalização para formas apoiadas em dependências funcionais evita inconsistências, usando para isso a própria
construção da Base. Se a mesma consistência for passível de ser garantida pelo aplicativo, a normalização pode
ser evitada com ganhos reais no desempenho das pesquisas. No caso da
consistência não ser importante, também podemos não normalizar totalmente uma Base de Dados.

Exemplo: Normalizar os seguintes atributos:

Nº do Pedido, Nome do Cliente, Nome dos Produtos, Quantidades

Nº do Pedido, Código do Cliente, Nome dos Produtos, Quantidades


Código do Cliente, Nome do Cliente

Nº do Pedido, Código do Cliente, Código dos Produtos, Quantidades


Código do Cliente, Nome do Cliente
Código do Produto, Nome do Produto

Nº do Pedido, Código do Cliente


Código do Cliente, Nome do Cliente
Código do Produto, Nome do Produto
Nº do Pedido, Código do Produto, Quantidade

26
27
Cliente Pedido Item Produto

CliCodi PedNume PedNume ProCodi


CliNome CliCodi ProCodi ProNome
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.

27
28
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.

28
29
É 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.

29
30
A seguir código necessário a criação da tabela Departamento e seu índice:

create table Dept


(DepNume integer(4) not null,
DepNome char(20) not null,
DepLoca char(20) not null,
DepOrca integer(12,2),
primary key (DepNume)
);

create unique index DepNum on Dept (DepNume asc);

Note-se que a chave primária já está definida juntamente com o registro da tabela. A criação do índice, que por
razões óbvias deve ser criado após a tabela, naturalmente é um comando totalmente independente do primeiro
create, que serviu para criar a tabela e suas característica básicas.

Vamos analisar o código necessário para a criação da tabela de empregados, apresentado a seguir:

create table Emp


(EmpNume integer(5) not null,
EmpNome char(30) not null,
EmpGere integer(5) ,
EmpServ char(20) ,
DepNume integer(4) not null,
EmpAdmi date not null,
EmpSala integer(10,2),
EmpComi integer(10,2),
primary key (EmpNume),
foreign key has (DepNume)
references Dept
on delete restrict
on update cascade
);

create unique index EmpNum on Emp (EmpNume asc);


create index EmpDep on Emp (DepNume asc);

A Tabela de Empregados não poderia ter sido criada antes da Tabela de Departamento, pois contém uma
referência direta àquela tabela. Quando declaramos que DepNume é chave estrangeira, promovemos de fato a
ligação do cadastro de empregados como o cadastro de departamentos. Ao restringirmos as exclusões, permitimos
a existência de funcionários não alocados a nenhum departamento. Apesar desta prática ser contrária a tese de
que devemos possuir apenas tuplas perfeitamente relacionáveis em nossas tabelas, podemos deixar esta pequena
abertura, pois um usuário que excluisse inadivertidamente determinado departamento, acabaria por excluir
também uma grande quantidade de funcionários, que estivessem ligados a este departamento.

Já a atualização em cascata dos códigos de departamento é uma boa providência, na medida em que teremos,
uma vez alterado algum código de departamento, a atualização imediata de todos os funcionários pertencentes ao
departamento cujo código foi modificado.

Observações:
1- Observar que os índices são parte intrínseca das tabelas.
2- A integridade relacional é garantida pelo Banco de Dados e não pelo aplicativo.
3- Exclusões ou Alterações em Chaves Primárias, podem acarretar exclusões, anulações ou até mesmo perda de
integridade nas tabelas onde esta chave primária existir como chave estrangeira. Portanto é imprescindível
muito cuidado quando da elaboração do Banco de Dados. Uma tentação muito comum ao estudante é começar
criando as tabelas do Banco de Dados sem prévia Normalização. Este talvez seja o melhor caminho para perder-
se tempo em vão, pois quando você terminar de projetar suas telas de entrada de dados, notará "que nada
funciona!". Esta será a senha para usar o velho comando DEL do DOS e depois começar tudo de novo ...

Comando Drop

Este comando elimina a definição da tabela, seus dados e referências.

Sintaxe:
DROP TABLE < nome_tabela > ;

Ex:
DROP TABLE EMP;

30
31
Comando Alter

Este comando permite inserir/eliminar atributos nas tabelas já existentes.

Comando:
ALTER TABLE < nome_tabela > ADD / DROP (
nome_atributo1 < tipo > [ NOT NULL ],
nome_atributoN < tipo > [ NOT NULL ] ) ;

Não existe nenhum comando SQL que permita eliminar algum atributo de uma relação já definida. Assim caso
você desejar eliminar uma chave primária devidamente referenciada em outra tabela como chave estrangeira, ao
invés de obter a eliminação do campo, obterá apenas um erro.

Além do comando DROP que poderá eliminar uma tabela e suas relações, também podemos criar uma relação que
tenha os atributos que se deseja, copiar-se a relação antiga sobre a nova e apgando-se então a relação que
originalmente desejávamos eliminar.

Ex:
ALTER TABLE DEPT (
ADD DEPSALA DECIMAL (10,2) );

Exercício: Criar o Banco de Dados Mundo. Observar que se um continente for excluído, todos os países contidos
em tal continente também o serão. Esta situação é conhecida como exclusão em Cascata. Observar também que a
exclusão de um País eliminará todas as Cidades contidas no mesmo.

Prática

O Exemplo Trabalho já possue pequeno programa destinado a construção das tabelas contidas no Banco de Dados
TRABALHO. Execute "trabalho.sql" de forma a obter as tabelas acima sem necessidade de digitar as instruções
SQL de maneira interativa.

Para tanto, você deverá copiar para seu diretório de trabalho o arquivo "trabalho.sql" do diretório \IDEO\SQL.

Execute: "@trabalho;" que deverá:

- Criar o banco de dados Trabalho.


- Abrir o banco de dados Trabalho.
- Criar as Tabelas, Indices e Relações contidas neste Banco de Dados.

Posteriormente execute o comando "show tables", que deverá exibir as tabelas "dept" e "emp".
E ao executar "show fields dept" serão exibidos os campos da tabela "dept".

Copie e execute enchetra.sql do diretório \IDEO\SQL de forma a obter um conjunto de dados preparados para os
testes a seguir apresentados.

Na próxima etapa de nosso curso, estaremos realizando pesquisas utilizando a instrução Select. Julgamos
conveniente que os estudantes populem seu exercício e realizem exercícios análogos aos apresentados na Base de
Dados Trabalho no Banco de Dados Mundo.

Parte II - Comandos de Consulta ao Esquema

Devemos ressaltar que a linguagem SQL é utilizada tanto pelos profissionais responsáveis pelos dados, onde é
ressaltada a figura do Administrador do Banco de Dados e dos Analistas de Dados, como também pelos
desenvolvedores de Aplicações. Enquanto àqueles estão preocupados com o desempenho, integridade do Banco de
Dados e utilizam toda gama de recusos disponíveis no SQL, estes estão preocupados apenas em "transformar
dados em informações", portanto para os desenvolvedores costuma-se dizer que conhecer o "select" já basta. Em
nosso curso enfatizaremos a importância de TODOS os comandos do SQL, mas sabemos de antemão que os
professores responsáveis pelas linguagens IDEO, VB e Delphi, ressaltarão a preponderância da instrução "select",
que será apresentada a seguir e não no final do curso de SQL como geralmente acontece, pelo fato de que
diversas disciplinas necessitam especificamente deste comando, que passaremos a apresentar:

1) Seleção de todas os campos (ou colunas) da tabela de Departamentos.

Resp:
SELECT * FROM DEPT;

31
32
O exemplo utiliza o coringa "*" para selecionar as colunas na ordem em que foram criadas. A instrução Select,
como pudemos observar seleciona um grupo de registros de uma (ou mais) tabela(s). No caso a instrução From
nos indica a necessidade de pesquisarmos tais dados apenas na tabela Dept.

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).

32
33
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;

33
34
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).

34
35
Resp:
SELECT SUBSTRING (1,10,EMPNOME)
FROM EMP;

14) Apresente o nome de todos os empregados admitidos em 01/01/80.

Resp:
SELECT *
FROM EMP
WHERE EMPADMI = ^Q"DD-AAA-YYYY"("01-JAN-1980");
ou

SELECT *
FROM EMP
WHERE EMPADMI = ^Q("01-JAN-1980");

Funções Agregadas (ou de Agrupamento)

função retorno
avg(n) média do valor n, ignorando nulos
count(expr) vezes que o número da expr avalia para algo nao nulo
max(expr) maior valor da expr
min(expr) menor valor da expr
sum(n) soma dos valores de n, ignorando nulos

15) Apresente a Média, o Maior, o Menor e também a Somatória dos Salários pagos aos empregados.

Resp:
SELECT AVG(EMPSALA) FROM EMP;

SELECT MIN(EMPSALA) FROM EMP;

SELECT MAX(EMPSALA) FROM EMP;

SELECT SUM(EMPSALA) FROM EMP;

Agrupamentos

As funções de grupo operam sobre grupos de tuplas(linhas). Retornam resultados baseados em grupos de tuplas
em vez de resultados de funções por tupla individual. A claúsula "group by" do comando "select" é utilizada para
dividir tuplas em grupos menores.

A cláusula "GROUP BY" pode ser usada para dividir as tuplas de uma tabela em grupos menores. As funções de
grupo devolvem uma informação sumarizada para cada grupo.

16) Apresente a média de salário pagos por departamento.

Resp:
SELECT DUPNUME, AVG(EMPSALA)
FROM EMP
GROUP BY DEPNUME;

Obs.: Qualquer coluna ou expressão na lista de seleção, que não for uma função agregada, deverá constar da
claúsula "group by". Portanto é errado tentar impor uma "restrição" do tipo agregada na cláusula Where.

Having

A cláusula "HAVING" pode ser utilizada para especificar quais grupos deverão ser exibidos, portanto restringindo-
os.

17) Retome o problema anterior, porém apresente resposta apenas para departamentos com mais de
10 empregados.

Resp:
SELECT DEPNUME, AVG(EMPSALA)

35
36
FROM EMP
GROUP BY DEPNUME
HAVING COUNT(*) > 3;

Obs.: A claúsula "group by" deve ser colocada antes da "having", pois os grupos são formados e as funções de
grupos são calculadas antes de se resolver a cláusula "having".

A cláusula "where" não pode ser utilizada para restringir grupos que deverão ser exibidos.

Exemplificando ERRO típico - Restringindo Média Maior que 1000:

SELECT DEPNUME, AVG(EMPSALA)


FROM EMP
WHERE AVG(SALARIO) > 1000
GROUP BY DEPNUME;
( Esta seleção está ERRADA! )

SELECT DEPNUME, AVG(EMPSALA)


FROM EMP
GROUP BY DEPNUME
HAVING AVG(EMPSALA) > 1000;
( Seleção Adequada )

Seqüência no comando "Select":

SELECT coluna(s)
FROM tabela(s)
WHERE condição(ões) da(s) tupla(s)
GROUP BY condição(ões) do(s) grupo(s) de tupla(s)
HAVING condição(ões) do(s) grupo(s) de tupla(s)
ORDER BY coluna(s);

A "sql" fará a seguinte avaliação:

a) WHERE, para estabelecer tuplas individuais candidatas (não pode conter funções de grupo)
b) GROUP BY, para fixar grupos.
c) HAVING, para selecionar grupos para exibiçao.

Equi-Junção ( Junção por igualdade )

O relacionamento existente entre tabelas é chamado de equi-junção, pois os valores de colunas das duas tabelas
são iguais. A Equi-junção é possível apenas quando tivermos definido de forma adequada a chave estrangeira de
uma tabela e sua referência a chave primária da tabela precedente. Apesar de admitir-se em alguns casos, a equi-
junção de tabelas, sem a correspondência Chave Primária-Chave Estrangeira, recomendamos fortemente ao
estudante não utilizar este tipo de construção, pois certamente em nenhum momento nos exemplos propostos em
nossa disciplina ou nas disciplinas de Análise e Projeto de Sistemas, serão necessárias tais junções.
18) Listar Nomes de Empregados, Cargos e Nome do Departamento onde o empregado trabalha.

Resp: Observemos que dois dos três dados solicitados estão na Tabela Emp, enquanto o outro dado está na Tabela
Dept. Deveremos então acessar os dados restringindo convenientemente as relações existentes entre as tabelas.
De fato sabemos que DEPNUME é chave primária da tabela de Departamentos e também é chave estrangeira da
Tabela de Empregados. Portanto, este campo será o responsável pela equi-junção.

SELECT A.EMPNOME, A.EMPSERV, B.DEPNOME


FROM EMP A, DEPT B
WHERE A.DEPNUME = B.DEPNUME;

Obs.: Note que as tabelas quando contém colunas com o mesmo nome, usa-se um apelido "alias" para substituir o
nome da tabela associado a coluna. Imagine que alguém tivesse definido NOME para ser o Nome do Empregado na
Tabela de Empregados e também NOME para ser o Nome do Departamento na Tabela de
Departamentos. Tudo funcionaria de forma adequada, pois o aliás se encarregaria de evitar que uma ambiqüidade
fosse verificada. Embora SQL resolva de forma muito elegante o problema da nomenclatura idêntica para campos
de tabelas, recomendamos que o estudante fortemente evite tal forma de nomear os campos. O SQL nunca
confundirá um A.NOME com um B.NOME, porém podemos afirmar o mesmo de nós mesmos?

19) Liste os Códigos do Cada Funcionário, seus Nomes, seus Cargos e o nome do Gerente ao qual este
se relaciona.

36
37
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

37
38
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

38
39
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,
COL 20, “TOTAL:”, TOTAL(SALARIO)
FROM EMP

39
40
ORDER BY NOME;

Onde:

REPORTTOP - O que sera impresso no topo do relatório.


PAGETOP - Impresso em cada topo de pagina.
TOP - Impresso em cada Topo do Sort-Grupo do relatório.
DETAIL - O que sera impresso em cada linha.
NONE - Se não tiver resultado o select, não sera impresso o relatório.
BOTTOM - Impresso em cada Bottom do Sort-Grupo do relatório
PAGEBOTTOM - O que sera impresso no rodapé de cada pagina.
REPORTBOTTOM - O que sera impresso no rodape do relatório.

Formatos:

%C - caracter
%D - data
y - ano,
n - mes numérico,
a - mes alfanumérico,
d - dia,
j - dia e ano juliano
Exemplo: %D”dd/mm/yy”

%I - inteiro
%F - ponto flutuante

%FSZ onde: S - separador de 3 digitos e decimal point


Z - zeros serão suprimidos

%Q - data
%J - Hora
h - hora, m - minutos, s - segundos

%T - hora

E temos as funções: TOTAL, AVERAGE, MAXIMUM, MINIMUM.

ACCESS 2000

Conceitos Microsoft Access

O que é o Access?
O Access é um Sistema de Gerência de Banco de Dados Relacional Interativo (SGBD) para o Microsoft Windows.
Sua utilização é muito simples, não sendo necessário programar para criar um banco de dados.
O que é um SGBD?
O Sistema de Gerenciamento de Banco de Dados é um sistema capaz de armazenar e recuperar informações em
banco de dados.
O que é um Banco de Dados?
Um Banco de Dados é um recurso para a manipulação eficiente de um grande conjunto de informações
estruturadas e armazenadas de forma organizada e integrada.
O que é um Objeto?
Um objeto é uma unidade que pode ser selecionada e manipulada. No Access existem alguns objetos que podem
ser criados e utilizados, tais como: tabelas, formulários, relatórios, macros e módulos. Outros recursos que
também são considerados objetos são: figuras, gráficos, caixa de diálogos, etc.

Caixa de diálogo apresentada na inicialização do Access

40
41

Ao inicializar o Access será apresentada esta caixa de diálogo, você deverá escolher
uma das opções a seguir:
Banco de Dados Vazio – Criará um banco de dados vazio. Ao exibir a caixa de diálogo
“Novo Arquivo de Banco de Dados”, na caixa de texto “Salvar em” você deverá
procurar o caminho, em “Nome do Arquivo” preencher o nome do novo banco de dados
e em “Salvar como tipo” escolher Banco de Dados Microsoft Access e clique no botão
“CRIAR”.
Assistente de Banco de Dados - Criará um banco de dados utilizando o assistente de
banco de dados. Ao exibir a caixa de diálogo “Novo”, você terá as guias:
“Geral” - apresentará um ícone de Banco de Dados Vazio (idem a primeira opção).
“Banco de Dados” - apresentará vários ícones de banco de dados pré-definidos, você
deverá clicar duas vezes no banco que mais lhe convém, irá exibir a caixa de diálogo
“Novo Arquivo de Banco de Dados” (seguir os passos da caixa de diálogo “Novo
Arquivo de Banco de Dados” que estão descritos na primeira opção). Após ter clicado
no botão “CRIAR” automaticamente será aberto o assistente de Banco de Dados, com
as tabelas pré-definidas para este banco.
Abrir Banco de Dados Existente - Abrirá um banco de dados já criado. Ao escolher
esta opção você poderá selecionar “Mais Arquivos...”, irá exibir a caixa de diálogo
“Abrir”, na caixa de texto “Examinar” você deverá procurar o caminho, em “Nome do
Arquivo” preencher o nome do arquivo de banco de dados e em “Arquivos do tipo”
escolher Banco de Dados Microsoft Access, ou você poderá selecionar um dos últimos
arquivos de banco de dados acessados.

Iniciando um Banco de Dados

41
42

Esta é a tela inicial do Access, a partir dela você poderá criar, abrir, converter,
compactar ou reparar um banco de dados. Poderá atribuir segurança ao definir contas
de usuários e grupos e/ou criptografar um Banco de Dados (codificar um banco de
dados que só poderá ser lido pelo Access).
A janela inicial é constituída por:
1. Barra de Título: Título de apresentação do Microsoft Access.
2. Barra de Menu: Menu que contém funções desempenhadas pelo Access.
3. Barra de Ferramentas: Botões com as funções mais utilizadas no Access.
Para criar um novo banco de dados:
A partir do menu “Arquivo”, escolha a opção “Novo Banco de Dados” ou clique sobre o
ícone “Novo banco de Dados” na barra de ferramentas. O Access exibirá a caixa de
diálogo “Novo”, você terá duas guias:
A guia “Geral” apresentará um ícone de Banco de Dados Vazio, ao clicar duas vezes
com o mouse irá exibir a caixa de diálogo “Novo Arquivo de Banco de Dados”, na caixa
de texto “Salvar em” você deverá procurar o caminho, em “Nome do Arquivo”
preencher o nome do novo banco de dados e em “Salvar como tipo” escolher Banco de
Dados Microsoft Access e clique no botão "CRIAR".
A guia “Banco de Dados” apresentará vários ícones de banco de dados pré-definidos,
você deverá clicar duas vezes no banco que mais lhe convém, irá exibir a caixa de
diálogo “Novo Arquivo de Banco de Dados” (seguir os passos da caixa de diálogo “Novo
Arquivo de Banco de Dados” que estão descritos na primeira guia), após ter clicado no
botão “CRIAR” automaticamente será aberto o assistente de Banco de Dados, com as
tabelas pré-definidas para este banco.

42
43
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").

43
44
· 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).

44
45
· 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

45
46

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.
· Para excluir um registro da tabela:
Clique com o mouse no seletor de linha do registro desejado e pressione a tecla <DEL> ou clique sobre o ícone:

Criando uma Consulta

Tipos de Consulta:

Uma consulta é um objeto onde você pode fazer perguntas ao Access sobre determinados dados armazenados em
sua(s) tabela(s).
O Access permite que você crie vários tipos de consultas:
· Consulta seleção - São as mais usadas. Você pode selecionar os dados de uma ou mais tabela(s)/consulta(s)
para visualização.
· Consulta de tabela de referência cruzada - apresenta seus dados na forma de uma planilha eletrônica. É útil para
melhor visualização de grande quantidade de informações.
· Consulta criar tabela - através desta consulta você poderá criar uma nova tabela.
· Consulta atualização - utilizada para alterações em um conjunto de dados que você possa selecionar através de
condições.
· Consulta acréscimo - utilize este tipo de consulta para copiar todos os registros ou um conjunto de registros
especificados, de uma tabela para outra através de condições.
· Consulta exclusão - esta consulta permite que você exclua um conjunto de registros especificados através de
uma condição.
· Para terminar a execução de uma consulta, tecle CRTL+BREAK.

Criando uma nova consulta

46
47

Com a Janela de Banco de Dados ativa, siga os passos abaixo para criar uma consulta:
 Clique sobre o objeto “Consulta”.
 Clique sobre o botão “Novo”.
 Access exibirá a caixa de texto “Nova Consulta”, com as seguintes opções:
 Modo Estrutura: cria uma nova consulta sem utilizar assistente.
 Assistente de Consulta Simples: cria uma consulta de seleção a partir de campos que você escolheu.
 Assistente de Consulta de Tabela de Referência Cruzada: exibe os dados no formato de uma planilha
eletrônica.
 Assistente de Consulta Localizar Duplicatas: localiza registros com valores de campos duplicados na tabela.
 Assistente de Consulta Localizar não Coincidentes: encontra os registros em uma tabela que não possuem
registros relacionados em outra.

Escolhendo as tabelas/consultas para compor a sua consulta

Ao escolher o modo estrutura será apresentada a tela “Mostrar Tabela” onde você deve selecionar uma tabela ou consulta para
compor sua nova consulta.
Para selecionar o objeto:
· Clique sobre a consulta ou tabela desejada.
· Clique sobre o botão “Adicionar”.
Para fechar a janela:
· Clique sobre o botão “Fechar”.
Se a janela “Mostrar Tabela” não for apresentada ou se você precisar apenas inserir uma nova tabela/consulta em

uma consulta já existente, na barra de ferramentas, clique sobre o ícone:

Tela de Estrutura da Consulta

47
48

Ao escolher o modo estrutura e ter adicionado as tabelas desejadas para sua consulta você poderá especificar os campos
desejados e condições para executar a consulta.
Nesta tela de estrutura, é mostrado o relacionamento existente entre as tabelas, se não existir esse
relacionamento, você terá que criá-lo em sua consulta, ligando os campos que possuem o mesmo propósito.
Na grade de consulta, você deverá preencher as linhas da seguinte forma:
· Campos: Preencher o nome dos campos que desejar para a Consulta.
· Tabela: Tabela que o campo faz parte.
· Classificação: Para classificar um campo você deverá escolher se o campo será apresentado na ordem crescente
ou decrescente.
· Mostrar: Assinalar somente o campo que será apresentado na Consulta.
· Critério: Conjunto de informações que definirão as características da sua Consulta.
· Ou: Faz parte do critério.

Como montar uma consulta, executar e gravar

Para incluir um campo em sua Consulta:


· Selecione o campo a ser adicionado na Consulta.
· Arraste-o até a linha “Campo”.
Para incluir TODOS os campos:
· 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:

48
49

· 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.

49
50
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”.

50
51

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

51
52
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

Os objetos que existem dentro de um formulário são chamados de Controles. Esses controles são usados para visualizar,
modificar e incluir seus dados nas tabelas, são utilizados também para exibir resultados de um cálculo, títulos ou mensagens,
gráficos, imagens e outros objetos.
Access possui vários controles que você pode adicionar ao seu formulário, veja alguns exemplos:
· Rótulos: são controles utilizados para incluir uma legenda, um título ou uma mensagem.

52
53
· Caixa de Texto: neste controle são mostrados as informações contidas nas suas tabelas ou consultas, são
utilizados também para inclusão, exclusão e alteração dos dados. Para movimentação dos registros, você pode
utilizar a barra de navegação como mostra a figura abaixo:

Trabalhando na Estrutura do seu formulário

Agora que você já criou seu formulário, vamos aprender como alterar sua aparência. Para isso, na barra de ferramentas, clique
no ícone de Estrutura.
Seções dentro de um formulário:
Você pode perceber que, quando estamos no modo Estrutura, o nosso formulário está dividido entre três partes
(chamadas seções): Cabeçalho, Detalhe e Rodapé.
· Cabeçalho: nesta seção, geralmente, está o título do Formulário. Um cabeçalho pode conter outros objetos,
como, por exemplo, uma caixa de texto indicando a data do dia, mas isso não é muito comum.
· Detalhe: nesta seção encontra-se todo o corpo do formulário, isto é, as informações contidas em uma tabela ou
consulta.
· Rodapé: a seção Rodapé é usada normalmente para exibir, por exemplo, número de páginas em um formulário
impresso.

53
54

Um controle é formado por um rótulo e uma caixa de texto. Para selecionar:


· clique no controle desejado.
Para mover um controle:
· Posicione o cursor em um gerenciador de movimentação, o cursor do mouse deve aparecer como uma mão

aberta (para mover a etiqueta e a caixa de texto juntos) ou apenas com o dedo indicador (para mover ou a
caixa de texto ou a etiqueta separadamente).
Para redimencionar um controle:
· Posicione o mouse em um gerenciador de redimensionamento. Ele deve assumir as seguintes máscaras: (veja
exemplo na figura.)

Obs: Toda vez que o mouse assumir a máscara: você poderá selecionar ou digitar um texto.

Adicione um Rótulo e um Campo

Para adicionar novos controles em um formulário utilizaremos a Caixa de Ferramentas. Para isso, verifique se ela está ativa, se

não estiver, então na barra de ferramentas, clique o ícone ”Caixa de Ferramentas” para acioná-la.
Para inserir um texto no seu formulário:

· Clique sobre o ícone “Rótulo” e solte.


· Na estrutura do formulário, clique no local onde você deseja incluir o texto. No nosso caso, digitar o texto: “(Para uso Interno)”. O
Access mesmo já dimensiona o rótulo conforme sua necessidade.
Para inserir uma Caixa de Texto no Formulário:

54
55

· Clique sobre o ícone “Caixa de Texto” na caixa de ferramentas e solte.


· Na estrutura do formulário, clique no local onde você deseja incluir a caixa de texto. O Access criará uma caixa de texto “Não
Acoplado”. Isso significa que não existe nenhum campo de sua tabela ou consulta vinculado a essa caixa de texto. O que você
deve fazer é o seguinte:
 Clique dentro da Caixa de Texto onde está escrito “Não Acoplado” e digite o nome do campo da tabela/consulta desejado
para esta Caixa. O mesmo vale para o Rótulo que acompanha a Caixa de Texto.

Alterando a aparência do seu formulário

Para alterar a aparência do seu formulário você deve estar no modo estrutura, utilizar
a barra
de ferramentas formatação (figura acima) ou clicar com o botão direito do mouse
sobre o
objeto desejado.
Usando a barra de ferramentas de formatação:
Primeiramente deve-se selecionar o objeto desejado, clicando sobre o objeto ou
escolhendo o objeto na caixa de combinação “objeto”.
Altere o tipo da fonte escolhendo na caixa de combinação “Fonte” e seu tamanho na
caixa
de combinação “Tamanho da Fonte”.
Altere o estilo para negrito N, itálico I ou sublinhado S, clicando sobre o ícone
desejado.
Altere o alinhamento para “alinhar à esquerda” ou “centralizar” ou “alinhar à direita”,

clicando sobre o ícone


Altere a cor de fundo, cor da fonte ou cor da borda, clicando sobre o ícone

Altere o estilo e largura das bordas, clicando sobre o ícone

Trabalhando com as propriedades dos controles, seções ou formulários.

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:

55
56
· 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.

56
57
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.

57
58

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

58
59
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.

59
60
Conhecendo tela de Classificar e agrupar

Para adicionar um novo grupo ao relatório, excluir um grupo ou alterar suas propriedades você deve:
· Visualizar o relatório no modo estrutura.

· Clicar no ícone “Classificar e agrupar” ou no menu Editar nesta mesma opção.


Trabalhando na tela “Classificar e agrupar”:
· Campo/Expressão: Nesta coluna você deverá selecionar o campo para o agrupamento ou classificação. O
primeiro campo indica o primeiro nível.
· Ordem de classificação: determina se os dados serão classificados em ordem crescente ou decrescente.
· Selecione o campo e preencha as propriedades do grupo:
· Cabeçalho e Rodapé de grupo: Em um agrupamento é necessário que o campo a ser agrupado fique em um
cabeçalho de grupo, separado dos demais campos.
· Reagrupar: define como os valores são agrupados.
· Número de caracteres: determina um intervalo válido para os valores no campo.
· Manter junto: define como um grupo será impresso.

Crie e imprima etiquetas de endereçamento

Para criar etiquetas de endereçamento no Access:


 Na Janela Banco de Dados selecione o objeto relatório e clique no botão “Novo”.
 Na tela “Novo relatório” selecione a opção “Assistente de etiqueta”, escolha a tabela/consulta desejada e
clique no botão “OK”.
 Na próxima tela você definirá o tamanho da etiqueta desejado.

60
61

 Clique no botão “Avançar”, siga respondendo o assistente.

Montando sua etiqueta

· Na primeira tela você irá determinar a aparência do texto (fonte, cor) e clique no botão “Avançar”.
· Na segunda tela você desenhará o protótipo da etiqueta, movendo os campos desejados com o ícone “>” e clique
em “Avançar”.

· Na próxima tela você poderá classificar por um ou mais campos.


· Clique no botão “Avançar”, escolha um nome para o seu relatório de etiquetas e clique no botão “Concluir”.
· Na barra de menu no item “Arquivo”, escolha imprimir ou na barra de ferramentas, clique o ícone “Imprimir”.

Onde obter ajuda

61
62
Para ajudá-lo a solucionar dúvidas de informática, utilize o sistema Rau-Tu de perguntas e respostas, que foi desenvolvido pelo
Centro de Computação da Unicamp em conjunto com o Instituto Vale do Futuro. Tem por objetivo possibilitar que um time de
colaboradores possa responder a perguntas colocadas por qualquer pessoa no site, cobrindo diversas áreas de conhecimento.
Acesse: www.rau-tu.unicamp.br

62
63

63
64

64
65

Diferenças entre o ORACLE e o SQL Server 7.0

65
66
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.

Fácil de Usar: O Oracle incorpora recursos de fácil utilização para ambientes computadorizados com
grupos de trabalho distribuídos. Um procedimento de instalação intuitivo é o suficiente para que o servidor Oracle8
pré-ajustado e pré-configurado possa estar "ativo e em execução". A ferramenta gráfica Oracle® Enterprise
Manager, totalmente integrada, permite que os administradores executem tarefas complexas de gerenciamento
com a facilidade de apontar e clicar através do mouse. A combinação de potência e simplicidade permitem que
qualquer administrador, experiente ou não, gerencie o banco de dados Oracle8, deixando parte de seu tempo
livre para outras tarefas.
Acesso a Dados Distribuídos: O Oracle oferece um novo nível de sistemas de computação para usuários
de grupos de trabalho distribuídos. Consultas e atualizações distribuídas permitem o compartilhamento de dados
entre vários servidores e o two-phase commit garante a consistência dos dados. A replicação de dados permite
que os usuários criem várias cópias de leitura de partes de tabelas ou tabelas completas com consistência
transacional e integridade de dados garantida. Atualizações baseadas em eventos ou conforme demandas
proporcionam a flexibilidade máxima. Os links de bancos de dados permitem que dados remotos sejam definidos e
utilizados como se fossem locais, garantindo que os aplicativos nunca precisem de recodificação, caso os dados
sejam transferidos de um nó a outro.

Capacidade de Uso na Web: O servidor Oracle8 oferece aos usuários um servidor intranet completo, com
todos os recursos. Aplicativos de Web podem acessar, rápida e facilmente, quaisquer dados armazenados no
banco de dados Oracle e podem apresentar documentos Web gerados dinamicamente aos usuários finais. Todos os
componentes são totalmente configuráveis e gerenciáveis através de uma série de HTML.

Ajuste Automático do Banco de Dados: O gerenciador do servidor Oracle otimiza automaticamente o


desempenho do banco de dados. Depois de analisar os recursos do sistema e os requisitos de aplicativos durante o
processamento do banco de dados, o Oracle Self-Tuner recomenda os valores apropriados para os parâmetros
mais críticos do banco de dados e aplicações em momentos de baixa utilização.

66
67

Fácil Gerenciamento Local: O Oracle Enterprise Manager permite o gerenciamento fácil dos bancos de
dados do servidor Oracle, através de uma interface totalmente gráfica. Ferramentas de gerenciamento local
executam tarefas críticas rápida e facilmente, de forma independente ou em conjunto com o console de
gerenciamento central. As tarefas de gerenciamento local incluem:

 Inicialização e parada temporária do banco de dados.


 Criação do usuário e atribuição de funções/privilégios;
 Monitoração de sessões do usuário final;
 Backup e recuperação do banco de dados;
 Criação de tabela e gerenciamento de tamanhos e
 Importação e exportação de dados.

Fácil Gerenciamento Central: Oracle Enterprise Manager contém um console único, integrado, de
gerenciamento para a administração central de vários grupos de trabalho remotos, permitindo o tipo de
gerenciamento à distância, essencial em ambientes grandes e distribuídos.
Os administradores visualizam uma representação gráfica personalizada de objetos-chave, incluindo nós,
bancos de dados, listeners, usuários, funções e perfis que podem ser agrupados com base em qualquer critério.
Eles podem programar e automatizar trabalhos e eventos em objetos ou grupos de objetos específicos,
simplificando o desempenho das operações de gerenciamento. O Oracle Intelligent Agent, implantado em todos os
bancos de dados de servidores Oracle, executa com eficiência trabalhos e eventos enviados pelo console do Oracle
Enterprise Manager. Instrumentando o banco de dados, o Oracle Intelligent Agent automatiza a coleta de dados e
a detecção de problemas, funcionando independentemente do status do console ou das conexões da rede,
garantindo a alta disponibilidade do banco de dados.

Acesso Aberto a Dados: O Oracle valoriza seu investimento nas ferramentas e aplicativos existentes,
oferecendo um acesso aberto aos dados através de uma variedade de métodos padrão. Entre estes métodos,
encontram-se ODBC, Oracle® Objects for OLE, JDBC e drivers originais da Oracle. Oferecendo conectividade
aberta com implementação livre, o Oracle ajusta-se a qualquer ambiente, independentemente dos padrões
vigentes na corporação. O Oracle Objects for OLE oferece um controle personalizado (OCX ou ActiveX) combinado
a um servidor OLE que permite a exploração da funcionalidade original do Oracle a aplicativos Windows.

Banco de Dados para Computação Baseada em Redes: O Oracle é um dos principais componentes da
NCA baseada em padrões abertos. Foi projetado para atender à demanda dos métodos de sistemas centralizados
em redes e de desenvolvimento orientado a objeto. A NCA proporciona capacidade máxima de extensão, com base
em padrões industriais abertos, como CORBA e IIOP. Seja para grupos de trabalho tradicionais e aplicativos
empresariais ou para comércio eletrônico na Web, o Oracle8 e a NCA oferecem a potência, robustez, integração
de rede e flexibilidade para suportar os aplicativos mais exigentes.

Extensível: O Oracle proporciona um sistema único de gerenciamento de banco de dados capaz de atender
a novos requisitos de dados, agora e futuramente. O Oracle ConText® Cartridge permite que o Oracle gerencie
texto com a mesma segurança, escalabilidade, integridade e inteligência com que gerencia dados estruturados. O
Oracle Vídeo Cartridge® armazena, gerencia e produz vídeos de alta resolução e tela cheia, além de áudio de alta
fidelidade de um servidor para um cliente, através de uma rede.
Devido ao caráter aberto da arquitetura do cartucho de dados sob a NCA, os desenvolvedores podem
estender as capacidades do Oracle desenvolvendo cartuchos adicionais.

67
68

Otimizado para o Sistema Operacional: O Oracle8 oferece a mais avançada e escalável plataforma de
banco de dados de cliente leve ou cliente/servidor disponível. Para garantir o mais alto nível de desempenho em
todos os sistemas operacionais suportados, o Oracle8 Server é otimizado para aproveitar recursos específicos do
sistema operacional, como o modelo de encadeamento no Windows NT e dos drivers registrar-aguardar e do
sistema de E/S assíncrono em sistemas Unix.

SQL Server

O SQL Server é um excelente banco de dados para a plataforma Microsoft Windows e é a opção em
sistemas de gerenciamento de banco de dados escolhido por uma grande variedade de clientes empresariais e
programadores. O SQL Server oferece uma plataforma eficiente e flexível suportando banco de dados com enorme
volume de informações, ele se adapta perfeitamente a aplicativos existentes e fornece um ambiente de baixo
custo para personalizar e desenvolver novos aplicativos criados exclusivamente para atender às necessidades de
uma corporação.
O SQL Server pode ser usado tanto no Windows 95 ou Windows 98 quanto no Windows NT com uma base
única de códigos, fornecendo 100 por cento de compatibilidade do aplicativo com uma variedade de opções de
distribuição.
Dentre suas características principais, temos:

Facilidade de Criar, Gerenciar e Distribuir: O SQL Server foi desenvolvido para reduzir o custo total da
empresa, facilitando a criação, o gerenciamento e a distribuição de aplicativos baseados no processamento de
transações on-line (ou não) O SQL Server fornece ajuste e administração automatizados ao banco de dados com
excelente desempenho, bem como ferramentas sofisticadas para operações complexas. Inovações na facilidade de
uso, escalabilidade, confiabilidade e desempenho, um modelo de programação rápido e simples para
desenvolvedores, backup ativo e gerenciamento fazem do SQL server a escolha ideal para operações da empresa.

Desenvolvido para Computação Móvel: O SQL Server para Windows 95, Windows 98 ou Windows NT
Workstation permite ao usuário acessar dados e aplicativos a partir de qualquer lugar. O SQL Server oferece
muitas opções de replicação para assegurar que alterações efetuadas em dados sejam automaticamente
sincronizadas, incluindo alterações realizadas com o sistema operando off-line.

Uma Plataforma Ideal para Comércio: O SQL Server é perfeitamente compatível com o Windows NT e
com sua tecnologia Internet Information Server (IIS), fornece a plataforma ideal de banco de dados para o
comércio eletrônico. O SQL Server oferece preço/desempenho, fácil distribuição, excelente capacidade de
gerenciamento, consulta de texto inovadora, fácil publicação na Web, além da confiabilidade, escalabilidade e
segurança necessárias para manter um site de comércio dinâmico.

Armazenamento de Dados Eficiente: O SQL Server fornece uma plataforma completa que torna fácil e
rápido desenvolver, criar, manter e usar soluções de armazenamento de dados, permitindo à sua organização
tomar decisões empresariais baseadas em informações oportunas e precisas.

Conclusão

Pelas características descritas anteriormente sobre os dois Gerenciadores, percebe-se que os prós e os
contras de cada um, hora facilita, hora dificulta a escolha ideal. Quando se fala em segurança e portabilidade de
base de dados, o Oracle desponta como o favorito pela sua facilidade de manutenção. A ferramenta gráfica
Oracle® Enterprise Manager, totalmente integrada, permite que os administradores executem tarefas complexas

68
69
de gerenciamento com a facilidade do apontar e clicar do mouse. O Oracle oferece um novo nível de sistemas de
computação para usuários de grupos de trabalho distribuídos. Sistemas amplamente distribuídos, sejam eles
cliente/servidor ou sistemas de clientes simples são agora viáveis por uma fração do custo e complexidade dos
sistemas tradicionais. O SQL Server, apesar de possuir descendência nobre, a Microsoft, trata-se de um Sistema
Gerenciador de Bancos de Dados, Relacional, SGBDR, que funciona unicamente sob sistema operacional Windows
NT. Possui um módulo que permite sua utilização no Sistema Operacional Windows® 95. Por um outro lado, a
alocação física necessária para a sua utilização, torna até certo ponto, inviável num servidor que possua Hard Disk
de baixa capacidade. Independente se a base tiver 1 ou 100000 registros, o espaço físico alocado será sempre o
mesmo. O SQL Server também possui uma interface bastante amigável. Ambos, Oracle e SQL Server, possuem
acesso via ODBC, JDBC, DAO e outros.
No dia 23/11/1998 foram anunciadas as versões mais atualizadas das duas maiores empresas de softwares. A
Oracle anunciou o Oracle8i, seu novo banco de dados, apostando seu cacife na integração com a Web. A Microsoft
lançou o SQL Server 7.0 marcando sua estréia no segmento de data warehouse. A diferença de enfoque de ambas
é grande. O novo BD da Oracle se contrapõe ao modelo cliente/servidor que na opinião da companhia aumenta o
custo. A Microsoft confia na escalabilidade para ganhar adeptos no mundo corporativo. Uma das características
principais da nova versão Oracle 8i é que ela detém uma padronização de arquivo própria – o IFS - Internet File
System – que permite execução de operações tipo “drag and drop” com qualquer tipo de arquivo (web page,
documentos, planilhas e imagem) diretamente no sistema de arquivo do banco de dados. “Você não precisa mais
saber a extensão de seu arquivo Word se o acesso for feito do Excel. Com o Oracle8i, o arquivo pode ser
encontrado pelo nome que o usuário quiser dar ao mesmo”. O preço de lista do novo produto nos EUA foi fixado
em US$ 1.475 para a versão inicial com licença para cinco usuários, enquanto que a Microsoft fez sua première no
mundo de data warehouse na semana passada com a chegada do SQL Server 7.0, nova versão de seu banco de
dados relacional. Ele traz integrado ao software uma ferramenta OLAP que permite análises multidimensionais dos
dados armazenados nas tabelas do BD. Com o novo produto, a MS está dando um grande passo para polarizar a
competição com a Oracle, líder no segmento. Cerca de 300 produtos foram portados para o novo banco de dados.
E a expectativa dos executivos da companhia é que esse número seja quatro vezes maior nos próximos quatro
meses. São duas as versões do produto: uma standard, com preço de US$ 2.400 com cinco licenças, e outra
enterprise, US$ 8.000 para 25 licenças.

69

Você também pode gostar