Escolar Documentos
Profissional Documentos
Cultura Documentos
Banco de Dados Completo PDF
Banco de Dados Completo PDF
DE
DADOS
Apostila 1
2005
Prof. Paulo Roberto Rodrigues de Souza
BANCO
DE
DADOS
INTRODUO
Esta apostila tem o objetivo de nos orientar durante este perodo em nossas aulas de
Banco de Dados, no tem a pretenso de ser a nica fonte de informao para nosso xito no
curso. A inteno de elaborar este material de possuirmos um referencial e facilitar o estudo
do aluno nesta disciplina. Ela engloba materiais de livros diversos, apostilas, pesquisas na
Internet e de conhecimento prprio em minha experincia no uso e construo de banco de
dados.
Iremos ver durante o curso, entre outros tpicos, uma noo geral sobre a construo de
sistemas de banco de dados, construo de projetos lgicos de bancos de dados, modelos para a
construo de projetos fsicos de banco de dados, controle de dependncia de dados, consultas,
redundncia entre vrios outros.
Veremos em nossas aulas prticas o processo de criao de tabelas, relacionamentos,
views, stored procedures entre outros recursos importantes.
1
- Conceitos Gerais
Pg. 2 / 59
BANCO
DE
DADOS
Outra Definio
Um BD tambm pode ser definido como sendo:
"Uma coleo de dados operacionais inter-relacionados. Estes dados so armazenados
de forma independente dos programas que os utilizam, servindo assim a mltiplas aplicaes
de uma organizao."
Algumas partes desta definio so fundamentais para a compreenso do conceito de BD:
Pg. 3 / 59
BANCO
DE
DADOS
TELAS
Sistema de Banco
de Dados
Programas de Aplicao/Consulta
SGBD
CONEXO
Software de Acesso aos Dados
DADOS
Meta Dados
Dados
- Abstrao de Dados
O SGBD deve fornecer ao usurio uma representao conceitual dos dados, sem
fornecer muitos detalhes de como as informaes so armazenadas. Um modelo de dados
uma abstrao de dados que utileizada para fornecer esta representao conceitual utilizando
conceitos lgicos como objetos, suas propriedades e seus relacionamentos. A estrutura
detalhada e a organizao de cada arquivo so descritas no catlogo.
Descrevendo de forma bem prtica, abstrao de dados nada mais do que conseguir se
representar e armazenar dados de uma situao real em um banco de dados. Por exemplo,
como conseguir se montar um banco de dados de um controle de estoques de uma loja. A
abstrao a nossa capacidade de enxergar as necessidades deste banco.
Pg. 4 / 59
BANCO
DE
DADOS
Usurios
Para um grande banco de dados, existe um grande nmero de pessoas envolvidas, desde
o projeto, uso at manuteno.
- Usurios Finais
Existem basicamente trs categorias de usurios finais que so os usurios finais do
banco de dados, fazendo consultas, atualizaes e gerando documentos:
usurios casuais: acessam o banco de dados casualmente, mas que podem necessitar de
diferentes informaes a cada acesso; utilizam sofisticadas linguagens de consulta
para especificar suas necessidades;
usurios novatos ou paramtricos: utilizam pores pr-definidas do banco de dados,
utilizando consultas preestabelecidas que j foram exaustivamente testadas;
usurios sofisticados: so usurios que esto familiarizados com o SGBD e realizam
consultas complexas.
Pg. 5 / 59
BANCO
DE
DADOS
- Controle de Redundncia
No processamento tradicional de arquivos, cada grupo de usurios deve manter seu
prprio conjunto de arquivos e dados. Desta forma, acaba ocorrendo redundncias que
prejudicam o sistema com problemas como:
toda vez que for necessrio atualizar um arquivo de um grupo, ento todos os grupos
devem ser atualizados para manter a integridade dos dados no ambiente como um
todo;
a redundncia desnecessria de dados levam ao armazenamento excessivo de
informaes, ocupando espao que poderia estar sendo utilizado com outras
informaes.
O Controle de redundncia o ato de se evitar repeties de dados de forma
desnecessria em um banco de dados. no repetirmos informaes desnecessrias,
porm, sem deixarmos de armazenar o que importante e crucial para o funcionamento
do banco e a resoluo do problema a ser solucionado.
- Compartilhamento de Dados
Um SGBD multi-usurio deve permitir que mltiplos usurios acessem o banco de dados
ao mesmo tempo. Este fator essencial para que mltiplas aplicaes integradas possam
acessar o banco.
O SGBD multi-usurio deve manter o controle de concorrncia para assegurar que o
resultado de atualizaes sejam corretos. Um banco de dados multi-usurios deve fornecer
recursos para a construo de mltiplas vises.
- Tolerncia a Falhas
Um SGBD deve fornecer recursos para recuperao de falhas tanto de software quanto de
hardware. Tolerncia a falhas o recurso que o SGBD deve ter no caso de uma queda de
energia inesperada por exemplo.
Prof. Paulo Roberto R. Souza
Pg. 6 / 59
BANCO
DE
DADOS
Pg. 7 / 59
BANCO
DE
DADOS
Esquemas
Em qualquer modelo de dados utilizado, importante distinguir a descrio do banco
de dados do banco de dados por si prprio. A descrio de um banco de dados chamada de
esquema de um banco de dados e especificada durante o projeto do banco de dados.
Geralmente, poucas mudanas ocorrem no esquema do banco de dados.
Pg. 8 / 59
BANCO
DE
DADOS
Independncia de Dados
A independncia de dados pode ser definida como a capacidade de se alterar um
programa qualquer sem ter que se alterar o banco. Um exemplo bastante claro desta
independncia que um mesmo banco pode servir mltiplas aplicaes.
Um sistema de notas da secretaria de uma Universidade, por exemplo, pode ter o mesmo
banco para acesso via web e para alteraes na prpria secretaria da Universidade. A
independncia dos dados seria alterarmos o programa web, sem alterarmos o banco.
Pg. 9 / 59
BANCO
DE
DADOS
localizao: um SGBD pode ser localizado ou distribudo; se ele for localizado, ento
todos os dados estaro em uma mquina (ou em um nico disco) ou distribudo, onde
os dados estaro distribudos por diversas mquinas (ou diversos discos);
ambiente: ambiente homogneo o ambiente composto por um nico SGBD e um
ambiente heterogneo o ambiente compostos por diferentes SGBDs. Podemos ter
em um nico sistema, um banco Oracle se comunicando com outro banco MySQL,
por exemplo.
Pg. 10 / 59
BANCO
DE
DADOS
Usurios
usurios
simples
programadores de
aplicaes
usurios
ocasionais
programas de
aplicao
chamadas de
rotina
consultas
pr-compilador da
linguagem de
manipulao de
dados
cdigo objeto
dos programas
de aplicao
processador de
consultas
gerenciador do
banco de
dados
DBA
esquema de
banco de dados
compilador da
linguagem de
definio de dados
SGBD
gerenciador de
arquivos
arquivo de
dados
dicionrio de
dados
Memria de
Disco
Pg. 11 / 59
BANCO
DE
DADOS
Mini-Mundo
Anlise e Coleta de
Requisitos
Requisitos do Banco de
Dados
Projeto Conceitual
Esquema Conceitual
(Alto Nvel)
Mapeamento do
Modelo de Dados
Esquema Conceitual
(Modelo do SGBD)
Projeto Fsico
Catlogo do BD
Pg. 12 / 59
BANCO
DE
DADOS
O modelo de dados conceitual de alto nvel composto de vrias etapas como vimos na
figura anterior. Dentre elas, uma de vital importncia para elaborarmos um projeto e,
conseqentemente, um banco de dados eficaz a extrao de requisitos.
nesta etapa que conseguiremos descrever os requisitos, ou seja, as necessidades que o
cliente ou usurio necessita daquilo que se deseja armazenar no banco. Se o levantamento de
requisitos for falho, todo o modelo lgico, fsico e a implementao do banco poder ser
comprometida.
Dentre as etapas importantes na construo do banco temos o modelo lgico que composto de
algumas estruturas, dentre elas:
Entidades e Atributos
O objeto bsico tratado pelo modelo ER a entidade, que pode ser definida como um
objeto do mundo real, concreto ou abstrato e que possui existncia independente.
IMPORTANTE
Uma tabela que se cadastre clientes uma entidade. Um cadastro de produtos
outra entidade, uma entidade de alunos outra entidade. Tambm podemos chamar
entidade de tabela.
Cada entidade possui um conjunto particular de propriedades que a descreve chamado
atributos ou campos. Por exemplo, cdigo um campo, nome outro campo, endereo
tambm outro campo.
Os atributos que podem assumir apenas um determinado valor em uma determinada
instncia denominado atributo simplesmente valorado, enquanto que um atributo que pode
assumir diversos valores em uma mesma instncia denominado multi valorado.
Antigamente, em alguns bancos de dados, h a possibilidade de se obter uma propriedade
especfica. a profundidade. Por exemplo: Poderamos ter, em um mesmo campo, trs valores
diferentes. Exemplo: Tel[1] Tel[2] Tel[3]...
Atualmente, para esta implementao multi-valorada utilizamos uma entidade parte.
Por exemplo: Se um cliente possui diversos telefones, porm, alguns podem ter somente um.
Para no termos campos vazios, utilizamos uma tabela de clientes e outra de telefones
relacionada clientes para digitarmos os telefones. Na tabela telefones, utilizaramos o campo
CodCliente, TipoTel e NroTel. Com isso, implementaramos, de forma racional, o
conceito de multi-valorao.
Pg. 13 / 59
BANCO
DE
DADOS
Relacionamentos
Alm de conhecer detalhadamente os tipos entidade, muito importante conhecer
tambm os relacionamentos entre as entidades.
Um relacionamento, como o prprio nome diz, a relao que ocorre entre registros
de duas ou mais entidades(tabelas). Para que o relacionamento ocorra, deve haver
interesses envolvidos, ou seja, uma entidade deve se interessar pelas informaes da outra,
seus campos ou atributos devem ter o mesmo tipo e tamanho e devem ser afins, porm, no
necessariamente o mesmo nome.
A figura seguir mostra um exemplo entre dois tipos entidade (empregado e
departamento) e o relacionamento entre eles (trabalha para). Repare que para cada
relacionamento, participam apenas uma entidade de cada tipo entidade, porm, uma entidade
pode participar de mais do que um relacionamento.
Os relacionamentos existem para que as entidades possam compartilhar as informaes,
evitando-se que haja repetio de informaes sem necessidade. O nome de um cliente por
exemplo, s deve ocorrer uma nica vez. Se outras entidades necessitam das informaes dos
clientes devem se relacionar com a tabela Clientes. Os relacionamentos ocorrem normalmente
em atributos numricos de pequena largura, ou seja, devem ser campos pequenos. Campos dos
tipos texto no devem se relacionar, excetos em raros casos onde isso for necessrio.
Prof. Paulo Roberto R. Souza
Pg. 14 / 59
BANCO
DE
DADOS
Trabalha Para
Empregado
Departamento
e1
e2
e3
e4
e5
e6
e7
d1
d2
d3
Exemplo de um Relacionamento
Grau de um Relacionamento
O grau de um tipo relacionamento o nmero de tipos entidade que participam do tipo
relacionamento. No exemplo da figura acima, temos um relacionamento binrio. O grau de um
relacionamento ilimitado, porm, a partir do grau 3 (ternrio), a compreenso e a dificuldade
de se desenvolver a relao corretamente se tornam extremamente complexas.
Pg. 15 / 59
BANCO
MDICOs
DE
DADOS
Consultas
PACIENTES
EMPREGADO
e1
e2
e3
Supervisiona
e4
e5
Supervisiona
Supervisionado
Um Relacionamento Recursivo
No exemplo, temos um relacionamento entre o tipo entidade EMPREGADO, onde um
empregado pode supervisionar outro empregado e um empregado pode ser supervisionado por
outro empregado.
Pg. 16 / 59
BANCO
Empregado
DE
DADOS
Gerencia
e1
e2
e3
e4
e5
e6
e7
departamento
d1
d2
d3
Trabalha Em
Empregado
Projeto
8e1
e2
e3
e4
p1
p2
p3
Relacionamento N:M
No exemplo acima, ns temos que um empregado pode trabalhar em vrios projetos
enquanto que um projeto pode ter vrios empregados trabalhando. o mesmo caso que citamos
acima de Mdicos e Pacientes.
Pg. 17 / 59
BANCO
DE
DADOS
Possui Dependentes
Empregado
Dependente
e1
e2
p1
p2
p3
Pg. 18 / 59
BANCO
DE
DADOS
Pg. 19 / 59
BANCO
DE
DADOS
data 1
data 2
C1
M1
M2
C2
M3
C3
M4
data 3
data 4
data 5
L1
L2
L3
Relacionamento Ternrio
Pg. 20 / 59
BANCO
DE
DADOS
TIPO
ENTIDADE
ATRIBUTO
ATRIBUTO
CHAVE
TIPO ENTIDADE
FRACA
ATRIBUTO
MULTI
VALORADO
TIPO
RELACIONAMENTO
ATRIBUTO
COMPOSTO
TIPO
RELACIONAMENTO
IDENTIFICADOR
E1
E2
ATRIBUTO
DERIVADO
E1
E2
Participao Parcial de E1 em R,
Participao Total de E2 em R
(min, max)
E1
Pg. 21 / 59
BANCO
DE
DADOS
Pg. 22 / 59
BANCO
DE
DADOS
dt. nasc.
no. funcional
sexo
Empregado
rg
endereo
Funo
d
qualificao
No registro
especializao
Engenheiro
Secretria
idiomas
- Especializao
Especializao o processo de definio de um conjunto de classes de um tipo entidade;
este tipo entidade chamado de superclasse da especializao. O conjunto de subclasses
formado baseado em alguma caracterstica que distinga as entidades entre si.
No exemplo da figura 12, temos uma especializao, a qual podemos chamar de funo.
Veja agora no exemplo da figura 13, temos a entidade empregado e duas especializaes.
Empregado
Funo
Categoria Salarial
Engenheiro
Secretria
Horista
Mensalista
Pg. 23 / 59
BANCO
DE
DADOS
N
Projeto
Empregado
liderado
Funo
desenvolvido
por
N
1
lidera
N
Engenheiro
participa
Secretria
- Generalizao
A generalizao pode ser pensada como um processo de abstrao reverso ao da
especializao, no qual so suprimidas as diferenas entre diversos tipos entidades,
identificando suas caractersticas comuns e generalizando estas entidades em uma superclasse
no. funcional
no. funcional
No registro
especializao
Engenheiro
nome
qualificao
Secretria
rg
nome
idiomas
rg
Pg. 24 / 59
B A N C Onome D E
DADOS
no. funcional
Empregado
rg
Funo
d
qualificao
no registro
especializao
Engenheiro
Secretria
idiomas
Descri
o
no. da pea
Pea
o
Data
Ordem
Servio
Torneada
No. Projeto
Pg. 25 / 59
Preo
BANCO
DE
DADOS
Empregado
Categoria
Funo
Salarial
Secretaria
Engenheiro
Mensalista
Horista
Gerente
Pg. 26 / 59
BANCO
DE
DADOS
Tabela Resumo
O modelo relacional foi criado por Codd em 1970 e tem por finalidade representar os
dados como uma coleo de relaes, onde cada relao representada por uma tabela, ou
falando de uma forma mais direta, um arquivo. Porm, um arquivo mais restrito que uma
tabela. Toda tabela pode ser considerada um arquivo, porm, nem todo arquivo pode ser
considerado uma tabela.
1o Passo - Entidades Normais
EF
c
3o Passo - Relacionamentos 1:1
E
ou
6o Passo - Atrbs. Multi Valorados
E
E
E
mv
E
E
E
ou
Pg. 27 / 59
BANCO
DE
DADOS
4 - A lgebra Relacional
A lgebra relacional uma coleo de operaes cannicas que so utilizadas para
manipular as relaes. Estas operaes so utilizadas para selecionar tuplas de relaes
individuais e para combinar tuplas relacionadas de relaes diferentes para especificar uma
consulta em um determinado banco de dados. O resultado de cada operao uma nova
operao, a qual tambm pode ser manipulada pela lgebra relacional.
NOTA: Tuplas so conjuntos de registros. Por exemplo: Se em uma tabela de cadastro
de clientes selecionamos somente os clientes que so do estado = a MG. Portanto, este set de
registros ou este conjunto de registros selecionados damos o nome de Tupla.
Todos os exemplos envolvendo lgebra relacional implicam na utilizao do banco de
dados descrito no apndice A.
- A Operao Select
A operao select utilizada para selecionar um subconjunto de tuplas de uma relao,
sendo que estas tuplas devem satisfazer uma condio de seleo. A forma geral de uma
operao select :
<condio de seleo>
( <nome da relao> )
RG
CIC
Depto.
RG Supervisor
Salrio
Ricardo
30303030
33333333
10101010
2.300,00
Renato
50505050
55555555
20202020
1.300,00
consulta2 =
Nome Dependente
Dt. Nascimento
Relao
Sexo
30303030
Adreia
01/05/90
Filho
Feminino
Pg. 28 / 59
BANCO
DE
DADOS
- A Operao Project
A operao project seleciona um conjunto determinado de colunas de uma relao. A
forma geral de uma operao project :
<lista de atributos>
(<nome da relao>)
Nome,
Dt. Nascimento
(DEPENDENTES)
Dt. Nascimento
Jorge
27/12/86
Luiz
18/11/79
Fernanda
14/02/69
Angelo
10/02/95
Adreia
01/05/90
- Seqencialidade de Operaes
As operaes project e select podem ser utilizadas de forma combinada, permitindo que
apenas determinadas colunas de determinadas tuplas possam ser selecionadas.
A forma geral de uma operao sequencializada :
Pg. 29 / 59
BANCO
DE
DADOS
Tabela consulta4
Nome
Depto.
Salrio
Ricardo
2.300,00
Renato
1.300,00
Tabela consulta5
Nome
RG
CIC
Depto.
RG Supervisor
Salrio
Ricardo
30303030
33333333
10101010
2.300,00
Renato
50505050
55555555
20202020
1.300,00
consulta6 =
Depto.
Salrio
Ricardo
2.300,00
Renato
1.300,00
- Operaes Matemticas
Levando em considerao que as relaes podem ser tratadas como conjuntos, podemos
ento aplicar um conjunto de operaes matemticas sobre as mesmas. Estas operaes so:
unio ( ) , interseco ( ) e diferena (). Este conjunto de operaes no unrio, ou seja,
podem ser aplicadas sobre mais de uma tabela, porm, existe a necessidade das tabelas
possuirem tuplas exatamente do mesmo tipo.
Estas operaes podem ser definidas da seguinte forma:
unio - o resultado desta operao representada por R S uma relao T que inclui
todas as tuplas que se encontram em R e todas as tuplas que se encontram em S;
interseco - o resultado desta operao representada por R S uma relao T que
inclui as tuplas que se encontram em R e em S ao mesmo tempo;
diferena - o resultado desta operao representada por R S uma relao T que
inclui todas as tuplas que esto em R mas no esto em S.
Leve em considerao a seguinte consulta:
Selecione todos os empregados que trabalham no departamento nmero 2 ou que
supervisionam empregados que trabalham no departamento nmero 2.
Pg. 30 / 59
BANCO
DE
DADOS
depto = 2 (EMPREGADOS)
consulta7 =
Tabela consulta7
Nome
RG
CIC
Depto.
RG Supervisor
Salrio
Fernando
20202020
22222222
10101010
2.500,00
Ricardo
30303030
33333333
10101010
2.300,00
Jorge
40404040
44444444
20202020
4.200,00
rg_supervisor (CONSULTA7)
consulta8 =
Tabela consulta8
RG Supervisor
10101010
20202020
consulta9 =
rg(CONSULTA7)
Tabela consulta9
RG
20202020
30303030
40404040
consulta10
= CONSULTA8
CONSULTA9
Tabela consulta10
RG
20202020
30303030
40404040
10101010
Pg. 31 / 59
BANCO
DE
DADOS
consulta11 =
rg_empregado(EMPREGADO/PROJETO)
Tabela consulta11
RG_Empregado
20202020
30303030
40404040
50505050
consulta12 =
rg (depto = 2 (EMPREGADOS))
Tabela consulta12
RG
20202020
30303030
40404040
consulta13
= CONSULTA11
CONSULTA12
Tabela consulta13
RG
20202020
30303030
40404040
consulta14 =
rg_empregado (EMPREGADO/PROJETO)
Tabela consulta14
RG Empregado
Pg. 32 / 59
BANCO
DE
DADOS
20202020
30303030
40404040
50505050
consulta15 =
rg (EMPREGADOS)
Tabela consulta15
RG
10101010
20202020
30303030
40404040
50505050
- Produto Cartesiano
O produto cartesiano uma operao binria que combina todas as tuplas de duas
tabelas. Diferente da operao unio, o produto cartesiano no exige que as tuplas das tabelas
possuam exatamente o mesmo tipo. O produto cartesiano permite ento a consulta entre
tabelas relacionadas utilizando uma condio de seleo apropriada. O resultado de um
produto cartesiano uma nova tabela formada pela combinao das tuplas das tabelas sobre as
quais aplicou-se a operao.
O formato geral do produto cartesiano entre duas tabelas R e S :
R S
Leve em considerao a seguinte consulta:
encontre todos os funcionrios que desenvolvem projetos em Campinas;
consulta16 = EMPREGADO/PROJETO PROJETO
Tabela consulta16
RG Empregado
Nmero Projeto
Nome
Nmero
Localizao
Pg. 33 / 59
BANCO
DE
DADOS
20202020
Financeiro 1
So Paulo
20202020
Motor 3
10
Rio Claro
20202020
Prdio Central
20
Campinas
20202020
10
Financeiro 1
So Paulo
20202020
10
Motor 3
10
Rio Claro
20202020
10
Prdio Central
20
Campinas
30303030
Financeiro 1
So Paulo
30303030
Motor 3
10
Rio Claro
30303030
Prdio Central
20
Campinas
40404040
20
Financeiro 1
So Paulo
40404040
20
Motor 3
10
Rio Claro
40404040
20
Prdio Central
20
Campinas
50505050
20
Financeiro 1
So Paulo
50505050
20
Motor 3
10
Rio Claro
50505050
20
Prdio Central
20
Campinas
Vamos agora selecionar as tuplas resultantes que esto devidamente relacionadas que so
as que possuem o mesmo valor em nmero do projeto e nmero e cuja localizao seja
Campinas.
consulta17 =
rg_empregado, nmero
(CONSULTA16)
Tabela consulta17
RG
Nmero
40404040
20
50505050
20
- Operao Juno
A operao juno atua de forma similar operao produto cartesiano, porm, a
tabela resultante conter apenas as combinaes das tuplas que se relacionam de acordo com
uma determinada condio de juno. A forma geral da operao juno entre duas tabelas R e
S a seguinte:
<condio de juno>
Pg. 34 / 59
BANCO
DE
DADOS
Tabela consulta18
RG_Empregado
Nmero_Projeto
Nome
Nmero
Localizao
20202020
Financeiro 1
So Paulo
20202020
10
Motor 3
10
Rio Claro
30303030
Financeiro 1
So Paulo
40404040
20
Prdio Central
20
Campinas
50505050
20
Prdio Central
20
Campinas
consulta19 =
Tabela consulta18
RG_Empregado
Nmero_Projeto
Nome
Nmero
Localizao
40404040
20
Prdio Central
20
Campinas
20
Prdio Central
20
Campinas
50505050
Pg. 35 / 59
BANCO
DE
DADOS
A restrio not null indica que o atributo deve ser obrigatoriamente preenchido; se no
for especificado, ento o default que o atributo possa assumir o valor nulo.
A forma geral do comando create table ento :
create table <nome_tabela> ( <nome_coluna1> <tipo_coluna1>
NULL>,
<nome_coluna2> <tipo_coluna2>
NULL>,
:
<nome_colunan> <tipo_colunan>
);
<NOT
<NOT
<NOT NULL>
( nome
rg
cic
depto
rg_supervisor
salario,
char (30)
integer
integer,
integer
integer,
decimal (7,2)
NOT NULL,
NOT NULL,
NOT NULL,
NOT NULL );
Pg. 36 / 59
BANCO
DE
DADOS
<lista de atributos>
<lista de tabelas>
<condies>;
RG
Fernando
20202020
Ricardo
30303030
Jorge
40404040
RG
Salrio
Jorge
40404040
4.200,00
Pg. 37 / 59
BANCO
DE
DADOS
RG
Joo Luiz
10101010
Fernando
20202020
nome, rg (
EMPREGADOS
tg_t1 = rg_supervisor_t2
EMPREGADOS);
RG
CIC
Depto.
RG Supervisor
Salrio
Joo Luiz
10101010
11111111
NULO
3.000,00
Fernando
20202020
22222222
10101010
2.500,00
Ricardo
30303030
33333333
10101010
2.300,00
Jorge
40404040
44444444
20202020
4.200,00
Renato
50505050
55555555
20202020
1.300,00
Depto.
Pg. 38 / 59
BANCO
DE
DADOS
2
3
Podemos gerar consultas aninhadas em SQL utilizando o espeficicador in, que faz uma
comparao do especificador where da consulta mais externa com o resultado da consulta mais
interna. Considere a consulta a seguir:
Selecione o nome de todos os funcionrios que trabalham em projetos localizados em
Rio Claro;
select e1.nome, e1.rg, e1.depto
from empregado e1, empregado_projeto e2
where e1.rg = e2.rg_empregado
and e2.numero_projeto in ( select numero
from projeto
where localizacao = Rio Claro);
Para selecionar um conjunto de tuplas de forma ordenada devemos utilizar o comando
order by. Leve em considerao a seguinte consulta:
selecione todos os empregados por ordem alfabtica:
select nome, rg, depto
from empregado
order by nome;
Pg. 39 / 59
BANCO
DE
DADOS
Como na primeira insero todos os campos foram inseridos, ento no foi necessrio
especificar o nome das colunas. Porm, na segunda insero, o campo rg_supervisor no foi
inserido, ento especificou-se as colunas. Outra forma de se elaborar esta insero seria:
insert into empregados values
, 2500,00);
Neste caso, utilizou-se os caracteres para se declarar que um valor nulo seria inserido
nesta coluna.
Para se efetuar uma alterao em uma tabela, utilizado o comando update. A forma
geral do comando update :
update
set
where
<tabela>
<coluna> = <expresso>
<condio>
empregado
salario = 3.000,00
depto = 2;
Para se eliminar uma tupla de uma tabela, utiliza-se o comando delete. A forma geral do
comando update :
delete from <tabela>
where
<condio>;
Leve em considerao a seguinte expresso:
elimine os registros nos quais o empregado trabalhe no departamento 2 e possua salrio
maior que R$ 3.500,00;
delete from empregado
where
salario > 3.500,00 and depto = 2;
Nos casos de atualizao que foram vistos, todas as <condies> podem ser uma
consulta utilizando o comando select, onde o comando ser aplicado sobre todos os registros
que satisfizerem as condies determinadas pelo comando de seleo.
Pg. 40 / 59
BANCO
DE
DADOS
6 - Normalizao
A normalizao uma metodologia para projeto de BDs relacionais, uma vez que
sugere uma organizao de dados em tabelas. Assim sendo, a normalizao uma ferramenta
para projeto lgico de BDs relacionais.
O objetivo desta tcnica evitar problemas de redundncia e anomalias de atualizao,
que podem estar presentes em uma relao. A soluo para resolver estes problemas a
decomposio de uma relao em uma ou mais relaes, com base na aplicao de certas regras
de normalizao (formas normais). Esta proliferao de relaes nem sempre ideal do ponto
de vista de performance, devendo ser balanceado vantagens e desvantagens antes da efetivao
dos resultados de uma forma normal (FN).
Temos ao todo, cinco formas normais, porm, se diz que ao passar pela terceira forma
normal, a maioria dos bancos j estar normalizado. Vejamos quais so:
CdProj Tipo
Des
LSC001 Novo
Desenv.
Sist
de
Est
Proj (codproj, tipo, descr, (codemp, nome, cat, sal, dataini, tempal))
O parntese apresenta aninhamento de tabelas. No caso de tabelas aninhadas, as
colunas sublinhadas indicam a coluna ou grupo de colunas que servem para distinguir
diferentes linhas da tabela aninhada referente a uma linha da tabela de seu nvel externo.
Assim, a coluna CodProj distingue as linhas (cada uma referente a um projeto) da tabela
PROJ. J a coluna CodEmp, serve para distinguir diferentes linhas de empregado dentro do
grupo referente a um projeto.
PAG02
Manuteno Sist
de R
Pg. 41 / 59
BANCO
DE
DADOS
Diz-se que uma tabela est na primeira forma normal, quando ela no contm
tabelas aninhadas.
O prximo passo da normalizao consta da transformao do esquema de
tabela no normalizada em um esquema relacional na primeira forma normal. Uma
tabela encontra-se na primeira forma normal quando ela no contm tabelas aninhadas.
Portanto, a passagem primeira forma normal consta da eliminao das tabelas
aninhadas eventualmente existentes.
Para transformar um esquema de tabela no-normalizada em um esquema da
1FN h duas alternativas:
Construir uma nica tabela com redundncia de dados.
Cria-se uma tabela na qual os dados das linhas externas tabela aninhada so
repetidos para cada linha da tabela aninhada. No caso que estamos analisando
seria o seguinte:
PROJEMP (CodProj, Tipo, Descr, CodEmp, Nome, Cat, Sal, DataIni,
TempAl).
Neste caso, os dados aparecem repetidos para cada linha de empregados.
Construir uma tabela para cada tabela aninhada.
Cria-se uma tabela referente a prpria tabela que est sendo normalizada e uma
tabela para cada tabela aninhada. O resultado seria o seguinte:
Pg. 42 / 59
BANCO
DE
DADOS
2. Para cada tabela aninhada, criada uma tabela na 1FN composta pelas seguintes
colunas:
a. A chave primria de cada uma das tabelas na qual a tabela em questo est
aninhada.
b. As colunas da prpria tabela aninhada.
3. So definidas as chaves primrias das tabelas da 1FN que correspondem as tabelas
aninhadas.
Portanto, neste exemplo, a decomposio gera duas tabelas com o seguinte
esquema:
1FN
Proj(CodProj, Tipo, Descr)
ProjEmp(CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAl).
PROJ
CodProj
Tipo
Novo Desenv.
LSC001
Sistema de Estoque
Manuteno
PAG002
PROJEMP
CodProj
CodEmp
LSC001
2146
LSC001
3145
PAG002
4112
PAG002
6126
Descr
Nome
Joo
Silvio
Joo
Jos
Cat
A1
A2
A2
B1
Sistema de RH
Sal
4
4
4
9
DataIni
1/11/91
2/10/91
4/01/91
1/11/92
TempAl
24
24
24
12
Dependncia Funcional
Dizemos que determinada coluna dependente funcionalmente de outra coluna desde que
a primeira coluna determine a existncia da segunda. Por exemplo, salrio dependente
funcionalmente de cdigo do funcionrio. Isso ocorre j que, sem funcionrio no h salrio.
3) Passagem segunda forma normal (2FN)
A passagem segunda forma normal objetiva eliminar um certo tipo de redundncia de
dados. Uma tabela encontra-se na segunda forma normal quando, alm de encontrar-se na
primeira forma normal, cada coluna no chave depende da chave primria completa. Uma
tabela que no se encontra na segunda forma contm dependncias funcionais parciais, ou
seja, contm colunas no chave que dependem apenas de uma parte da chave primria.
Uma tabela encontra-se na 2FN quando, alm de estar na 1FN, no contm
dependncias parciais.
Pg. 43 / 59
BANCO
DE
DADOS
Dependncia parcial: Uma dependncia funcional parcial ocorre quando uma coluna
depende apenas de parte da chave primria composta.
Portanto, toda tabela que est na 1FN e que possui apenas uma coluna como chave
primria j est na 2FN. O mesmo aplica-se para uma tabela que contenha apenas colunas
chave primria.
No nosso exemplo, a tabela PROJEMP deve ser examinada para procurar
depend6encias parciais, pois possui uma chave primria composta. As colunas Nome, Cat e
Sal dependem, cada uma, apenas da coluna CodEmp, j que, nome, categoria funcional e
salrio so determinados somente pelo cdigo do empregado. Porm, DataIni e TempAl
dependem da chave primria completa.
Para passarmos o esquema PROJ e PROJEMP para a segunda forma normal, vamos
dividir a tabela PROJEMP em duas tabelas:
PROJ: (CodProj, Tipo, Descr)
PROJEMP: (CodProj, CodEmp, DataIni, TempAl)
EMP: (CodEmp, Nome, Cat, Sal)
PROJ
CodProj
Tipo
Novo Desenv.
LSC001
Manuteno
PAG002
PROJEMP
CodProj
LSC001
LSC001
PAG002
PAG002
CodEmp
2146
3145
4112
6126
EMP
CodEmp
2146
3145
4112
6126
Nome
Joo
Silvio
Joo
Jos
DataIni
1/11/91
2/10/91
4/01/91
1/11/92
Cat
A1
A2
A2
B1
Descr
Sistema de Estoque
Sistema de RH
TempAl
24
24
24
12
Sal
4
4
4
9
Portanto, a passagem para a segunda forma normal obedece a alguns passos importantes:
1) Copiar para a 2FN cada tabela que tenha chave primria simples ou que no tenha
colunas alm da chave.
2) Para cada tabela com chave primria composta e com pelo menos uma coluna no
chave:
a. Criar na 2FN uma tabela com as chaves primrias da tabela na 1FN.
b. Para cada coluna no chave fazer a seguinte pergunta:
i. A coluna depende de toda chave ou de apenas parte dela?
Pg. 44 / 59
BANCO
DE
DADOS
3FN
PROJ(CodProj, Tipo, Descr)
PROJEMP: (CodProj, CodEmp, DataIni, TempAl)
EMP: (CodEmp, Nome, Cat)
CAT(Cat, Sal)
PROJ
CodProj
Tipo
Novo Desenv.
LSC001
Manuteno
PAG002
PROJEMP
CodProj
LSC001
LSC001
PAG002
PAG002
CodEmp
2146
3145
4112
6126
DataIni
1/11/91
2/10/91
4/01/91
1/11/92
Descr
Sistema de Estoque
Sistema de RH
TempAl
24
24
24
12
Pg. 45 / 59
BANCO
EMP
CodEmp
2146
3145
4112
6126
CAT
Cat
A1
A2
A2
B1
Nome
Joo
Silvio
Joo
Jos
DE
DADOS
Cat
A1
A2
A2
B1
Sal
4
4
4
9
Pg. 46 / 59
BANCO
DE
DADOS
RG
CIC
Depto.
RG Supervisor
Salrio
Joo Luiz
10101010
11111111
NULO
3.000,00
Fernando
20202020
22222222
10101010
2.500,00
Ricardo
30303030
33333333
10101010
2.300,00
Jorge
40404040
44444444
20202020
4.200,00
Renato
50505050
55555555
20202020
1.300,00
Tabela DEPARTAMENTO
Tabela PROJETO
Nome
Nmero
RG Gerente
Nome
Nmero
Localizao
Contabilidade
10101010
Financeiro 1
So Paulo
Engenharia Civil
30303030
Motor 3
10
Rio Claro
Engenharia Mecnica
20202020
Prdio Central
20
Campinas
Tabela DEPENDENTES
RG Responsvel
Nome
Dependente
Dt. Nascimento
Relao
Sexo
10101010
Jorge
27/12/86
Filho
Masculino
10101010
Luiz
18/11/79
Filho
Masculino
20202020
Fernanda
14/02/69
Conjuge
Feminino
20202020
Angelo
10/02/95
Filho
Masculino
30303030
Adreia
01/05/90
Filho
Feminino
Tabela DEPARTAMENTO_PROJETO
Tabela EMPREGADO_PROJETO
Nmero Depto.
Nmero Projeto
RG Empregado
Nmero Projeto
Horas
20202020
10
10
20202020
10
25
20
30303030
35
40404040
20
50
50505050
20
35
Pg. 47 / 59
BANCO
7
DE
DADOS
Pg. 48 / 59
BANCO
DE
DADOS
Pg. 49 / 59
BANCO
DE
DADOS
Pg. 50 / 59
BANCO
DE
DADOS
plataformas, como Linux, Windows, Solaris, HP-UX, Mac, dentre outros. possvel
adquirir uma verso gratuita no site e considerado bastante estvel (verses
desde 1981 com nomes diferentes). Como o PostgreSQL, o Firebird permite a
criao de triggers (gatilhos) mas os procedimentos e funes so externos ao
banco de dados. Isso d a flexibilidade de utilizar diversas linguagens de
programao, mas por outro lado compromete o desempenho. Sem dvida alguma
um produto que, apesar de estar h anos no mercado, ainda tem um bom
caminho a evoluir. Contudo, como vem de uma base de usurios fiis ao
InterBase, pode ser uma opo atrativa aos conhecedores deste banco de dados.
Concluso
inegvel que o software livre veio para ficar tambm em banco de dados. Os
produtos que existem no mercado esto provando isso. Com a natural maturidade
que um projeto deste consegue com o tempo, aliado a um grupo de pessoas
verdadeiramente obcecadas pela qualidade do produto, fica cada vez mais claro
que as empresas que vivem de venda de banco de dados tm que comear a se
preocupar.
Muitas empresas que possuem softwares proprietrios alegam que os bancos de
dados livres esto h anos-luz de distncia dos seus produtos. A realidade no
parece ser bem esta. Dependendo da necessidade pode-se utilizar um banco de
dados livre sem perda de qualidade para a empresa. Se a soluo for
departamental, a opo do software livre ainda mais vivel. Muitas empresas
esto optando por instalar verses destes bancos de dados em solues perifricas
aos sistemas principais para poder test-los e, em caso de sucesso, migrar
completamente para a nova base. Basta fazer uma visita ao site dos produtos
citados acima e verificar a quantidade e o porte das empresas que esto
realizando projetos-piloto com os produtos.
Este caminho conhecido do mercado. Assim foi e est sendo com Linux. Houve
um crescimento significativo de servidores Linux no mercado a ponto de a
Microsoft assumir que ele um grande competidor atualmente. difcil vermos
uma empresa de qualquer porte que no tenha um nico servidor Linux instalado.
Com os bancos de dados no custa repetir o caminho. Afinal, o custo de um banco
de dados significativo para qualquer empresa e a qualidade do software livre no
deixa a desejar. Se o banco de dados relacional virar uma commodity ainda no
possvel precisar. Hoje em dia, como poucas empresas possuem produtos de peso
para competir, os preos ainda so muito semelhantes. Quem necessita de bancos
de dados para toda a organizao dificilmente utilizar um dos bancos de dados
livres. Contudo, empresas menores podero faz-lo sem grandes problemas. A
ser o momento em que as grandes empresas iro notar que o midlle e o low
market existem e esto espera de produtos com qualidade e preos
competitivos.
Celso Henrique Poderoso de Oliveira
henrique@nq.com.br
Pg. 51 / 59
BANCO
DE
DADOS
Interfaces
(ADO,RDO,DBI)
Driver
Banco
(MySQL
Na criao de pginas web (html), quando desejamos que o contedo da
pgina seja alterado, temos que alterar seu cdigo. Utilizando uma linguagem para
web (Asp, PHP, etc), a pgina alterada automaticamente, no momento em que
mudamos os dados constantes nas tabelas no banco.
Como vimos no desenho acima, isso realizado atravs de uma interface e
de um driver que se conectam ao banco possibilitando que as informaes que
montam a pgina sejam dinmicas, ou seja, se modifiquem automaticamente.
Na verdade, isso funciona da seguinte forma: O aplicativo diz para a interface
conectar-se ao banco de dados. O aplicativo fornece algumas informaes, como o
endereo e o nome do banco com que o aplicativo quer falar. A interface pega essas
informaes e faz uma chamada para o driver. O driver recebe essas informaes e
faz a conexo. Ele sabe com que porta falar e como conversar com o banco. A porta
muito semelhante ao nmero de telefone da pessoa com que voc est tentando
chamar. uma linha de comunicao. Agora, os dados podem fluir livremente entre
aplicativo (telas) e o banco de dados.
Resumidamente, necessitamos de alguns recursos para que isso funcione. Para
conectarmos o ASP com MySQL necessitamos dos seguintes recursos:
1) Servidor web (PWS-Personal Web Server ou IIS Internet Information
Server) Deve ser instalado. O pws consta no cd do Windows 98.
2) MySql www.mysql.com
3) Interface (ADO). nativo.
4) Driver (ODBC). Deve ser instalado.
Prof. Paulo Roberto R. Souza
Pg. 52 / 59
BANCO
DE
DADOS
Pg. 53 / 59
BANCO
DE
DADOS
Funo
Use nomebanco
Show Databases;
Show tables;
Desc nometabela;
change
nome;
Pg. 54 / 59
BANCO
Ex2: Select codigo, nome
clientes where estado=MG;
Ex3:
Select
codigo,
Max(salrio) from funcionrios;
DE
DADOS
from
nome,
tabela
Ex:
update
tabprecos
set
Reajusta em 20% os preos dos produtos cujo tipo for
precovenda=(precovenda*1,2)
where igual a 2
tipoproduto=2;
Delete
condio;
from
nometabela
where
Pg. 55 / 59
BANCO
DE
DADOS
4. Tecnologias Emergentes
Bancos de Dados
que
utilizam
Business Inteligence
O que Business Intelligence (BI)?
Conjunto de ferramentas e aplicaes que visam potenciar a utilizao de
informao de gesto por todos os elementos da organizao de forma a melhorar os
processos internos e os seus resultados.
Pg. 56 / 59
BANCO
DE
DADOS
Ferramentas de BI
Planilhas eletrnicas;
Data Mining
CRM - Customer Relationship Management
ERP
Enterprise Resource Planning designa pacotes integrados de gesto, sistemas de
informao com mdulos integrados que do suporte a diversas reas operacionais, tais como
vendas, produo, gesto de materiais, contabilidade e pessoal.
Os sistemas ERP tm como objetivo aprimorar a gesto das empresas, aumentando a
produtividade dos processos operacionais, ajudando a controlar custos e reduzir despesas, e
criando uma base confivel de informaes gerenciais, permitindo um planejamento estratgico
mais seguro.
A implantao de um sistema ERP possui diversas fases, que se iniciam com a
escolha do produto mais adequado s necessidades e caractersticas de sua empresa, passam
pela instalao do sistema e continuam com as atividades ps-implantao. Modificaes,
atualizaes, novas funcionalidades, treinamento, suporte aos usurios, so algumas das
atividades necessrias aps a implantao do ERP. Para todas estas atividades voc precisa
contar com uma empresa com conhecimento e experincia.
Pg. 57 / 59
BANCO
DE
DADOS
Data Warehouse
Data Warehouse (DW), que consiste em organizar os dados corporativos da melhor
maneira, para dar subsdio de informaes aos gerentes e diretores das empresas para
tomada de deciso. Tudo isso num banco de dados paralelo aos sistemas operacionais da
empresa.
Data Center
Os Data centers so instalaes compostas de centenas de servidores que oferecem servios
de gerenciamento do ambiente, alta disponibilidade 24x7(24 horas sete dias por semana 365
dias por ano), planejamento de capacidade, avaliao de performance de sistema operacional
e aplicativos, monitoramento, backup, balanceamento de carga - entre outros -, para a
hospedagem de dados/aplicaes, e-commerce, sites, etc.
Pg. 58 / 59
BANCO
DE
DADOS
5. Bibliografia
Pg. 59 / 59