Professional Documents
Culture Documents
BANCO DE DADOS
AUTOR:
PRESENTAO
BJETIVO
MENTA
OBRE O AUTOR
UMRIO
UNIDADE 1 .............................................................................................................................. 9
O que um Banco de Dados? e o que vem a ser um SGBD? .............................................9
UNIDADE 2 ............................................................................................................................ 14
Principais Caractersticas de um SGBD ..............................................................................14
UNIDADE 3 ............................................................................................................................ 19
Conceitos e Arquiteturas de um SGBD ...............................................................................19
UNIDADE 4 ............................................................................................................................ 23
Caractersticas das Principais Arquiteturas de um SGBD ................................................... 23
UNIDADE 5 ............................................................................................................................ 28
Nveis de Abstrao dos Dados na Arquitetura de um SGBD .............................................28
UNIDADE 6 ............................................................................................................................ 32
Quem so os usurios de um SGBD? ................................................................................ 32
UNIDADE 7 ............................................................................................................................ 36
Modelagem de Dados I: Modelos Lgicos baseado em Registros......................................36
UNIDADE 8 ............................................................................................................................ 42
Modelagem de Dados II: Modelos Lgicos baseado em Objetos .......................................42
UNIDADE 9 ............................................................................................................................ 47
Definio de Entidade, Atributo e Tupla ..............................................................................47
UNIDADE 10 .......................................................................................................................... 53
Definio de Chave Primria Simples, Composta, nica e Estrangeira ............................. 53
UNIDADE 11 .......................................................................................................................... 56
Relacionamentos entre Bancos de Dados ..........................................................................56
UNIDADE 12 .......................................................................................................................... 60
Relacionamentos Especiais com Mltiplas Entidades......................................................... 60
UNIDADE 13 .......................................................................................................................... 62
Integridade dos Dados ........................................................................................................62
UNIDADE 14 .......................................................................................................................... 65
Normalizao A Primeira, Segunda e a Terceira Forma Normal .....................................65
Copyright 2007, ESAB Escola Superior Aberta do Brasil
UNIDADE 15 .......................................................................................................................... 72
Fundamentos de Armazenamento e Manipulao de Dados..............................................72
UNIDADE 16 .......................................................................................................................... 78
A Linguagem SQL ...............................................................................................................78
UNIDADE 17 .......................................................................................................................... 81
Comando para Criao de um Banco de Dados .................................................................81
UNIDADE 18 .......................................................................................................................... 86
Comando SELECT para Consulta de Tabelas ....................................................................86
UNIDADE 19 .......................................................................................................................... 90
Clusula e Operadores usados no Comando SELECT....................................................... 90
UNIDADE 20 .......................................................................................................................... 97
Funes Agregadas e a Clusula HAVING.........................................................................97
UNIDADE 21 ........................................................................................................................ 101
Relacionamentos, sub-consulta e unio............................................................................ 101
UNIDADE 22 ........................................................................................................................ 106
Inseres, Alteraes e Excluses em Tabelas ................................................................ 106
UNIDADE 23 ........................................................................................................................ 110
Relatrios comando REPORT ....................................................................................... 110
UNIDADE 24 ........................................................................................................................ 114
Privilgios de Acesso GRANT e REVOKE ..................................................................... 114
UNIDADE 25 ........................................................................................................................ 119
Trabalhando com ndices .................................................................................................. 119
UNIDADE 26 ........................................................................................................................ 123
Resumo dos Comandos SQL ............................................................................................ 123
UNIDADE 27 ........................................................................................................................ 128
Otimizar Consultas SQL .................................................................................................... 128
UNIDADE 28 ........................................................................................................................ 132
Comando CREATE TRIGGER para criao de um gatilho ............................................... 132
UNIDADE 29 ........................................................................................................................ 136
Protegendo seu Servidor de Banco de Dados .................................................................. 136
UNIDADE 30 ........................................................................................................................ 142
Caractersticas dos vrios SGBDs de uso Comercial ....................................................... 142
Copyright 2007, ESAB Escola Superior Aberta do Brasil
NIDADE
Quando vrios usurios acessam o mesmo Banco de Dados, o que muito comum hoje em
dia, denominamos esses sistemas de multiusurios. Enquanto que em mquinas menores,
ou em pequenos sistemas, tendem a ser monousurios. Interessante que mesmo em
sistemas multiusurios o objetivo que cada usurio se comporte como se tivesse
10
Dados
De modo geral, num Sistema Multiusurio os dados so integrados e compartilhados:
Integrados: no sentido de ter uma unificao de vrios arquivos para eliminar qualquer
redundncia (repetio da mesma informao ou dado) parcial ou total entre estes arquivos.
Por exemplo, um arquivo de FUNCIONRIOS com vrios campos sobre os funcionrios
como nome, endereo, departamento, salrio e outros dados. E um arquivo de CURSOS
com todas as informaes sobre o treinamento que os funcionrios tiveram, ou esto tendo,
na empresa. No seria bom senso incluir novamente todos os dados dos funcionrios no
arquivo CURSOS, pois ficaria redundante ao arquivo FUNCIONRIOS que j possui esses
dados. Portanto, bastaria integrar estes dois arquivos e eliminar qualquer redundncia entre
eles.
Compartilhados:
quando
diferentes
usurios
acessam
os
mesmos
dados,
Hardware
11
Software
Entre os dados fisicamente armazenados no hardware, e os usurios do sistema, existe o
software conhecido como Gerenciador de Banco de Dados. Tambm denominado de
Servidor de Banco de Dados, ou ainda mais frequentemente chamado de Sistema de
Gerenciamento de Bancos de Dados (SGBD) - a sigla em ingls DBMS.
Um SGBD o conjunto de programas de computador (software) responsvel pelo
gerenciamento de uma base de dados. Todos os acessos ao Banco de Dados so tratados
pelo SGBD. Porm, apesar de ser o componente de software mais importante de todo o
sistema, no o nico a ser utilizado. Componentes como utilitrios, ferramentas de
desenvolvimento, geradores de relatrios, gerenciador de transaes e outros, auxiliam
tambm em um SGBD.
Podemos citar como principais exemplos de SGBD: Oracle, SQL-Server (Microsoft), e o DB2
(IBM). E alguns exemplos de SGBD que so software livre: MySQL, PostgreSQL e SQLite
(veja detalhes dos principais SGBDs na Unidade 30).
Usurios
Existem vrias classes de usurios em um Sistema de Banco de Dados. Temos o
Administrador de Banco de Dados (DBA), e o Administrador de Dados (DA), que como o
12
prprio nome j diz, administram o Banco de Dados para que tenha a melhor performance
possvel, mantendo a integridade dos dados, alm de outras atribuies.
Outros tipos de usurios so os programadores de aplicao, responsveis pela escrita de
programas de aplicaes de Banco de Dados em alguma linguagem de programao, como
COBOL, C++, JAVA entre outras linguagens de alto nvel.
E temos os usurios finais que acessam o Banco de Dados usando uma linguagem prpria
para isso, o exemplo tpico o SQL (que veremos com maiores detalhes em outras
unidades). Ou ento, aqueles com conhecimento mais superficial fazem uso de interfaces
acionado por comandos, ou seja, programas com formulrios e menus que facilitam o
trabalho do usurio final.
O nosso Glossrio ser super dinmico!! Ou seja, toda vez que voc tiver dvida
de alguma expresso tcnica, ou algum termo desconhecido, dever consultar o
WIKIPDIA (http://pt.wikipedia.org/). Se tiver condies de ajudar nesse projeto,
pois essa enciclopdia on-line criada com as contribuies de todos os
internautas, esteja vontade e enriquea essa Biblioteca Digital. Se mesmo
assim, voc ainda ficar com dvidas, ou no conseguir achar o que voc queria,
ento dirija para o nosso FRUM, intitulado GLOSSRIO, para que possamos
ajud-lo discutindo com o grupo.
O que um SGBD?
13
NIDADE
14
Integridade;
Integridade
Consiste em assegurar que os dados no Banco de Dados estejam corretos, sempre
permitindo que um cdigo ou chave em uma tabela tenha correspondncia adequada em
outra tabela. Por exemplo, um cdigo de uma determinada disciplina na tabela Histrico
Escolar com a devida descrio na tabela Disciplina. Caso contrrio, por exemplo, um
empregado poderia ser mostrado como pertencendo a um departamento que no existe
mais.
15
Isso ocorre com certa incidncia em Sistemas sem SGBD, pois os usurios atualizam o
campo em um sistema e no o fazem em outro. Quando o dado armazenado em um nico
local e compartilhado pelos sistemas, esse problema eliminado. Essas inconsistncias
tambm podem ser controladas por meio de regras estabelecidas no prprio Banco de
Dados.
16
As desvantagens de um SGBD
Em algumas situaes, cada vez mais raras, o uso de um SGBD pode representar uma
carga desnecessria aos custos quando comparado ao processamento tradicional de
arquivos como, por exemplo:
17
http://www.plugmasters.com.br/sys/materias/108/1/SGBD---Sistema-Gerenciadorde-Banco-de-Dados
Discusso sobre qual o melhor Banco de Dados?
http://www.jack.eti.br/www/?p=38
18
NIDADE
19
20
21
http://www.sebraepb.com.br:8080/bte/download/informtica/190_1_arquivo
_bdados.pdf
http://pt.wikipedia.org/wiki/Servidor
22
NIDADE
arquitetura
centralizada,
existe
um
computador
com
grande
capacidade
de
23
24
25
26
http://pt.wikipedia.org/wiki/Banco_de_dados_distribu%C3%ADdos
http://pt.wikipedia.org/wiki/N_camadas
http://www.juliobattisti.com.br/artigos/ti/ncamadas.asp
http://www.inf.puc-rio.br/~casanova/LivroCasanova/ncap1.pdf
http://www.inf.puc-rio.br/~casanova/LivroCasanova/ncap2.pdf
27
NIDADE
28
Nvel de Vises, ou Nvel Externo (tambm conhecido como nvel lgico do usurio)
O mais alto nvel de abstrao descreve apenas uma viso limitada do Banco de Dados.
Muitos usurios do SGBD no esto interessados em todos os dados, em vez disso,
precisam apenas uma parte do Banco de Dados.
O nvel de abstrao das vises dos dados definido para simplificar esta interao com o
sistema, que pode fornecer muitas vises para o mesmo Banco de Dados. Apesar do uso de
Copyright 2007, ESAB Escola Superior Aberta do Brasil
29
estruturas mais simples do que no nvel conceitual, alguma complexidade perdura nesse
nvel.
http://www.criarweb.com/artigos/arquitetura-bancos-de-dados.html
http://www.linhadecodigo.com.br/Artigo.aspx?id=332
30
Com base do link abaixo da UFRJ, que contm uma apresentao sobre
Arquitetura de Banco de Dados, realize um pequeno resumo desse material:
http://www.cos.ufrj.br/~marta/ArchitectureP.pdf
31
NIDADE
Objetivo: Descrever a formao e as caractersticas de cada usurio que trabalha com SGBD
Administrador de Dados
O grande objetivo do administrador de dados permitir que vrios usurios compartilhem os
dados corporativos. Deste modo, os dados no pertencem a nenhum sistema ou usurio de
forma especfica, e sim, organizao como um todo. Assim, o administrador de dados se
preocupa basicamente com a organizao dos dados, e no com o seu armazenamento
propriamente dito. Vejamos, suas caractersticas:
32
Usurios Finais
33
Especialistas:
usurios
sofisticados
que
chegam a
escrever
aplicaes
especializadas.
Profissionais de Apoio
34
35
NIDADE
36
para especificar a estrutura lgica geral do Banco de Dados e para fornecer uma descrio
de alto nvel da implementao.
Modelos baseados em registros so assim chamados porque o Banco de Dados
estruturado em registros de formato fixo. Cada tipo de registro define um nmero fixo de
campos, ou atributos, e cada campo so usualmente de tamanho fixo. Com esse conceito
surgiram os seguintes modelos de Banco de Dados: Hierrquico, Rede e Relacional.
Desses trs, o Modelo Relacional o que tem maior penetrao no mercado em relao aos
outros dois. O Modelo Hierrquico e o de Rede eram usados em um grande nmero de
Banco de Dados antigos, e em algumas aplicaes na Internet.
O Modelo Hierrquico
O modelo hierrquico surgiu na dcada de 60. Permite organizar dados em uma estrutura
hierrquica (estrutura em rvore invertida), com acesso unidirecional, de pai para o filho,
sempre comeando pela raiz.
Em outras palavras, esse tipo de Banco de Dados formado por uma coleo de registros
conectada uns aos outros por links. Os SGBDs mais conhecidos desse tipo so o IMS
(Information Management System da IBM), Adabas e o System2000.
Os dados organizados, segundo este modelo, podem ser acessados segundo uma
sequncia hierrquica com uma navegao do topo para as ramificaes. Um registro pode
estar associado a vrios registros diferentes, desde que seja replicado. A replicao possui
grandes desvantagens causando inconsistncia nos dados e o desperdcio de espao.
Na Figura 7.1, vemos exemplo de um Banco de Dados no Modelo Hierrquico. Exibem-se
dados como: Nome, Cidade, UF, Conta e Saldo. A conta corrente de dois clientes, Jos Silva
e Maria Silva mantm uma conta em comum (conta: 20343). Por usar o Modelo Hierrquico,
notamos que a conta em comum replicada, apresentando as desvantagens apresentadas
anteriormente.
37
O Modelo de Rede
Esse modelo foi utilizado principalmente no final da dcada de 60 e durante a dcada de 70.
Ele permite organizar os dados em uma estrutura formada por vrias listas, que definem uma
intrincada rede de ligaes (estrutura similar a um grafo direcionado). O IDMS e o Total so
os SGBDs mais conhecidos com essa estrutura.
Esse Modelo de Rede , essencialmente, um conjunto ilimitado de ns e de ramais de
ligao. Na verdade, uma hierarquia apenas um tipo particular de rede, pois uma rede no
apresenta o conceito de n raiz e os registros podem ter diversos tipos de registros-pai,
assim como diversos tipos de registros-filho.
Similar ao Modelo Hierrquico, os dados no modelo de rede so organizados em tipos de
registros e ligaes entre registros. No existe restrio hierrquica, ou seja, quaisquer dois
tipos de registros podem se relacionar. Um esquema no Modelo de Rede chamado de
Diagrama de Estrutura de Dados.
Vejamos um exemplo na Figura 7.2, onde utilizamos os mesmo dados do exemplo anterior,
porm adaptado ao Modelo de Rede. Observamos que no existe mais o conceito de raiz, e
tambm no ocorre a replicao do registro. A principal desvantagem dessa abordagem
38
que, se o Banco possuir muitos tipos de entidades, pode resultar em esquemas muito
complexos de relacionamentos.
O Modelo Relacional
O modelo relacional foi formalmente definido por E. Codd, do Laboratrio da IBM em San
Jose, Califrnia, em 1970. O projeto inicial foi denominado de Sistema R e definia a
organizao dos dados e linguagens formais para a sua manipulao.
Com base nessas linguagens, foi definida a primeira verso do SQL (Structured Query
Language). Essa linguagem o padro em SGBD relacionais. Os Bancos de Dados
Relacionais mais famosos so: Oracle, SQL Server, Informix, Sybase e Ingres.
O objetivo bsico tratado pelo modelo relacional entidade ou relao. Uma entidade
equivale ao conceito matemtico de conjunto, ou seja, um agrupamento de elementos.
Um Banco de Dados Relacional visa manter os dados de forma no redundante (repetio
de vrios campos em vrias tabelas), executar processamento integrado, lidar com relaes
mltiplas (relacionamentos) e fornecer certo grau de independncia dos dados.
Copyright 2007, ESAB Escola Superior Aberta do Brasil
39
O modelo relacional, de longe, o mais utilizado, pois o modelo que se obtm o maior
desempenho e agilidade. Desde pequenas a grandes empresas e instituies utilizam, com
segurana, gigantes bases relacionais para gerenciar e manter seus dados.
Novamente, usando o mesmo exemplo, vamos ilustrar na Figura 7.3 como que no modelo
relacional so representados os dados. O relacionamento existente entre os dados foi
realizado atravs de um conjunto de 3 tabelas.
A primeira com os dados cadastrais do cliente, a segunda relacionando as contas de cada
cliente, e finalmente na ltima tabela o saldo de cada conta.
40
http://pt.wikipedia.org/wiki/Modelo_Hierrquico
http://pt.wikipedia.org/wiki/Modelo_em_rede
http://pt.wikipedia.org/wiki/Modelo_Relacional
http://www.linhadecodigo.com.br/Artigo.aspx?id=396
http://www.plugmasters.com.br/sys/materias/586/1/Modelagem-deDados:A-Hierarquias---Parte-1
http://www.plugmasters.com.br/sys/materias/587/1/Modelagem-deDados:A-Hierarquias---Parte-2
41
NIDADE
O Modelo Binrio;
O Modelo Infolgico;
42
43
44
http://pt.wikipedia.org/wiki/Modelo_de_Entidades_e_Relacionamentos
http://pt.wikipedia.org/wiki/Diagrama_entidade_relacionamento
http://www.unipan.br/emerson/Engenharia/DER.doc
http://www.plugmasters.com.br/sys/materias/453/1/Modelagem-de-Dados4---Validao-do-modelo-ER
Veja tambm o artigo Uma Nova Era na Tecnologia dos Bancos de Dados
no site abaixo:
http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=68
45
46
NIDADE
47
Nomenclatura de Campos
48
Voc pode observar que nos exemplos anteriores, desobedecemos algumas regras de
ortografia. Isso se deve ao fato de que os campos devem respeitar alguns padres em
termos de nomenclatura. Esses padres no so sempre obrigatrios. Mas, recomenda-se
observar as seguintes regras:
Nome do campo deve comear com uma letra maiscula e no com nmero;
Evitar o uso de nomes compostos de duas ou mais palavras com espaos em branco.
Acessorio1
Acessorio2
49
Tipos de Dados
Voc pode observar na figura 9.2, que o tipo de dado computado no campo Nome bem
diferente do tipo de dado computado no campo Telefone. Seria incorreto generalizar os
campos. Cada campo deve conter um tipo de dado especfico conforme as caractersticas
que ele receber.
Nesse caso, os campos Nome e Endereo podem ser do tipo alfanumrico. E o campo
Telefone poder ser do tipo numrico. Observe que o campo Nome contm menos
caracteres (letras) que o campo Endereo. O tamanho dos campos tambm deve ser
avaliado individualmente. Vamos supor um campo que contenha a sigla de um Estado do
Brasil; ele somente precisar de dois dgitos.
Cada SGBD introduz tipos de valores de campo que no necessariamente so padres.
Entretanto, existe um conjunto de tipos de dados que so representados praticamente na
totalidade destes bancos. Estes tipos de dados comuns so os seguintes:
Alfanumricos
50
Numricos
Booleanos
Binrios)
Datas
Memos
Autoincrementveis
51
52
NIDADE
10
53
primria composta. Por exemplo, o nmero da conta corrente normalmente formado por
dois atributos: o nmero da agncia e o nmero da conta. Obviamente, o nmero da agncia
pode ser repetido individualmente, afinal uma agncia bancria no tem apenas um nmero
de conta.
Chave nica
Uma chave nica um meio que utilizamos quando um determinado campo no deve ser
repetido e no deve ser chave primria. Com esse mtodo, damos mais consistncia ao
Banco de Dados. Por exemplo, em um cadastro de clientes, normalmente a cada cliente
atribudo um nmero que a chave primria. Para se ter maior segurana, adiciona-se o RG
como chave nica, para evitar que o cliente seja cadastrado duas vezes.
Chave Estrangeira
A chave estrangeira utilizada quando queremos que o valor de um atributo seja validado a
partir do valor de atributo de outra tabela. Nesse caso h certa relao de dependncia entre
as tabelas. Por exemplo, antes de efetuar o cadastro de um pedido de venda, devemos nos
certificar de que o cliente em questo consta no cadastro de clientes. O campo cdigo do
cliente na tabela de clientes uma chave primria. Esse mesmo valor na tabela de pedidos
uma chave estrangeira.
http://www.imasters.com.br/artigo/5403/bancodedados/modelagem_de_dad
os_-_parte_05_transformacao_entre_modelos//imprimir/
54
55
NIDADE
11
Relacionamento um-para-um
Relacionamento um-para-muitos
Relacionamento muitos-para-muitos
56
Relacionamento um-para-um
Em um relacionamento um-para-um, cada registro na tabela X pode ter somente um registro
coincidente na tabela Y. E por sua vez, cada registro na tabela Y pode ter somente um
registro coincidente na tabela X. Para que esse relacionamento acontea, os campos
relacionados nas duas tabelas devem ser chaves primrias. Esse tipo de relacionamento no
muito comum, pois a maioria dos dados relacionados poderia simplesmente estar em uma
nica tabela.
A utilizao de um relacionamento um-para-um recomendada quando voc deseja dividir
uma tabela com muitos campos, isolar parte de uma tabela por segurana ou armazenar
dados que se apliquem somente a um subconjunto da tabela principal. Outra possibilidade
seria aumentar a performance do Banco de Dados quando uma tabela, muito acessada,
apresenta-se com muitos campos dividindo-a em duas tabelas.
Por exemplo, o relacionamento na tabela de Funcionrio com a de Armrio (veja a Figura
11.1). Observe que para que haja este relacionamento, os campos relacionados nas duas
tabelas devem ser chaves primrias (codigo e funcionario). Nesta aplicao especfica, um
funcionrio somente poder ter um armrio e vice-versa.
Relacionamento um-para-muitos
Um relacionamento um-para-muitos estabelece que um registro em uma tabela X pode ter
vrios registros associados em uma tabela Y. Para isso o campo relacionado na tabela X
deve ser chave primria, e o campo na tabela Y no deve ser chave primria. Ao efetuarmos
57
58
na verdade, um relacionamento muitos-para-muitos so dois relacionamentos um-paramuitos, com uma tabela intermediria.
Por exemplo, para efetuar uma venda de um produto apenas, so necessrios no mnimo um
registro na tabela de Pedido e um registro na tabela de ItensPedido. Ao efetuar uma venda
com dois produtos, so necessrios um registro em Pedido e dois registros em ItensPedido.
Dessa forma, cada produto vendido ser necessrio um registro na tabela de ItensPedido, e
a cada pedido, um registro na tabela de Pedido.
Note que a tabela de associao possui uma chave primria composta pelos campos pedido
e produto. Esses campos so chaves estrangeiras nos relacionamentos um-para-muitos.
http://access-exemplos.blogspot.com/2007/08/relacionamentos-numabase-de-dados.html
59
NIDADE
12
60
61
NIDADE
13
Objetivo: Definir o que vem a ser integridade dentro do contexto de Banco de Dados.
Integridade de Domnio
Integridade de Entidade
Integridade Referencial
Integridade de Domnio
62
Este tipo de integridade zela pelos valores ideais e necessrios para um atributo. Para isso,
definimos algumas regras de validao por meio de expresses compostas de valores
constantes. Por exemplo:
Integridade de Entidade
A integridade de entidade tem o objetivo de validar os valores permitidos a partir de valores
j inseridos anteriormente. Aps uma autoconsulta a entidade vai permitir ou no a
gravao de um novo registro. Por exemplo:
Em uma locadora, impedir que seja locada uma fita que j est locada.
Integridade Referencial
A partir do momento que estabelecemos alguns relacionamentos, as regras de integridade
referencial j esto automaticamente criadas. Elas zelam pela consistncia dos registros de
uma entidade a partir de valores provenientes de outras entidades. Ou seja, determinado
registro vai depender diretamente de um registro em outra tabela.
Um registro em uma determinada tabela pai pode ter um ou mais registros coincidentes na
tabela filho.
Um registro em uma tabela filho sempre tem um nico registro coincidente em uma tabela
pai.
63
Para a incluso de um registro em uma determinada tabela filho, necessrio que exista um
registro pai coincidente.
Um registro pai s poder ser excludo se no possuir nenhum registro filho.
64
NIDADE
14
65
Pedido (Num_Ped, Nome_Cli, Endereco, Cidade, UF, Cod_Prod, Qtde, Descr, Valor_Unit, Total_Prod,
Total_Ped, Cod_Vend, Nome_Vend)
Anomalia de Incluso: ao ser includo um novo cliente, o mesmo tem que estar
relacionado a uma venda;
66
Dependncia
Para mostrar a 2FN e 3FN, necessrio introduo dos Conceitos de Dependncia entre
atributos.
Dependncia Funcional Total - Um atributo ou conjunto de atributos depende de forma total
da chave primria concatenada se a cada valor da chave est associado um valor para este
atributo.
67
Os atributos Descr, Valor_Unit dependem de Cod_Prod o qual faz parte da chave primria.
Cria-se a relao PRODUTO (Cod_Prod, Descr, Valor_Unit), com a chave primria
Cod_Prod e em ITEM_PEDIDO, a chave primria permanece Num_Ped + Cod_Prod.
68
69
Observao: note que foi criado um cdigo para o cliente, sendo este cdigo a chave
primria da relao, pois o nome do cliente no seria uma chave apropriada. Um modelo ER
do problema acima seria:
O processo de normalizao deve ser aplicado em uma relao por vez, pois durante o
processo de normalizao vamos obtendo quebras, e, por conseguinte, novas relaes. No
Copyright 2007, ESAB Escola Superior Aberta do Brasil
70
momento em que o sistema estiver satisfatrio, do ponto de vista do analista, este processo
iterativo interrompido. Embora existam 4FN e 5FN, no vamos explor-las devido a sua
complexidade.
http://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados
71
NIDADE
15
72
No nvel fsico precisamos definir algoritmos que permitam um acesso eficiente aos dados.
Nos nveis mais altos de abstrao dada nfase facilidade de uso. O objetivo fornecer
uma interao humana eficiente com o sistema.
A linguagem de manipulao de dados (Data Manipulation Language, DML) a linguagem
que permite aos usurios fazer o acesso a os dados ou manipul-los, conforme modelo
apropriado de dados. Existem basicamente dois tipos:
73
74
75
http://pt.wikipedia.org/wiki/Servidor
76
Com base nas figuras 15.1 e 15.2, tente descrever atravs de palavras o que
os diagramas tentam repassar.
77
NIDADE
16
78
79
http://pt.wikipedia.org/wiki/SQL
80
NIDADE
17
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
nome_atributo
tipo
81
real(n,m), date... ).
n
O comando acima criou um Banco de Dados, porm este na verdade no passa de uma
abertura no diretrio, pois no conta com nenhuma tabela. Agora criaremos as tabelas que
estaro contidas no Banco de Dados TRABALHO.
A primeira Tabela ser a de Departamentos (Dept). Essa tabela conter, alm de campos,
tambm sua chave primria, suas chaves estrangeiras e tambm seus ndices. A segunda
tabela ser a de Empregados (EMP).
No devemos nos esquecer de primeiramente abrirmos o Banco de Dados. Diferentemente
do que ocorre em alguns aplicativos, em SQL quando criamos um Banco de Dados, no
significa que o banco recm criado j est preparado para utilizao. A instruo a seguir,
providencia a abertura do Banco de Dados:
OPEN DATABASE TRABALHO;
Agora estamos prontos para criarmos as tabelas necessrias. A seguir, entramos com o
cdigo necessrio para a criao da tabela Departamento (Dept) e seu ndice:
create table Dept
(DepNume
DepNome
DepLoca
DepOrca
integer(12,2),
82
Note que a chave primria j est definida juntamente com o registro da tabela. A criao do
ndice, que por razes bvias deve ser criado aps a tabela, naturalmente um comando
totalmente independente do primeiro create, que serviu para criar a tabela e suas
caractersticas bsicas.
Vamos analisar o cdigo necessrio para a criao da tabela de empregados, apresentado a
seguir:
create table Emp
(EmpNume
EmpNome
EmpGere
integer(5) ,
EmpServ
char(20) ,
DepNume
EmpAdmi
EmpSala
integer(10,2),
EmpComi
integer(10,2),
83
A Tabela de Empregados no poderia ter sido criada antes da Tabela de Departamento, pois
contm uma referncia direta quela tabela. Quando declaramos que DepNume chave
estrangeira, promovemos de fato a ligao do cadastro de empregados com o cadastro de
departamentos. Ao restringirmos as excluses, permitimos a existncia de funcionrios no
alocados a nenhum departamento. Apesar de esta prtica ser contrria tese de que
devemos possuir apenas registros perfeitamente relacionveis em nossas tabelas, podemos
deixar esta pequena abertura, pois um usurio que exclusse inadvertidamente determinado
departamento, acabaria por excluir tambm uma grande quantidade de funcionrios, que
estivessem ligados a este departamento.
J a atualizao em cascata dos cdigos de departamento uma boa providncia. Uma vez
alterado algum cdigo de departamento, a atualizao ser imediata em todos os
funcionrios pertencentes ao departamento cujo cdigo foi modificado.
Observaes importantes:
Observar que os ndices so partes intrnsecas das tabelas.
A integridade relacional garantida pelo Banco de Dados e no pelo aplicativo.
Excluses ou Alteraes em Chaves Primrias podem acarretar excluses, anulaes ou at
mesmo perda de integridade nas tabelas onde esta chave primria existir como chave
estrangeira.
Portanto, imprescindvel muito cuidado quando da elaborao de um Banco de Dados.
Uma tentao muito comum dos novatos comear criando as tabelas do Banco de Dados
sem utilizar a Normalizao. Este talvez seja o melhor caminho para perder tempo em vo,
pois quando voc terminar de projetar suas telas de entrada de dados, notar "que nada
funciona!".
Copyright 2007, ESAB Escola Superior Aberta do Brasil
84
Comando DROP
Este comando elimina a definio da tabela, seus dados e referncias.
Sin taxe:
DROP TABLE < nome_tabela > ;
http://pgdocptbr.sourceforge.net/pg80/sql-createtableas.html
85
NIDADE
18
O exemplo acima utiliza o coringa "*" para selecionar as colunas na ordem em que foram
criadas. A instruo Select, como podemos observar, seleciona um grupo de registros de
uma ou mais tabela(s). No caso a instruo From nos indica a necessidade de pesquisarmos
tais dados apenas na tabela Dept.
Where como base das Restries de registros
A clusula where corresponde ao operador restrio da lgebra relacional. Contm a
condio que os registros devem obedecer a fim de serem listadas. Ela pode comparar
valores em colunas, literais, expresses aritmticas ou funes.
86
Significado
igual a
>
maior que
>=
<
menor que
<=
Exemplos:
SELECT EMPNOME, EMPSERV
FROM EMP
WHERE DEPNUME > 10;
SELECT EMPNOME, EMPSERV
FROM EMP
WHERE EMPSERV = 'GERENTE';
Exemplo 2 - Selecione todos os departamentos cujo oramento mensal seja maior que
100000. Apresente o Nome de tal departamento e seu oramento anual, que ser obtido
multiplicando-se o oramento mensal por 12.
87
Exemplo 3 - Apresente a instruo anterior, porm ao invs dos nomes "feios" DepNome e
DepOrca, os Ttulos Departamento e Oramento.
RESPOSTA: Neste exemplo deveremos denominar colunas por apelidos. Os nomes das
colunas mostradas por uma consulta so geralmente os nomes existentes no Dicionrio de
Dados. Porm, geralmente esto armazenados na forma do mais puro "informatiqus", onde
"todo mundo" sabe que CliCodi significa Cdigo do Cliente. possvel (e provvel) que o
usurio desconhea estes smbolos, portanto devemos os apresentar dando apelidos s
colunas "contaminadas" pelo informatiqus, que apesar de fundamental para os analistas,
somente so vistos como enigmas para os usurios.
SELECT DEPNOME "DEPARTAMENTO", DEPORCA * 12 "ORCAMENTO ANUAL"
FROM DEPT
WHERE DEPORCA > 100000;
88
FROM EMP;
Exemplo 5 - Apresente todos os dados dos empregados, considerando sua existncia fsica
diferente de sua existncia lgica (ou seja, devidamente inicializado).
RESPOSTA: Desejamos um tratamento diferenciado para valores nulos. Qualquer coluna de
um registro que no contenha informaes denominada de nula, portanto informao no
existente. Isto no o mesmo que "zero", pois zero um nmero como outro qualquer,
enquanto que um valor nulo utiliza um "byte" de armazenagem interna e so tratados de
forma diferenciada pelo SQL.
SELECT EMPNOME, EMPSALA + EMPCOMI
FROM EMP;
SELECT EMPNOME, NVL(EMPSALA,0) + NVL(EMPCOMI,0)
FROM EMP;
http://www.htmlstaff.org/postgresqlmanual/sql-select.html
http://www.hospedia.com.br/artigos/10/mysql/1/mysql_basico__o_comando_select_-_realizando_consultas.html
89
NIDADE
19
NOTA: Tambm possvel fazer com que o resultado da pesquisa venha classificado por
vrias colunas. Sem a clusula ORDER BY as linhas sero exibidas na sequncia que o SGBD
determinar.
90
RESPOSTA:
SELECT DEPNOME
FROM DEPT
WHERE DEPLOCA = "SAO PAULO";
O exemplo exigiu uma restrio (So Paulo) que nos obrigou a utilizar na instruo WHERE.
Demais Operadores
Operador
Significado
IN ( .... )
lista de valores
LIKE
IS NULL
um valor nulo
Exemplos:
SELECT EMPNOME, EMPSALA
FROM EMP
WHERE EMPSALA BETWEEN 500 AND 1000;
91
FROM EMP
WHERE EMPNOME LIKE 'F%';
O smbolo "%" pode ser usado para construir a pesquisa ("%" = qualquer sequncia de
nenhum at vrios caracteres).
Operadores Negativos
Operador
descrio
<>
diferente
NOT NOME_COLUNA =
diferente da coluna
no maior que
NOT BETWEEN
NOT IN
NOT LIKE
IS NOT NULL
no um valor nulo
Exemplo 8 - Selecione os Empregados cujos salrios sejam menores que 1000 ou maiores
que 3500.
92
Exemplo 9 - Apresente todos os funcionrios com salrios entre 200 e 700 e que sejam
Vendedores.
RESPOSTA: Necessitaremos de consultas com condies mltiplas. Operadores AND (E) e
OR (OU).
SELECT EMPNOME, EMPSALA, EMPSERV
FROM EMP
WHERE EMPSALA BETWEEN 700 AND 2000
AND EMPSERV = 'VENDEDOR';
Exemplo 10 - Apresente todos os funcionrios com salrios entre 200 e 700 ou que sejam
Vendedores.
RESPOSTA:
SELECT EMPNOME, EMPSALA, EMPSERV
FROM EMP
WHERE EMPSALA BETWEEN 700 AND 2000
OR EMPSERV = 'VENDEDOR';
93
Exemplo 11 - Apresente todos os funcionrios com salrios entre 200 e 700 e que sejam
Vendedores ou Balconistas.
RESPOSTA:
SELECT EMPNOME, EMPSALA, EMPSERV
FROM EMP
WHERE EMPSALA BETWEEN 700 AND 2000
AND ( EMPSERV = 'BALCONISTA' OR EMPSERV = 'VENDEDOR' );
Funes de Caracteres
Lower
Upper
Concat(x,y)
Substring(x,y,str)
To_Char(num)
To_Date(char,fmt)
^Q
94
FROM EMP;
ou
SELECT *
FROM EMP
WHERE EMPADMI = ^Q("01-JAN-1980");
http://pgdocptbr.sourceforge.net/pg80/sql-select.html
95
96
NIDADE
20
Retorno
avg(n)
count(expr)
max(expr)
min(expr)
sum(n)
Agrupamentos
Copyright 2007, ESAB Escola Superior Aberta do Brasil
97
A clusula GROUP BY pode ser usada para dividir os registros de uma tabela em grupos
menores. As funes de grupo devolvem uma informao sumarizada para cada grupo.
Obs.: Qualquer coluna ou expresso na lista de seleo, que no for uma funo agregada,
dever constar da clasula GROUP BY. Portanto errado tentar impor uma "restrio" do tipo
agregada na clusula WHERE.
Clusula HAVING
A clusula HAVING pode ser utilizada para especificar quais grupos devero ser exibidos,
portanto restringindo-os.
98
GROUP BY DEPNUME
HAVING COUNT(*) > 10;
Obs.: A clasula GROUP BY deve ser colocada antes da HAVING, pois os grupos so formados
e as funes de grupos so calculadas antes de se resolver a clusula HAVING. E a clusula
WHERE no pode ser utilizada por restringir grupos que devero ser exibidos.
( Seleo Adequada )
coluna(s)
tabela(s)
99
WHERE
GROUP BY
HAVING
ORDER BY
Coluna(s);
http://www.imasters.com.br/artigo/241
100
NIDADE
21
est
na
Tabela
Dept.
Deveremos
ento
acessar
os
dados
restringindo
101
OBSERVAO: Note que as tabelas quando contm colunas com o mesmo nome, usa-se
um apelido (ALIAS) para substituir o nome da tabela associado coluna. Imagine que algum
tivesse definido NOME para ser o Nome do Empregado na Tabela de Empregados e tambm
NOME para ser o Nome do Departamento na Tabela de Departamentos. Tudo funcionaria de
forma adequada, pois o ALIAS se encarregaria de evitar que uma ambiguidade fosse
verificada.
Embora SQL resolva de forma muito elegante o problema da nomenclatura idntica para
campos de tabelas, recomendamos fortemente evitar tal forma de nomear os campos. O
SQL nunca confundir um A.NOME com um B.NOME, porm podemos afirmar o mesmo de
ns mesmos?
Exemplo 19 - Liste os Cdigos do Cada Funcionrio, seus Nomes, seus Cargos e o nome do
Gerente ao qual este se relaciona.
RESPOSTA:
Precisamos criar um auto-relacionamento, ou seja, juntar uma tabela a ela prpria.
possvel juntarmos uma tabela a ela mesma com a utilizao de apelidos (permitindo juntar
registros da tabela a outros registros da mesma tabela).
SELECT A.EMPNUME, A.EMPNOME, A.EMPSERV, B.EMPNOME
FROM EMP A, EMP B
WHERE A.EMPGERE = B.EMPNUME;
102
SubConsultas
Uma subconsulta um comando SELECT que aninhado dentro de outro SELECT e que
devolve resultados intermedirios.
NOTA: Observe que a clusula IN torna-se verdadeira quando o atributo indicado est
presente no conjunto obtido atravs da subconsulta.
103
NOTA: Observe que a clusula EXISTS indica se o resultado de uma pesquisa contm ou no
registros. Observe tambm que poderemos verificar a no existncia (NOT EXISTS), caso esta
alternativa seja mais conveniente.
Unies
Podemos eventualmente unir duas linhas de consultas simplesmente utilizando a palavra
reservada UNION.
Exemplo 22 - Liste todos os empregados que tenham cdigos > 10 ou Funcionrios que
trabalhem em departamentos com cdigo maior que 10.
RESPOSTA:
Poderamos resolver esta pesquisa com um nico SELECT, porm devido ao fato de estarmos
trabalhando, em nosso exemplo, com apenas duas tabelas, no conseguimos criar um
exemplo mais adequado para utilizao deste recurso.
(SELECT *
FROM EMP
WHERE EMPNUME > 10)
UNION
(SELECT *
FROM EMP
WHERE DEPNUME > 10);
104
www.j soares.net/CEFET/BD/apostilaSQL.pdf
105
NIDADE
22
106
Inserir (INSERT)
INSERT INTO <tabela> [<campos>] [VALUES <valores>]
Exemplos:
INSERT INTO DEPT;
Exemplo:
UPDATE EMP SET EMPSALA = EMPSALA* 1.2 WHERE EMPSALA< 1000;
Excluir (DELETE)
DELETE FROM <tabela> [WHERE <condio>];
Exemplo:
DELETE FROM emp WHERE EMPSALA > 5000;
Transaes
Muitas vezes gostaramos que determinado processo, caso fosse abortado por qualquer
motivo, pudesse ser inteiramente cancelado. Imaginemos por exemplo um usurio digitando
um pedido. Imaginemos ainda que o sistema possa reservar cada item solicitado de maneira
Copyright 2007, ESAB Escola Superior Aberta do Brasil
107
Vises (VIEW)
Uma viso consiste basicamente de uma tabela derivada de outras tabelas. Considerando o
exemplo TRABALHO, poderamos criar uma viso baseada na tabela de Empregados (EMP)
e na tabela de Departamentos (DEPT) onde tivssemos somente os Nomes dos
Funcionrios e os Departamentos nos quais estes trabalhassem. Teramos algo assim:
Copyright 2007, ESAB Escola Superior Aberta do Brasil
108
http://pt.wikipedia.org/wiki/CRUD
http://pgdocptbr.sourceforge.net/pg80/rules-update.html
109
NIDADE
23
REPORT
110
FROM EMP
DETAIL EMPNOME
Podemos direcionar a sada de um relatrio tanto para um arquivo como para uma
impressora.
Para um arquivo:
REPORT ON RELAT.DAT ...
Onde:
111
REPORTTOP
PAGETOP
TOP
DETAIL
NONE
BOTTOM
PAGEBOTTOM
REPORTBOTTOM
Formatos
Tipos
%C
caracter
%D
data
ano
ms numrico
ms alfanumrico
dia
Exemplo: %Ddd/mm/yy
%I
inteiro
%F
ponto flutuante
112
%FSZ
%Q
Data
%J
Hora
Hora
Minutos
Segundos
%T
Hora
http://www.activedelphi.com.br/modules.php?op=modload&name=News&fil
e=article&sid=53&mode=thread&order=0&thold=0
113
NIDADE
24
Objetivo: Estudar como definir privilgios especficos conforme as necessidades dos usurios
Privilgios de Acesso GRANT e REVOKE
Como a grande maioria dos Bancos de Dados Relacionais pode ser acessada por diversos
usurios, cada um possui necessidade especfica em relao aos dados armazenados. De
acordo com o projeto do Banco de Dados, alguns usurios s podem consultar alguns dados,
outros podem atualizar, outros podem inserir, etc. Para que o dado fique protegido do uso
indevido de algum usurio, a linguagem SQL permite a definio de privilgios que cada um
pode ter em relao s tabelas. Os privilgios garantem a segurana e a integridade dos
dados, bem como a responsabilidade de cada usurio sobre seus dados especficos.
1.Comando GRANT (garantir)
Quando uma tabela/view criada, o nome do usurio que a criou anexado, internamente,
ao nome da tabela. Por exemplo: se a tabela produto foi criada pelo usurio Felipe, ento
internamente ela ser conhecida como Felipe - produto.
O criador da tabela/view tem total privilgio sobre a tabela criada, podendo disponibilizar
qualquer privilgio para outros usurios pelo comando GRANT.
Sintaxe:
GRANT {ALL | Lista de privilgios}
ON {nome da tabela/view (lista de colunas)}
TO {PUBLIC | Lista de usurios}
[WITH GRANT OPTION]
114
A palavra ALL indica que esto sendo dados TODOS privilgios, ou ento especificamos qual
o privilgio que est sendo dado (SELECT, UPDATE, etc.).
A clusula ON especifica a tabela ou view e suas colunas para as quais est sendo dado
privilgio.
Dica: Somente pode ser utilizada uma tabela ou view por comando.
Os privilgios podem ser especificados para algumas colunas, porm devem ser todas da
mesma tabela. Se no for especificada nenhuma coluna, os privilgios valem para todas.
A Clusula opcional WITH GRANT OPTION permite que quando se d o privilgio a um usurio,
ele passe esse privilgio para os outros usurios.
Lista de opes de privilgios:
Select
Insert
Delete
Update
PUBLIC
Exemplos:
Permite somente consultas ao usurio Jorge sobre a tabela Produto.
GRANT Select
ON Produto
TO Jorge;
115
Concede aos usurios Felipe e Carlos, o privilgio de seleo sobre a tabela Cliente.
GRANT Select
ON Cliente
TO Felipe, Carlos;
116
Sintaxe:
REVOKE [Lista de privilgios]
ON [nome da tabela / view]
FROM [Lista de usurios]
117
http://dev.mysql.com/doc/refman/4.1/pt/grant.html
http://www.htmlstaff.org/postgresqlmanual/sql-grant.html
http://www.htmlstaff.org/postgresqlmanual/sql-revoke.html
118
NIDADE
25
Criando ndices
119
Cada ndice aplicado a uma tabela, especificando uma ou mais colunas dessa tabela.
ndices so criados por meio do comando CREATE INDEX, que cria um ndice sobre colunas
de uma tabela.
Sintaxe:
CREATE [UNIQUE] INDEX <nome do ndice>
ON <nome da tabela> (<coluna(s)>);
A clusula UNIQUE opcional e define para aquela coluna no existiro duplicados, ou seja,
todos os dados armazenados na coluna sero NICOS.
A juno do ndice unique e da especificao NOT NULL para uma coluna define a chave
primria da tabela quanto ao aspecto lgico, pois uma chave primria, como vimos, no pode
ser NULA.
A criao dos ndices depende muito do projeto do Banco de Dados e das necessidades de
pesquisa formuladas pelos usurios do Banco de Dados. Os ndices esto muito ligados s
necessidades de velocidade na recuperao da informao, e na execuo rpida de uma
operao de consulta.
Para cada SGBD existem clusulas especficas operacionais que devem ser usadas, mas
neste caso vamos apresentar a sintaxe padro geral do SQL ANSI.
Exemplos:
Cria a tabela de ndices chamada nome_pro baseada no campo nome_produto da tabela
Produto.
CREATE INDEX nome_pro
ON Produto (nome_produto);
120
Eliminando ndices
Da mesma forma que um ndice criado, ele pode ser eliminado, dependendo das
necessidades do projeto do Banco de Dados.
Sintaxe:
DROP INDEX <nome do ndice>;
Exemplos:
Elimina o ndice que foi criado para o nome do produto
DROP INDEX nome_pro;
121
http://www.htmlstaff.org/postgresqlmanual/sql-createindex.html
http://www.htmlstaff.org/postgresqlmanual/sql-dropindex.html
122
NIDADE
26
123
124
125
http://www.htmlstaff.org/postgresqlmanual/index.html
126
127
NIDADE
27
Design de tabelas
Normalize as tabelas, pelo menos at a terceira forma normal, para garantir que no haja
duplicidade de dados. Se tiver que desnormalizar alguma tabela pense na ocupao e no
rendimento antes de proceder.
Os primeiros campos de cada tabela devem ser aqueles campos requeridos, e primeiro se
definem os de longitude fixa e depois os de longitude varivel. Ajuste ao mximo o tamanho
dos campos para no desperdiar espao. normal deixar um campo de texto para
observaes nas tabelas. Se este campo for utilizado com pouca frequncia ou se for
definido com grande tamanho, por via das dvidas, melhor criar uma nova tabela que
contenha a chave primria da primeira e o campo para observaes.
128
Campos a Selecionar
Na medida do possvel devem-se evitar sentenas SQL que estejam embebidas dentro do
cdigo da aplicao. muito mais eficaz usar vistas ou procedimentos armazenados, por
que o gerenciador os salva compilados. Tratando-se de uma sentena embebida, o
gerenciador deve compil-la antes de execut-la.
utilize:
SELECT Clientes.Nome, Faturamento.Fatura WHERE Clientes.IdCliente = Faturamento.IdClienteFaturado;
129
http://sqlcomoumtodo.wordpress.com/2007/09/29/como-criar-consultas-sqlmais-rapidas/
130
131
NIDADE
28
Sintaxe
CREATE TRIGGER nome-do-gatilho
{ BEFORE | AFTER } { INSERT | DELETE | UPDATE [ OR ] }
ON nome-da-tabela [FOR EACH { ROW | STATEMENT }]
EXECUTE PROCEDURE nome-da-funo
132
Disparar Gatilhos
Os gatilhos so definidos como: BEFORE (antes) ou AFTER (depois).
Os gatilhos BEFORE disparam antes das modificaes da instruo serem aplicadas, e
antes de qualquer restrio ser aplicada.
Os gatilhos AFTER disparam aps todas as restries terem sido satisfeitas, e aps todas as
alteraes terem sido aplicadas tabela de destino.
Tanto o gatilho BEFORE, como o AFTER podem ser tanto de linha (ROW) quanto de
instruo (STATEMENT).
133
com que todos os gatilhos ON DELETE da relao de destino sejam chamados 10 vezes, uma
vez para cada linha excluda. Por outro lado, um gatilho marcado como FOR EACH STATEMENT
somente executa uma vez para uma determinada operao, independente de quantas linhas
sejam modificadas. Em particular, uma operao que no modifica nenhuma linha, ainda
assim resulta na execuo de todos os gatilhos FOR EACH STATEMENT aplicveis.
Se vrios gatilhos do mesmo tipo esto definidos para o mesmo evento, estes so
disparados na ordem alfabtica de seus nomes. O SELECT no modifica nenhuma linha e,
portanto, no possvel criar gatilhos para SELECT. Regras e vises so mais apropriadas
neste caso.
Parmetros Utilizados
CREATE TRIGGER nome-do-gatilho
Nome dado ao novo gatilho, devendo ser distinto do nome de qualquer outro gatilho para a
mesma tabela.
{ BEFORE | AFTER }
Especifica o evento que dispara o gatilho. Vrios eventos podem ser especificados utilizando
OR.
ON nome-da-tabela
Especifica se o procedimento do gatilho deve ser disparado uma vez para cada linha afetada
pelo evento do gatilho, ou apenas uma vez para a declarao SQL. Se nenhum dos dois for
especificado, FOR EACH STATEMENT usado por padro.
Copyright 2007, ESAB Escola Superior Aberta do Brasil
134
Uma funo fornecida pelo usurio, declarada como no recebendo nenhum argumento e
retornando o tipo trigger, que executada quando o gatilho dispara.
Exemplo:
CREATE TRIGGER tafter
AFTER INSERT OR UPDATE OR DELETE
ON ttest FOR EACH ROW
EXECUTE PROCEDURE trigf();
Observaes:
Para poder criar um gatilho em uma tabela, o usurio deve possuir o privilgio TRIGGER na
tabela. Deve ser utilizado o comando DROP TRIGGER para remover um gatilho.
http://htmlstaff.org/postgresqlmanual/sql-createtrigger.html
http://www.javalinux.com.br/javalinux/pg74/sql-createtrigger.html
Para voc se ambientar ao PL/SQL da ORACLE, veja no final desse artigo como
eles co nceituam TRIGGER:
http://www.sqlmagazine.com.br/artigos/oracle/04_Intro_PLSQL.asp
135
NIDADE
29
Um usurio do Banco de Dados que, sem saber, executa cdigos mal intencionados.
136
Espionagem na rede
A arquitetura de implantao da maioria dos aplicativos inclui uma separao fsica entre o
cdigo de acesso a dados e o servidor de Banco de Dados. Consequentemente, os dados
confidenciais, como dados especficos do aplicativo ou credenciais de logon ao Banco de
Dados, devem ser protegidos contra a espionagem na rede.
Quebra de senha
Uma primeira linha de ataque comum tentar quebrar as senhas de nomes de conta
conhecidos, como a conta do administrador do SGBD.
A figura a seguir mostra as principais ameaas e vulnerabilidades que podem resultar em um
servidor de Banco de Dados. E visto tambm a possibilidade de destruio ou no roubo de
dados confidenciais.
137
Servios
Os servios so os pontos de vulnerabilidade preferenciais dos invasores que exploram os
privilgios e os recursos do servio para acessar o servidor. Alguns servios foram criados
para funcionar usando contas com privilgios. Se esses servios estiverem comprometidos, o
invasor poder efetuar operaes privilegiadas. Por padro, os servidores de Banco de
Copyright 2007, ESAB Escola Superior Aberta do Brasil
138
Protocolos
Limite o intervalo de protocolos que computadores cliente podem usar para estabelecer
conexo com o servidor de Banco de Dados e verifique se possvel proteger esses
protocolos.
Contas
Restrinja o nmero de contas do Windows acessveis pelo servidor de Banco de Dados ao
conjunto necessrio de contas de usurio e de servio. Use contas com menos privilgios e
com senhas de alta segurana. Uma conta com menos privilgios, usada para executar o
SQL Server, limita os recursos de um invasor que compromete o SQL Server e que
consegue executar comandos do sistema operacional.
Arquivos e diretrios
Use as permisses do sistema de arquivos NTFS para proteger programas, Bancos de
Dados e arquivos de log contra o acesso no autorizado. Quando voc usa ACLs (Listas de
Controle de Acesso) junto com a auditoria do Windows, possvel detectar a ocorrncia de
atividades suspeitas ou no autorizadas.
Compartilhamentos
139
Remova
todos
os
compartilhamentos
de
arquivos
desnecessrios,
incluindo
os
Portas
As portas no utilizadas esto fechadas no firewall, mas necessrio que os servidores
subjacentes ao firewall tambm bloqueiem ou restrinjam as portas com base no uso. Para
um SGBD dedicado, bloqueie todas as portas, exceto as portas necessrias para
autenticao.
Auditoria e log
A auditoria uma ajuda vital para a identificao de intrusos e de ataques em andamento,
bem como para o diagnstico de sinais de ataque. Configure um nvel mnimo de auditoria
para o servidor de Banco de Dados usando uma combinao de recursos de auditoria do
Windows e do SGBD.
http://www.microsoft.com/brasil/security/guidance/default.mspx
http://forums.microsoft.com/technet-br
http://www.activedelphi.com.br/modules.php?op=modload&name=News&fil
e=article&sid=293&mode=thread&order=0&thold=0
140
141
NIDADE
30
Objetivo: Fazer um comparativo dos vrios SGBD usados atualmente no mundo corporativo.
MySQL
O MySQL um SGBD, que utiliza a linguagem SQL como interface. atualmente um dos
Bancos de Dados mais populares. O MySQL foi criado na Sucia por dois suecos e um
finlands: David Axmark, Allan Larsson e Michael "Monty" Widenius. Todos esses
desenvolvedores trabalham juntos desde a dcada de 1980. Hoje em seu desenvolvimento e
manuteno, empregam aproximadamente 70 profissionais no mundo inteiro. Mais de mil
pessoas contribuem testando o software, integrando-o a outros produtos, e escrevendo a
respeito do mesmo.
O sucesso do MySQL deve-se em grande parte fcil integrao com o PHP. Essa
linguagem oferecida atualmente, quase que obrigatoriamente, nos pacotes de hospedagem
de sites na Internet. O Wikipdia um exemplo de utilizao do MySQL com grande
eficincia e robustez. Algumas de suas caractersticas so:
Copyright 2007, ESAB Escola Superior Aberta do Brasil
142
Facilidade de uso;
Software Livre;
No entanto, mesmo com todas essas caractersticas positivas, ainda faltam alguns recursos
avanados quando comparados como outros Banco de Dados, como o PostgreSQL.
PostgreSQL
PostgreSQL um Sistema Gerenciador de Banco de Dados Objeto Relacional (SGBDOR),
desenvolvido como projeto software livre. Inicialmente foi desenvolvido na Universidade de
Berkeley, Califrnia. A partir de 1996, o PostgreSQL firmou-se como um projeto de software
open source e comeou a ser desenvolvido por uma comunidade de voluntrios sob a
coordenao do PostgreSQL Global Development Group.
Embora as atividades do grupo sejam patrocinadas por diversas organizaes de todo o
mundo, seu desenvolvimento feito por um grupo de desenvolvedores, em sua maioria
voluntrios, espalhados por todo o mundo e que se comunicam via Internet. Hoje, o
PostgreSQL um dos SGBD de cdigo aberto mais avanados, contando com recursos
especiais tais como:
Consultas complexas;
Copyright 2007, ESAB Escola Superior Aberta do Brasil
143
Chaves estrangeiras;
Integridade transacional;
Triggers;
Views;
SQL Server
O SQL Server um Gerenciador de Banco de Dados Relacional feito pela Microsoft. um
Banco de Dados robusto e usado por sistemas corporativos dos mais diversos portes. Entre
os novos recursos est a integrao com o Framework .Net, que possibilita construir rotinas
utilizando as linguagens do .Net como VB.Net e C#.
Existe a necessidade de se destacar que no se deve confundir esse especfico SGBD, com
a linguagem SQL que geral e criada pela IBM. Por estratgias de marketing, espertamente
a Microsoft incluiu o nome dessa linguagem dentro do seu SGBD.
O SQL Server funciona apenas sob as vrias verses do Sistema Operacional Windows, da
prpria Microsoft. Os seus grandes concorrentes: Oracle e Postgres, por sua vez so mais
flexveis, pois funcionam em diversas plataformas e sistemas operacionais diferentes.
Oracle
O Oracle um SGBD que surgiu no final dos anos 70, quando Larry Ellison vislumbrou uma
oportunidade que outras companhias ainda no haviam percebido. Esse grande
Copyright 2007, ESAB Escola Superior Aberta do Brasil
144
DB2
O DB2 o Sistema Gerenciador de Banco de Dados Relacionais (SGDBR) produzido pela
IBM. Existem diferentes verses do DB2 que rodam desde num simples computador de mo,
at em potentes mainframes. Funcionam em servidores baseados em sistemas Unix,
Windows, ou Linux.
O projeto DB2 comeou no inicio dos anos 70 quando Edgar Frank Codd, trabalhando para
IBM, descreveu e publicou a teoria dos Bancos de Dados Relacionais. Para aplicar o modelo,
Codd criou uma linguagem que chamou de Alpha. Entretanto, a IBM no acreditava no
potencial das suas ideias, deixando-o fora da superviso do grupo de programadores, que
violaram diversas ideias fundamentais do modelo relacional de Codd. O resultado foi a
linguagem SEQUEL, que depois foi mudado para seu acrnimo SQL porque SEQUEL j era
uma marca registrada.
Por muitos anos, DB2 foi feito exclusivamente para rodar nos mainframes da IBM.
Posteriormente a IBM introduziu o DB2 para outras plataformas de servidores, incluindo o
Unix e o Windows, para ento colocar no Linux e PDAs.
145
146
Atividade Dissertativa
Desenvolva uma pesquisa gerando um texto, de 2 a 3 folhas adicionando imagens, de uma
das unidades da nossa apostila, de sua livre escolha, permitindo a expanso da temtica
selecionada.
Ateno: Qualquer bloco de texto igual ou existente na internet ser devolvido para o aluno
realize novamente.
147
LOSSRIO
148
IBLIOGRAFIA
149