Escolar Documentos
Profissional Documentos
Cultura Documentos
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 1
F.C.T.
Pgina 2
Programas de Aplicao/Consulta
F.C.T.
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 3
F.C.T.
F.C.T.
Pgina 5
F.C.T.
Pgina 6
F.C.T.
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 7
F.C.T.
Pgina 8
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 9
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 10
F.C.T.
Pgina 11
F.C.T.
Trabalha Para
EMPREGADO
e1
e2
e3
e4
e5
e6
e7
DEPARTAMENTO
d1
d2
d3
Pgina 12
F.C.T.
EMPREGADO
e1
e2
e3
Supervisiona
e4
e5
Supervisiona
Supervisionado
Gerencia
EMPREGADO
e1
e2
e3
e4
e5
e6
e7
DEPARTAMENTO
d1
d2
d3
Pgina 13
F.C.T.
nmero de relacionamentos dos quais uma entidade pode participar. A cardinalidade pode ser:
1:1, 1:N, M:N. No exemplo da figura 7, a cardinalidade 1:1, pois cada entidade empregado
pode gerenciar apenas um departamento e um departamento pode ser gerenciado por apenas um
empregado. No exemplo da figura 5, no relacionamento EMPREGADO Trabalha Para
DEPARTAMENTO, o relacionamento 1:N, pois um empregado pode trabalhar em apenas um
departamento, enquanto que um departamento pode possuir vrios empregados. Na figura 8
temos um exemplo de um relacionamento com cardinalidade N:M.
Trabalha Em
EMPREGADO
e1
e2
e3
e4
PROJETO
p1
p2
p3
Pgina 14
F.C.T.
p1
p2
p3
M1
data 1
data 2
Pgina 15
C1
F.C.T.
Pgina 16
F.C.T.
TIPO
ENTIDADE
ATRIBUTO
ATRIBUTO
CHAVE
TIPO ENTIDADE
FRACA
ATRIBUTO
MULTI
VALORADO
TIPO
RELACIONAMENTO
ATRIBUTO
COMPOSTO
TIPO
RELACIONAMENTO
IDENTIFICADOR
E1
ATRIBUTO
DERIVADO
E1
E2
E2
Participao Parcial de E1 em R,
Participao Total de E2 em R
(min, max)
E1
Pgina 17
F.C.T.
dt. nasc.
no. funcional
sexo
rg
Empregado
endereo
Funo
d
qualificao
No registro
especializao
Engenheiro
Secretria
idiomas
Pgina 18
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
Secretria
participa
Pgina 19
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
rg
Empregado
Funo
d
qualificao
no registro
especializao
Engenheiro
Secretria
idiomas
Pgina 20
F.C.T.
Descrio
no. da pea
Pea
o
No. Projeto
Data
Ordem Servio
Manufaturada
Torneada
Preo
Pgina 21
F.C.T.
Empregado
Funo
Categoria Salarial
Secretaria
Engenheiro
Mensalista
Horista
Gerente
Pgina 22
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 23
F.C.T.
chave uma superchave da qual no se pode extrair atributos. Por exemplo, o conjunto: (RA,
Nome, Endereo) uma superchave para estudante, porm, no uma chave pois se tirarmos o
campo Endereo continuaremos a ter uma superchave. J o conjunto (Nome da Revista,
Volume, No da Revista) uma superchave e uma chave, pois qualquer um dos atributos que
retirarmos, deixaremos de ter uma superchave, ou seja, (Nome da Revista, Volume) no
identifica uma nica tupla.
Em outras palavras, uma superchave uma chave composta, ou seja, uma chave
formada por mais que um atributo. Veja o exemplo abaixo:
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
Jorge
40404040
44444444
20202020
4.200,00
Renato
50505050
55555555
20202020
1.300,00
Pgina 24
F.C.T.
3. Para cada relacionamento regular com cardinalidade 1:1 entre entidades E1 e E2 que
geraram as tabelas T1 e T2 respectivamente, devemos escolher a chave primria de uma
das relaes (T1, T2)e inser-la como chave estrangeira na outra relao; se um dos lados
do relacionamento tiver participao total e outro parcial, ento interessante que a
chave do lado com participao parcial seja inserido como chave estrangeira no lado que
tem participao total;
5. Para cada relacionamento regular com cardinalidade N:N entre entidades E1 e E2, criase uma nova tabela T1, contendo todos os atributos do relacionamento mais o atributo
chave de E1 e o atributo chave de E2; a chave primria de T1 ser composta pelos
atributos chave de E1 e E2;
6. Para cada atributo multivalorado A1, cria-se uma tabela T1, contendo o atributo
multivalorado A1, mais o atributo chave C da tabela que representa a entidade ou
relacionamento que contm A1; a chave primria de T1 ser composta por A1 mais C; se
A1 for composto, ento a tabela T1 dever conter todos os atributos de A1;
7. Para cada relacionamento n-rio, n > 2, cria-se uma tabela T1, contendo todos os
atributos do relacionamento; a chave primria de T1 ser composta pelos atributos chaves
das entidades participantes do relacionamento;
8. Converta cada especializao com m subclasses {S1, S2, ..., Sm} e superclasse SC, onde
os atributos de SC so {c, a1, a2, ..., an} onde c a chave primria de SC, em tabelas
utilizando uma das seguintes opes:
8.1. Crie uma tabela T para SC com os atributos A(T) = {c, a1, a2, ..., an} e chave
C(T) = c; crie uma tabela Ti para cada subclasse Si , 1 i m, com os atributos
A(Ti) = {c} A(Si), onde C(T) = c;
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;
Sistemas de Bancos de Dados
Pgina 25
F.C.T.
EF
E
c
ou
6o Passo - Atrbs. Multi Valorados
E
E
E
mv
E
ou
alm de outras.
A dependncia 1 implica que o nmero de um RG define de forma nica o nome do
empregado e o CIC do empregado. A dependncia 2 implica que o nmero do projeto define
de forma nica o nome do projeto e sua localizao e a dependncia 3 implica que o
RG do empregado mais o nmero do projeto define de forma nica o nmero de horas que o
empregado trabalhou no projeto. A especificao das inferncias deve ser elaborada pelo
Sistemas de Bancos de Dados
Pgina 26
F.C.T.
projetista de banco de dados em conjunto com o analista de sistemas, pois os mesmos devero
ter conhecimento da semntica da base de dados.
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
Rua
Endereo
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
Cliente_Telefone
Rua
Nmero
Cdigo_Cliente
Cidade
Telefone_Client
e
Pgina 27
F.C.T.
RG
Nome
No_Departamento
Nome_Depto
RG_Ger_Depto
RG { Nome_Depto, RG_Ger_Depto }
RG No_Departamento
RG
CIC
Nome
No_Funcional
Pgina 28
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
30303030
Adreia
01/05/90
Filho
Feminino
Pgina 29
F.C.T.
p Nome,
(DEPENDENTES)
Dt. Nascimento
Dt.
Nascimento
Jorge
27/12/86
Luiz
18/11/79
Fernanda
14/02/69
Angelo
10/02/95
Adreia
01/05/90
Tabela consulta4
Nome
Depto.
Salrio
Ricardo
2.300,00
Renato
1.300,00
Pgina 30
F.C.T.
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
consulta7 =
sdepto = 2 (EMPREGADOS)
Tabela consulta7
Pgina 31
F.C.T.
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
prg_supervisor (CONSULTA7)
consulta8 =
Tabela consulta8
RG Supervisor
10101010
20202020
consulta9 =
prg(CONSULTA7)
Tabela consulta9
RG
20202020
30303030
40404040
consulta10
= CONSULTA8 CONSULTA9
Tabela consulta10
RG
20202020
30303030
40404040
10101010
Pgina 32
F.C.T.
consulta11 =
prg_empregado(EMPREGADO/PROJETO)
Tabela consulta11
RG_Empregado
20202020
30303030
40404040
50505050
consulta12 =
consulta13
= CONSULTA11 CONSULTA12
Tabela consulta13
RG
20202020
30303030
40404040
consulta14 =
prg_empregado (EMPREGADO/PROJETO)
Pgina 33
F.C.T.
Tabela consulta14
RG Empregado
20202020
30303030
40404040
50505050
consulta15 =
prg (EMPREGADOS)
Tabela consulta15
RG
10101010
20202020
30303030
40404040
50505050
Pgina 34
F.C.T.
Tabela consulta16
RG Empregado
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
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.
= prg_empregado,
(CONSULTA16)
)
Campinas)
consulta17
nmero
(s(nmero_projeto
nmero)
.and.
(localizao
Tabela consulta17
RG
Nmero
40404040
20
50505050
20
<condio de juno> S
Pgina 35
F.C.T.
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
Pgina 36
F.C.T.
<NOT NULL>,
<NOT NULL>,
<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 );
Observe que neste caso, a chave da tabela EMPREGADOS, (rg) utilizada como chave
estrangeira ou como chave primria composta em diversos tabelas que devem ser devidamente
corrigidas.
Este processo no assim to simples pois, como vemos neste caso, a excluso da tabela
EMPREGADOS implica na alterao do projeto fsico de diversas tabelas. Isto acaba
implicando na construo de uma nova base de dados.
4.6.1.3. Comando ALTER TABLE
O comando alter table permite que o usurio faa a incluso de novos atributos em uma
tabela. A forma geral para o comando alter table a seguinte:
alter table <nome_tabela> add <nome_coluna> <tipo_coluna>;
No caso do comando alter table, a restrio NOT NULL no permitida pois assim que
se insere um novo atributo na tabela, o valor para o mesmo em todas as tuplas da tabela
recebero o valor NULL.
<lista de atributos>
<lista de tabelas>
<condies>;
Pgina 37
F.C.T.
RG
Fernando
20202020
Ricardo
30303030
Jorge
40404040
RG
Salrio
Jorge
40404040
4.200,00
RG
Pgina 38
F.C.T.
Joo Luiz
10101010
Fernando
20202020
pnome, 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:
F.C.T.
cic: 66666666
departamento: 3
rg_supervisor: 20202020
salrio: R$ 4.000,00
insert into
values
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 40
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>;
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 41
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 42
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 43