Escolar Documentos
Profissional Documentos
Cultura Documentos
Banco Dados
Banco Dados
F.C.T.
Banco de Dados
Autor:
Unimar
Pgina 1
F.C.T.
Pgina 2
F.C.T.
Apresentao
Este curso tem como objetivo, oferecer uma noo geral sobre a construo de sistemas
de banco de dados. Para isto, necessrio estudar modelos para a construo de projetos
lgicos de bancos de dados, modelos para a construo de projetos fsicos de banco de dados,
tcnicas de controle de dependncia de dados e mtodos de consultas.
Para construo dos modelos lgicos, ser estudado o modelo Entidade Relacionamento,
utilizando a abordagem proposta em [ELMAS89] que oferece uma notao rica em recursos,
permitindo a modelagem de entidades normais, fracas, atributos simples, compostos,
multivalorados, derivados e a modelagens de objetos mais complexos como classes e subclasses
(modelo Entidade Relacionamento Extendido).
Para construo dos modelos fsicos, ser estudado o modelo Relacional como
originalmente proposto por Codd.
Para eliminar dependncia de dados, utilizaremos a normalizao, abordando a 1a, a 2a, a
3 Formas Normais, propostas originalmente por Codd.
a
Para a elaborao de consultas, ser estudado a lgebra Relacional, que nada mais do
que uma forma cannica para as linguagens de consulta e a linguagem de consultas SQL.
Pgina 3
F.C.T.
Pgina 4
F.C.T.
Programas de Aplicao/Consulta
Sistema de Banco
de Dados
SGBD
Meta Dados
Dados
1.2. Usurios
Para um grande banco de dados, existe um grande nmero de pessoas envolvidas, desde o
projeto, uso at manuteno.
Pgina 5
F.C.T.
Pgina 6
F.C.T.
Pgina 7
F.C.T.
Pgina 8
F.C.T.
Pgina 9
F.C.T.
nvel externo: ou esquema de viso, o qual descreve as vises do banco de dados para
um grupo de usurios; cada viso descreve quais pores do banco de dados um grupo
de usurios ter acesso.
Usurios Finais
NVEL
EXTERNO
...
Viso Externa 1
Viso Externa n
Mapeamento
Conceitual Externo
NVEL
CONCEITUAL
Esquema Conceitual
Mapeamento
Conceitual Interno
NVEL
INTERNO
Esquema Interno
Pgina 10
F.C.T.
Pgina 11
F.C.T.
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
Pgina 12
F.C.T.
Pgina 13
F.C.T.
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
Pgina 14
F.C.T.
Pgina 15
F.C.T.
Trabalha Para
EMPREGADO
e1
e2
e3
e4
e5
e6
e7
DEPARTAMENTO
d1
d2
d3
Pgina 16
F.C.T.
vezes, o papel torna-se essencial para distinguir o significado de cada participao. Isto muito
comum em elacionamentos recursivos.
Um relacionamento recursivo um relacionamento entre entidades do mesmo tipo
entidade. Veja o exemplo da figura 6.
EMPREGADO
e1
e2
e3
Supervisiona
e4
e5
Supervisiona
Supervisionado
Gerencia
EMPREGADO
e1
e2
e3
e4
e5
GEEK BRASIL http://www.geekbrasil.com.br
e6
e7
DEPARTAMENTO
d1
d2
d3 Pgina 17
F.C.T.
Trabalha Em
EMPREGADO
e1
e2
e3
e4
PROJETO
p1
p2
p3
Pgina 18
F.C.T.
Possui Dependentes
EMPREGADO
DEPENDENTE
e1
e2
p1
p2
p3
Pgina 19
F.C.T.
Todos os exemplos vistos acima foram para relacionamentos binrios, ou seja, entre dois
tipos entidades diferentes ou recursivos. Porm, o modelo entidade relacionamento no se
restringe apenas relacionamentos binrios. O nmero de entidades que participam de um tipo
relacionamento irrestrito e armazenam muito mais informaes do que diversos
relacionamentos binrios. Considere o seguinte exemplo:
Um motorista pode efetuar uma viagem para uma localidade dirigindo um determinado
caminho em uma determinada data.
Se efetuarmos trs relacionamentos binrios, no teremos estas informaes de forma
completa como se criassemos um relacionamento ternrio. Veja o resultado como fica no
exemplo da figura 10.
data 1
data 2
C1
M1
M2
C2
M3
C3
M4
data 3
data 4
data 5
L1
L2
L3
Pgina 20
F.C.T.
Pgina 21
F.C.T.
TIPO
ENTIDADE
ATRIBUTO
ATRIBUTO
CHAVE
TIPO ENTIDADE
FRACA
ATRIBUTO
MULTI
VALORADO
TIPO
RELACIONAMENTO
ATRIBUTO
COMPOSTO
TIPO
RELACIONAMENTO
IDENTIFICADOR
E1
ATRIBUTO
DERIVADO
E2
E1
E2
Participao Parcial de E1 em R,
Participao Total de E2 em R
(min, max)
E1
Pgina 22
F.C.T.
dt. nasc.
no. funcional
sexo
rg
Empregado
endereo
Funo
d
qualificao
No registro
Engenheiro
GEEK especializao
BRASIL http://www.geekbrasil.com.br
Secretria
idiomas
Pgina
23
F.C.T.
3.8.3. 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 distingua 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
N
Projeto
Empregado
liderado
desenvolvido
por
Funo
N
1
lidera
N
Engenheiro
GEEK BRASIL http://www.geekbrasil.com.br
participa
Secretria
Pgina
24
F.C.T.
3.8.4. 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
qualificao
No registro
especializao
Engenheiro
nome
Secretria
rg
nome
idiomas
rg
nome
no. funcional
rg
Empregado
Funo
d
qualificao
no registro
Engenheiro
especializao
GEEK BRASIL
http://www.geekbrasil.com.br
Secretria
idiomas
Pgina 25
F.C.T.
Descrio
no. da pea
Pea
o
No. Projeto
Data
Ordem Servio
Manufaturada
Torneada
Preo
Pgina 26
F.C.T.
Uma subclasse pode ser definida atravs de um lattice, ou mltipla herana, ou seja,
ela pode ter diversas superclasses, herdando caractersticas de todas. Leve em considerao o
seguinte exemplo:
Uma construtora possui diversos funcionrios, os quais podem ser engenheiros ou
secretrias. Um funcionrio pode tambm ser assalariado ou horista. Todo gerente de
departamento da construtora deve ser um engenheiro e assalariado.
O modelo lgico da expresso acima tem o seguinte formato:
Empregado
Funo
Categoria Salarial
Secretaria
Engenheiro
Mensalista
Horista
Gerente
Pgina 27
F.C.T.
4. O Modelo Relacional
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.
Quando uma relao pensada como uma tabela de valores, cada linha nesta tabela
representa uma coleo de dados relacionados. Estes valores podem ser interpretados como
fatos descrevendo uma instncia de uma entidade ou de um relacionamento. O nome da tabela e
das colunas desta tabela so utilizados para facilitar a interpretao dos valores armazenados
em cada linha da tabela. Todos os valores em uma coluna so necessariamente do mesmo tipo.
Na terminologia do modelo relacional, cada tabela chamada de relao; uma linha de
uma tabela chamada de tupla; o nome de cada coluna chamado de atributo; o tipo de dado
que descreve cada coluna chamado de domnio.
Tamanho
Faixa
RG
Numrico
10,0
03000000-25999999
Nome
Caracter
30
a-z, A-Z
Salrio
Numrico
5,2
00100,00-12999,99
Um esquema de relao R, denotado por R(A1, A2, ... , An), onde cada atributo Ai o
nome do papel desempenhado por um domnio D no esquema relao R, onde D chamado
domnio de Ai e denotado por dom(Ai). O grau de uma relao R o nmero de atributos
presentes em seu esquema de relao.
A instncia r de um esquema relao denotado por r(R) um conjunto de n-tuplas
r = [t1, t2, ... , tn] onde os valores de [t1, t2, ... , tn] devem estar contidos no domnio D. O valor
nulo tambm pode fazer parte do domnio de um atributo e representa um valor no conhecido
para uma determinada tupla.
Pgina 28
F.C.T.
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
Fernanda
01/05/90
Filho
Feminino
Quando uma relao possui mais que uma chave (no confundir com chave composta) como por exemplo RG e CIC para empregados - cada uma destas chaves so chamadas de
chaves candidatas. Uma destas chaves candidatas deve ser escolhida como chave primria.
Uma chave estrangeira CE de uma tabela R1 em R2 ou vice-versa, especifica um
relacionamento entre as tabelas R1 e R2.
Tabela DEPARTAMENTO
Nome
Nmero
RG Gerente
Contabilidade
10101010
Engenharia Civil
30303030
Engenharia Mecnica
20202020
Tabela EMPREGADO
Nome
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
Pgina 29
F.C.T.
Jorge
40404040
44444444
20202020
4.200,00
Renato
50505050
55555555
20202020
1.300,00
Pgina 30
F.C.T.
8.2. Crie uma tabela Ti para cada subclasse Si, 1 i m, com os atributos
A(Ti) = A(Si) {c, a1, a2, ..., an} e C(Ti) = c;
8.3. Crie uma tabela T com os atributos A(T) = {c, a1, a2, ..., an} A(S1) ...
A(Sm) {t} e C(T) = c, onde t um atributo tipo que indica a subclasse qual cada
tupla pertence, caso isto venha a ocorrer;
8.4. Crie uma tabela T com atributos A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm)
{t1, t2, ..., tm} e C(T) = c; esta opo para generalizaes com overlapping, e
cada ti, 1 i m, um atributo booleano indicando se a tupla pertence ou no
subclasse Si; embora funcional, esta opo pode gerar uma quantidade muito grande
de valores nulos;
1o Passo - Entidades Normais
EF
c
3o Passo - Relacionamentos 1:1
E
ou
6o Passo - Atrbs. Multi Valorados
E
E
E
mv
E
E
ou
Pgina 31
F.C.T.
4.4.2. Normalizao
O processo de normalizao pode ser visto como o processo no qual so eliminados
esquemas de relaes (tabelas) no satisfatrios, decompondo-os, atravs da separao de seus
atributos em esquemas de relaes menos complexas mas que satisfaam as propriedades
desejadas.
O processo de normalizao como foi proposto inicialmente por Codd conduz um
esquema de relao atravs de um bateria de testes para certificar se o mesmo est na 1a, 2a e 3a
Formas Normais. Estas trs Formas Normais so baseadas em dependncias funcionais dos
atributos do esquema de relao.
4.4.2.1. 1a Forma Normal
A 1a Forma Normal prega que todos os atributos de uma tabela devem ser atmicos
(indivisveis), ou seja, no so permitidos atributos multivalorados, atributos compostos ou
atributos multivalorados compostos. Leve em considerao o esquema a seguir:
CLIENTE
1. Cdigo
2. { Telefone }
3. Endereo: ( Rua, Nmero, Cidade )
gerando a tabela resultante:
Cliente
Cdigo
Telefone 1
Telefone n
Endereo
Rua
No
Cidade
sendo que a mesma no est na 1a Forma Normal pois seus atributos no so atmicos. Para que
a tabela acima fique na 1a Forma Normal temos que eliminar os atributos no atmicos, gerando
as seguintes tabelas como resultado:
Cliente
Cdigo
Rua
Nmero
Cidade
Pgina 32
F.C.T.
Cliente_Telefone
Cdigo_Cliente
Telefone_Client
e
RG
Nome
No_Departamento
Nome_Depto
RG_Ger_Depto
RG
CIC
Nome
No_Funcional
Pgina 33
F.C.T.
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
Pgina 34
30303030
F.C.T.
Adreia
01/05/90
Filho
Feminino
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
Pgina 35
F.C.T.
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
Pgina 36
F.C.T.
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.
Vamos primeiro selecionar todos os funcionrios que trabalham no departamento
nmero 2.
consulta7 =
depto = 2 (EMPREGADOS)
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
consulta8 =
rg_supervisor (CONSULTA7)
Tabela consulta8
RG Supervisor
10101010
20202020
consulta9 =
rg(CONSULTA7)
Tabela consulta9
Pgina 37
F.C.T.
RG
20202020
30303030
40404040
consulta10
= CONSULTA8 CONSULTA9
Tabela consulta10
RG
20202020
30303030
40404040
10101010
consulta11 =
rg_empregado(EMPREGADO/PROJETO)
Tabela consulta11
RG_Empregado
20202020
30303030
40404040
50505050
consulta12 =
rg (depto = 2 (EMPREGADOS))
Tabela consulta12
Pgina 38
F.C.T.
RG
20202020
30303030
40404040
consulta13
= CONSULTA11 CONSULTA12
Tabela consulta13
RG
20202020
30303030
40404040
consulta14 =
rg_empregado (EMPREGADO/PROJETO)
Tabela consulta14
RG Empregado
20202020
30303030
40404040
50505050
consulta15 =
rg (EMPREGADOS)
Tabela consulta15
RG
10101010
20202020
30303030
40404040
Pgina 39
F.C.T.
50505050
Nmero Projeto
Nome
Nmero
Localizao
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
Pgina 40
F.C.T.
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.
= rg_empregado,
(CONSULTA16)
)
Campinas)
consulta17
nmero
((nmero_projeto
nmero)
.and.
(localizao
Tabela consulta17
RG
Nmero
40404040
20
50505050
20
<condio de juno> S
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
Pgina 41
consulta19 =
F.C.T.
Tabela consulta18
RG_Empregado
Nmero_Projeto
Nome
Nmero
Localizao
40404040
20
Prdio Central
20
Campinas
20
Prdio Central
20
Campinas
50505050
<NOT NULL>,
<NOT NULL>,
<NOT NULL> );
( nome
rg
char (30)
integer
NOT NULL,
NOT NULL,
Pgina 42
F.C.T.
cic
depto
rg_supervisor
salario,
integer,
integer
integer,
decimal (7,2)
NOT NULL,
NOT NULL );
<lista de atributos>
<lista de tabelas>
<condies>;
Pgina 43
F.C.T.
Nome
RG
Fernando
20202020
Ricardo
30303030
Jorge
40404040
RG
Salrio
Jorge
40404040
4.200,00
RG
Joo Luiz
10101010
Fernando
20202020
Pgina 44
F.C.T.
nome, rg (
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.
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:
Pgina 45
F.C.T.
empregados
(Jorge Goncalves, 60606060, 66666666, 3, 20202020, 4000,00);
ou ainda:
insira na tabela empregados os seguintes dados:
nome: Joao de Campos
rg: 70707070
cic: 77777777
departamento: 3
salrio: R$2.500,00
insert into
values
Pgina 46
F.C.T.
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
values
empregados
(Joao de Campos, 70707070, 77777777, 3, , 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.
Pgina 47
F.C.T.
5. Bibliografia
Fundamentals of Database Systems; Ramez Elmasri, Shamkant Navathe; The Benjamin
CummingsPublishing Company; 1989;
Sistema de Banco de Dados; Henry F. Korth, Abraham Silberschatz; Makro Books; 1995;
SQL Language - Oracle Reference Manual; Version 7.2;
Pgina 48
F.C.T.
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
Pgina 49