Professional Documents
Culture Documents
Integrado - quer dizer que o banco de dados pode ser considerado como
a unificao de vrios arquivos, com a eliminao de qualquer redundncia
parcial ou total entre esses arquivos.
Base de Dados
Vantagens da
base de Dados
Meta Dados
eliminao de
redundncias
eliminao de
redundncias
facilidade de
manuteno
Representao de dados ao
nvel fsico
Representao conceitual
atravs de dados e
programas
facilidade de
manuteno
facilidade de
consultas
2.2 Mapeamentos
Alm dos trs nveis a arquitetura envolve ainda certos
mapeamentos, um mapeamento conceitual/interno e vrios
mapeamentos externos /conceituais.
O mapeamento conceitual/interno define a correspondncia entre
viso conceitual e o banco de dados armazenado; ele especifica o
modo como os registros e campos conceituais so representados no
nvel interno. Se a estrutura do banco de dados armazenado for
alterada o mapeamento conceitual interno ter de ser alterado.
O mapeamento externo/conceitual define a correspondncia entre
uma viso externa especfica e a viso conceitual. Por exemplo, os
campos podem ter diferentes tipos de dados, os nomes de campos e
registros podem ser alterados, vrios campos conceituais podem ser
combinados em um nico campo externo, e assim por diante.
Manipulao de dados O SGBD deve ser capaz de lidar com requisies do usurio
para buscar, atualizar ou excluir dados existentes no banco de dados, ou para
acrescentar novos dados ao banco de dados. Em outras palavras, o SGBD deve
incluir um componente processador de DML ou compilador de DML para lidar com a
linguagem de manipulao de dados (DML).
Sob um ponto de vista de mais alto nvel, um sistema desse tipo pode ser
considerado como tendo uma estrutura muito simples em duas partes,
consistindo em um servidor (back end) e um conjunto de clientes (front
ends):
3.2 Um Exemplo
Neste exemplo, descrita uma base de dados COMPANHIA que ser utilizada para ilustrar o
processo de projeto de base de dados. So listados os requisitos da base de dados e criado o seu
esquema conceitual passo-a-passo ao mesmo tempo em que so introduzidos os conceitos de
modelagem usando o MER.
Um departamento controla inmeros projetos, sendo que cada um tem um nome, um nmero e
uma localizao;
Do empregado armazena-se o nome, o nmero do seguro social, endereo, salrio, sexo e data
de nascimento. Todo empregado associado a um departamento, mas pode trabalhar em
diversos projetos, que no so necessariamente controlados pelo mesmo departamento.
Armazena-se, tambm, o nmero de horas que o empregado trabalha em cada projeto. Mantmse, ainda, a indicao do supervisor direto de cada projeto;
3.2 Um Exemplo
Neste exemplo, descrita uma base de dados COMPANHIA que ser utilizada para ilustrar o
processo de projeto de base de dados. So listados os requisitos da base de dados e criado o seu
esquema conceitual passo-a-passo ao mesmo tempo em que so introduzidos os conceitos de
modelagem usando o MER.
Um departamento controla inmeros projetos, sendo que cada um tem um nome, um nmero e
uma localizao;
Do empregado armazena-se o nome, o nmero do seguro social, endereo, salrio, sexo e data
de nascimento. Todo empregado associado a um departamento, mas pode trabalhar em
diversos projetos, que no so necessariamente controlados pelo mesmo departamento.
Armazena-se, tambm, o nmero de horas que o empregado trabalha em cada projeto. Mantmse, ainda, a indicao do supervisor direto de cada projeto;
Diz-se que cada entidade E1, E2, ..., En participa no tipo de relacionamento R
e que as entidades individuais e1, e2, ..., en participam na instncia do
relacionamento ri=(e1, e2, ..., en). O ndice i indica que podem existir vrias
instncias de relacionamento.
Por exemplo, considere-se que um tipo de relacionamento TRABALHAPARA exista entre tipos de entidades EMPREGADO e DEPARTAMENTO.
Este relacionamento associa cada empregado com o departamento em que
este trabalha. Cada instncia de relacionamento em TRABALHA-PARA
associa uma entidade empregado e uma entidade departamento.
No mini-mundo representado
nesta Figura, os empregados
e1, e3 e e6 trabalham para o
departamento d1; e2 e e4
trabalham para d2; e e5 e e7
trabalham para d3.
Supe-se que:
a. PODE-FORNECER, entre os tipos de entidades FORNECEDOR e PEA, possui uma
instncia (s, p) com o significado: "o fornecedor s pode fornecer a pea p" (para
qualquer projeto);
b. USA, entre os tipos de entidades PROJETO e PEA, possui uma instncia (j, p) com o
significado: "o projeto j usa a pea p"; e
c. FORNECE-ALGO, entre os tipos de entidades FORNECEDOR e PROJETO, possui
uma instncia (s, j) com o significado: "o fornecedor s fornece alguma pea para o
projeto j".
Por exemplo, se existir uma regra que um empregado trabalha para apenas um
departamento, ento esta restrio deve ser descrita no esquema. Pode-se
distinguir dois principais tipos de restries de relacionamento que ocorrem com
relativa freqncia: razo de cardinalidade e participao.
No
tipo
de
relacionamento
binrio
TRABALHA-PARA,
DEPARTAMENTO:EMPREGADO tem razo de cardinalidade 1:N. Isto significa
que cada entidade departamento pode estar relacionada a inmeras entidades
empregado (muitos empregados podem trabalhar para um departamento) mas
uma entidade empregado pode estar relacionada a apenas um departamento (um
empregado pode trabalhar apenas para um departamento).
Pode-se associar um par de nmeros inteiros (min, max) para cada participao
de um tipo de entidade E em um tipo de relacionamento R, onde 0 min max e
max 1. Os nmeros indicam que para cada entidade e em E, e deve participar
ao menos min e no mximo Max vezes em instncias de relacionamento de R.
Atributos de tipos de relacionamento 1:1 ou 1:N podem ser includos como atributos de
um dos tipos de entidades participantes.
Por exemplo, o atributo DataIncio para o tipo de relacionamento GERENCIA pode ser
um atributo tanto de EMPREGADO quanto de DEPARTAMENTO; embora,
conceitualmente, ele pertena ao relacionamento GERENCIA. Isso ocorre porque
GERENCIA um relacionamento 1:1. Assim, toda entidade departamento ou
empregado participam em apenas uma instncia de relacionamento e, dessa forma, o
valor do atributo DataIncio pode ser representado em uma das entidades participantes.
Alguns tipos de entidades podem no ter quaisquer atributos-chaves. Isto implica que
no se pode distinguir as entidades porque a combinao dos valores de atributos
podem ser idnticas. Tais tipos de entidades so chamadas tipos de entidades-fracas.
5. Algebra Relacional
Utilizada para manipular Relaes.
Consiste em um conjunto de operaes que tomam uma ou mais
relaes (tabelas) como entrada e produzem uma nova relao
(tabela) como resultado.
As operaes da lgebra relacional podem ser divididas em dois
grupos.
Um grupo inclui operaes de conjunto da teoria de conjuntos da
matemtica. Essas operaes incluem unio, interseo, diferena,
e produto cartesiano.
O outro grupo consiste de operaes desenvolvidas especialmente
para bancos de dados relacionais e incluem as operaes de
seleo, projeo, e juno.
5.1.1 Unio
A unio de duas relaes R e S, R U S o conjunto de todas as
tuplas t pertencentes a R, ou a S, ou a ambas.
As duas relaes operando tm que ser do mesmo grau, digamos n,
e os j-simos atributos das duas relaes (j na faixa de 1 a n) tm
que ser do mesmo domnio.
5.1.2 Interseo
A interseo de duas relaes R e S, R S o conjunto de todas
as tuplas t pertencentes simultaneamente a R e a S.
5.1.3 Diferena
A diferena entre duas relaes R e S (nesta ordem), R - S, o
conjunto de todas as tuplas t pertencentes a R, mas no a S.
5.2.1 Seleo
5.2.1 Seleo
Uma srie de clusulas de seleo conectadas pelo operador booleano E pode ser
substituda por uma cascata de operaes de seleo.
<cond1>e<cond2>e...e<condn>(R)=<cond1>(<cond2>(...(<condn>(R))...))
5.2.2 Projeo
Nenhum atributo pode ser especificado mais de uma vez em uma operao
de projeo.
5.2.2 Projeo
A equao <lista1>(<lista2>(R))=
<lista1>(R) s ser verdadeira se <lista2>
contiver os atributos presentes em <lista1>,
caso contrrio o lado esquerdo da equao
ser invlido.
5.2.3 Juno
A forma geral de uma operao de juno sobre duas relaes R(A 1,A2,...,An) e
S(B1,B2,...,Bm) R <condio de juno> S
Cada combinao de tuplas para qual a condio de juno seja avaliada como
VERDADEIRA includa na relao resultante Q como uma nica tupla. A
<condio de juno> tem a seguinte forma: <condio> E <condio> E ... E
<condio> onde cada condio da forma Ai Bj , onde Ai um atributo de R,
Bj um atributo de S, Ai e Bj tm o mesmo domnio, e um operador
relacional do conjunto {= , < , , > , , }. As tuplas cujos atributos de juno so
nulos no aparecem no resultado.
5.2.3 Juno
5.2.4 Eqijuno
5.2.4 Eqijuno
Por exemplo, suponha que queiramos uma lista com o nome de todos os
empregados e o nome dos departamentos que eles gerenciam. Devemos
ento usar a operao de Juno Externa, denotada por =, como se
segue:
Exerccio
Exerccio
1. Obtenha o primeiro nome, o ltimo nome e o salrio de cada um dos empregados.
2. Obtenha o CPF do gerente do Departamento de Informtica.
3. Obtenha o primeiro e o ltimo nome do gerente do Departamento de Informtica.
4. Obtenha o primeiro e o ltimo nome de todos os empregados do Departamento de
Informtica.
5. Obtenha uma relao com o primeiro e o ltimo nome de todos os empregados do
Departamento de Informtica, juntamente com o nome do projeto que cada um deles est
trabalhando.
6. Obtenha o primeiro e o ltimo nome de todos os empregados que no tm dependentes.
7. Obtenha o primeiro e o ltimo nome de todos os empregados que tm dois ou mais
dependentes.
8. Obtenha o total dos salrios pagos aos empregados do Departamento de Informtica.
9. Obtenha o salrio mdio dos gerentes de departamento.
10. Obtenha uma relao com o nome de cada um dos departamentos e o salrio mdio dos
seus empregados.
Exerccio
11. Recupere os nomes de todos os empregados no departamento 5 que trabalham menos
que 20 horas por semana no projeto Intranet.
12. Liste os nomes de todos os empregados que possuem umdependente cujo nome seja
igual ao deles.
13. Encontre os nomes de todos os empregados que estejam diretamente supervisionados
por Beatriz Figueredo
14. Recupere os nomes de todos os empregados que trabalham em cada projeto.
15. Recupere os nomes de todos os empregados que no trabalham em nenhum projeto.
16. Liste os sobrenomes de todos os gerentes de departamento que no possuam
dependentes.
17. Para cada projeto, liste o nome do projeto e o total de horas por semana (de todos os
empregados) despendidos naquele projeto.
18. Para cada departamento, recupere o nome do departamento e o salrio mdio de todos os
empregados que trabalham naquele departamento.
19. Recupere o salrio mdio de todos os empregados do sexo feminino.
6. SQL
Vrios SGBDs atuais utilizam o SQL como a linguagem padro para o acesso s
bases de dados. Entre eles podemos citar:
DB2 da IBM
ORACLE da Oracle Corporation;
RDB da Digital
SYBASE da Sybase INC
SQL Server da Microsoft
Ingres da Computer Associates
6. SQL
Linguagem de definio de dados (DDL)
Permite ao usurio a definio da estrutura e
organizao dos dados armazenados, e das relaes
existentes entre eles.
onde:
<nome_tabela> dever ser substitudo pelo nome da tabela a ser
criada.
<descrio das colunas> deve ser substituda pela relao das
colunas da tabela e seus respectivos tipos de dados (por
exemplo, smallint, char, varchar, integer, number, float e etc).
<descrio das chaves> deve ser substituda pela lista das colunas
que so tratadas como chaves estrangeiras.
smallint
nome_ve nd
sal_fixo
not null,
faixa_comiss char(01)
( cod_prod
smallint
unid_prod
char(03)
desc_prod
val_unit
not null,
create table cliente
smallint
not null,
nome_cli
endereco
varchar(40) null,
cidade
varchar(20) null,
cep
char(08)
null,
uf
char(02)
null,
not null,
not null,
smallint
not null,
smallint
not null,
smallint
not null
smallint
not null
smallint
not null
smallint
not null
float
not null);
usar
kg
2,5
Cimento
kg
4,5
parafuso
kg
2,0
Fio plastico
0,2
5,0
Solvente PRW
NOME_CLI
CIDADE
UF
Supermercado Carrefour
rio de janeiro
rj
Supermercado Baratao
rio de janeiro
rj
Supermercado Arariboia
niteroi
rj
UFF
niteroi
rj
CSN
volta redonda
rj
Pegeout
resende
rj
sao paulo
sp
Ford Caminhoes
sao paulo
sp
Riocel Celulose
guaiba
rs
Elevadores Sur
guaiba
rs
Operadores Relacionais:
=
igual
<> ou != diferente
<
menor que
>
maior que
>=
maior ou igual a
<=
menor ou igual a
Exemplo: 'parafuso'
NO_PED
CD_ PROD
2111
100
500
2113
500
500
4112
500
500
5111
300
500
7111
100
500
NOME_CLI
Supermercado Arariboia
from cliente
where cidade = 'niteroi';
UFF
QTD_PED
Operadores Lgicos
AND
OR
NOT
conjuno
disjuno
negao
CIDADE
CEP
CSN
volta redonda
20000005
Pegeout
resende
20000006
sao paulo
11000001
Ford Caminhoes
sao paulo
11000002
NUM_PED
1111
1112
2111
2113
3111
3112
4111
4112
5111
COD_PROD
DESC_PROD
100
Chapa de Ao
300
parafuso 3.0X10.5 mm
400
Fio plstico
Exemplos:
'apis%' se aplicaria s seguintes cadeias de caracteres:
'lapis preto'
'lapis cera'
'lapis borracha'
'broca n_' se aplicaria s seguintes cadeias de caractere:
'broca n1'
'broca n9'
COD_PROD
DESC_PROD
100
Chapa de Ao
200
Cimento
300
parafuso 3.0X10.5 mm
COD_VEND
NOME_VEND
11
Paulo Alberto
13
Cassia Andrade
15
Maria Paula
Operadores IN e NOT IN
NOME_ VEND
Paulo Alberto
12
Ana Cristina
14
Armando Pinto
select nome_vend,sal_fixo
from vendedor
order by nome_vend;
NOME_VEND
SAL_FIXO
Ana Cristina
2100
Armando Pinto
2500
Cassia Andrade
900
Maria Paula
900
Paulo Alberto
1500
select nome_cli,cidade,uf
from cliente
order by uf desc,cidade desc;
CIDADE
UF
sao paulo
sp
Ford Caminhoes
sao paulo
sp
Riocel Celulose
guaiba
rs
Elevadores Sur
guaiba
rs
volta redonda
rj
CSN
Supermercado Carrefour
rio de janeiro
rj
Supermercado Baratao
rio de janeiro
rj
Pegeout
resende
rj
Supermercado Arariboia
niteroi
rj
UFF
niteroi
rj
DESC_PROD
parafuso 3.0X10.5 mm
VAL_UNIT
2
Chapa de Ao
2,5
Cimento
4,5
NOVO_SAL
Cassia Andrade
1695
Maria Paula
1695
MIN(SAL_FI) MAX(SAL_FI )
900
2500
SUM(QTD_PE)
where cd_prod=200;
900
AVG(SAL_FI)
1580
COUNT(*)
where sal_fixo>2000;
A Palavra-Chave DISTINCT
CIDADE
guaiba
niteroi
resende
rio de janeiro
sao paulo
volta redonda
TOTAL_ITEN
1111
1112
1113
2111
2112
2113
3111
3112
4111
4112
5111
6111
6112
7111
A Clusula HAVING
NO_PED
group by no_ped
1111
having count(*)>1;
1112
2111
2112
3112
4112
5111
6112
TOTAL_ITEN
Qualificadores de Nomes
Um qualificador de nome consiste do nome da tabela, seguido
de um ponto, seguido por um nome de uma coluna da tabela. Por
exemplo, o qualificador da coluna DESC_PROD da tabela
PRODUTO ser PRODUTO.DESC_PROD.
Os qualificadores de nome so utilizados em uma consulta
para efetivar a juno (JOIN) entre as tabelas.
NOME_CLI
NUM_PED
1000
Supermercado Carrefour
1111
2000
Supermercado Baratao
11 11
3000
Supermercado Arariboia
1111
7000
1111
8000
Ford Caminhoes
1111
9000
Riocel Celulose
1111
..........................................................................................................................
10000
Elevadores Sur
1111
1000
Supermercado Carrefour
1112
Select (nome_cli,pedido.cd_cli,pedido.num_ped)
from cliente,pedido
where cliente.cod_cli=pedido.cd_cli;
NOME_CLI
CD_CLI
NUM_PED
Supermercado Carrefour
1000
1111
Supermercado Carrefour
1000
1112
Supermercado Carrefo ur
1000
1113
Supermercado Arariboia
3000
2111
Supermercado Arariboia
3000
2112
Supermercado Arariboia
3000
2113
UFF
4000
3111
UFF
4000
3112
Pegeout
6000
4111
Pegeout
6000
4112
Ford Caminhoes
8000
5111
Riocel Celulose
9000
6111
Riocel Celulose
9000
6112
Elevadores Sur
10000
7111
NOME_CLI
UF
NUM_PED
Supermercado Carrefour
rj
1113
30
rj
2112
18
PRAZO_ENTR
NOME_CLI
NUM_PED PRAZO_ENTR
Riocel Celulose
611 2
60
Supermercado Carrefour
1113
30
Riocel Celulose
6111
30
Elevadores Sur
7111
20
Supermercado Arariboia
2112
18
Supermercado Arariboia
2111
15
UFF
3111
13
Supermercado Carrefour
1111
10
Ford Caminhoes
5111
10
UFF
3112
Pegeout
4111
Pegeout
4112
Supermercado Carrefour
1112
Supermercado Arariboia
2113
Sinnimos
Exibir os vendedores (ordenados por nome) que emitiram pedidos com prazos
de entrega superiores a 15 dias e que tenham salrios fixos iguais ou
superiores a R$ 1.000,00.
select distinct V.nome_vend,P.prazo_entr
from vendedor V, pedido P
where V.cod_vend=P.cd_vend and
V.sal_fixo>1000 and P.prazo_entr>15
order by V.nome_vend;
NOME_VEND
PRAZO_ENTR
Ana Cristina
60
Armando Pinto
30
NOME_CLI DESC_PROD
NO_PED PRAZO_ENTR
Carrefour
1113
Chapa de Aco
30
NOME_VEND
PR.desc_prod='Chapa de Aco';
Armando Pinto
Maria Paula
Paulo Alberto
COUNT(COD_ Cli)
3
V.nome_vend='Ana Cristina';
Quantos clientes das cidades do Rio de Janeiro e Niteri tiveram seus pedidos
tirados com a vendedora Ana Cristina?
select C.cidade,count(distinct C.cod_cli) as num_clientes
from cliente C, pedido P, vendedor V
where C.cod_cli=P.cd_cli and
C.cidade in ('rio de janeiro','niteroi') and
P.cd_vend=V.cod_vend and
V.nome_vend='Ana Cristina'
group by C.cidade;
CIDADE NUM_CLIENT
niteroi
DESC_PROD
where cod_prod IN
Chapa de Ao
(select cd_prod
from item_pedido
where qtd_ped=100);
Cimento
Fio plstico
NOME_VEND
from vendedor);
Paulo Alberto
Cassia Andrade
Maria Paula
COD_VEND NOME_VEND
15
Maria Paula
NOME_CLI
Supermercado Carrefour
Supermercado Arariboia
COD_PROD DESC_PROD
---------- -------------------0 linhas selecionadas.
2 linhas processadas.
Modificando um Registro
UPDATE <nome_tabela>
SET {<nome_coluna> = <expresso>}
WHERE <condio_de_seleo>;
1 linha processada.
de R$ 100,00.
update vendedor
set sal_fixo=(sal_fixo*1.27+100.00);
5 linhas processadas.
Acrescentar 2,5% ao preo unitrio dos produtos que estejam abaixo da mdia
dos preos dos produtos comprados a quilo.
update produto
set val_unit=val_unit*1.025
where val_unit <
(select avg(val_unit)
from produto
where unid_prod=kg);
3 linhas processadas.
Excluindo Registros
DELETE FROM <nome_tabela>
WHERE <condio_de_seleo>;
Excluir todos o itens de pedido que tenham quantidade pedida inferior a 200.
delete from item_pedido
where qtd_ped < 200;
6 linhas processadas.
1 linha processada.