You are on page 1of 12

U UE ER RJ J

F FA AC CU UL LD DA AD DE E D DE E E EN NG GE EN NH HA AR RI IA A
DEPARTAMENTO DE ENGENHARIA DE SISTEMAS E COMPUTAO
ENGENHARIA DE SISTEMAS B
L LG GE EB BR RA A R RE EL LA AC CI IO ON NA AL L
L Li is st ta a d de e E Ex xe er rc c c ci io os s
A. Considere as seguintes relaes:
R
1
(A:Dom
1;
B:Dom
2;
C:Dom
3)

R
2
(D:Dom
3;
E:Dom
4)

R
3
(F: Dom
4)

R
4
(G:Dom
3;
H:Dom
4)

onde A, B, C, D, E, F, G e H representam atributos e Dom
i
representa os domnios de
valores desses atributos. Suponha, ainda, que R
1
, R
2
, R
3
e R
4
possuam 100, 50, 25 e
10 tuplas, respectivamente. Calcule o mximo e o mnimo de tuplas na relao
resultante de cada uma das seguintes expresses da lgebra Relacional:
1. E
1
R
1
|X| R
2
(equi-join)


C = D
Considerando que:
a operao de juno equivalente a uma operao de seleo sobre o produto
cartesiano das tabelas operandas;
o nmero de tuplas gerado pelo produto cartesiano igual ao produto do
nmero de tuplas das tabelas operandas;
no caso dos operandos R
1
e R
2
esse nmero igual a 5.000 tuplas
(100 x 50).
Temos que:
no mximo, a condio (C = D) ser vlida para todas as 5.000 tuplas do
produto cartesiano;
no mnimo, nenhuma tupla do produto cartesiano atender a condio
(C = D).
Logo, max(E
1
) = 5.000 e min(E
1
) = 0
2. E
2
E
1
|X| R
3
(equi-join)

E = F
Da mesma forma, considerando que:
a relao E
1
possui no mnimo zero e no mximo 5.000 tuplas; e
a relao E
3
possui 25 tuplas;
Temos que:
o produto cartesiano de E
1
por R
3
ter no mximo 125.000 tuplas
(i.e. 5000*25);
a condio de seleo (E = F) ser vlida no mximo para todas essas tuplas e no
mnimo para nenhuma delas.
Logo, max(E
2
) = 125.000 e min(E
2
) = 0
3. E
3
R
3
R
4
(unio)
Considerando que R
3
e R
4
possuem 25 e 10 tuplas, respectivamente, temos que:
o mximo de tuplas de E
3
ocorrer quando R
3
e R
4
forem disjuntas, isto , quando
no possurem tuplas em comum. Neste caso, o nmero de tuplas da unio ser
igual soma do nmero de tuplas nas duas relaes (35);
o mnimo de tuplas de E
3
ocorrer quando R
4
estiver totalmente contida em R
3
.
Nesse caso, o nmero de tuplas da unio ser igual ao nmero de tuplas de R
3

(25).
Logo, max(E
3
) = 35 e min(E
3
) = 25
4. E
4
E
1
||X| R
2
(left-join)

C = D
Considerando que:
a relao E
1
possui no mnimo zero e no mximo 5.000 tuplas;
a relao R
2
possui 50 tuplas;
o produto cartesiano de E
1
por R
2
ter no mximo 250.000 tuplas (i.e. 5000*50);
e
a juno esquerda inclui todas as tuplas de E
1
, incluindo aquelas que no
satisfazem a condio de seleo (C = D);
Temos que:
o mximo de tuplas em E
4
ser igual 250.000, quando todas as tuplas do produto
cartesiano satisfizerem a condio (C = D);
o mnimo de tuplas em E
4
ser igual 5.000, quando nenhuma tupla do produto
cartesiano satisfizer a condio (C = D).
Logo, max(E
4
) = 250.000 e min(E
4
) = 5.000
5. E
5
E
1
|X|| R
2
(right-join)
C = D
Considerando que:
a relao E
1
possui no mnimo zero e no mximo 5.000 tuplas;
a relao R
2
possui 50 tuplas;
o produto cartesiano de E
1
por R
2
ter no mximo 250.000 tuplas (i.e. 5000*50);
e
a juno direita inclui todas as tuplas de R
2
, incluindo aquelas que no
satisfazem a condio de seleo (C = D);
Temos que:
o mximo de tuplas em E
5
ser igual 250.000, quando todas as tuplas do produto
cartesiano satisfizerem a condio (C = D);
o mnimo de tuplas em E
5
ser igual 50, quando nenhuma tupla do produto
cartesiano satisfizer a condio (C = D).
Logo, max(E
5
) = 250.000 e min(E
4
) = 50
6. E6 R
2
R
4
(diviso)
Considerando que R
2
e R
4
possuem o mesmo nmero de atributos, esta operao
invlida, uma vez que a diviso requer que o primeiro operando tenha no mnimo
um atributo a mais do que o segundo operando.
7. E
7
R
2
R
3
(diviso)
Considerando que a relao R
2
possui 50 tuplas e a relao R
3
possui 25 tuplas,
temos que:
o mximo de tuplas em E
7
ser igual 2, quando todas as tuplas de R
2
formarem
um conjunto total de combinaes com todas as tuplas de R
3
. Neste caso, o total
de tuplas de E
7
ser igual diviso do nmero de tuplas de R
2
pelo nmero de
tuplas de R
3
(i.e. 50/25).
o mnimo de tuplas em E
7
ser igual zero, quando no houver em R
2
nenhum
conjunto de tuplas que represente uma combinao total com todas as tuplas de
R
3
.
Logo, max(E
5
) = 2 e min(E
4
) = zero
B. Dadas duas relaes R
1
e R
2
, onde R
1
contm n
1
tuplas, R
2
contm n
2
tuplas e
n
2
>n
1
>0, calcule o mximo e o mnimo de tuplas na relao resultante de cada uma
das seguintes expresses da lgebra relacional:
1. R
1
R
2

Considerando que:
R
1
e R
2
possuem n
1
e n
2
tuplas, respectivamente; e
n
2
> n
1
> 0;
Temos que:
o mximo de tuplas geradas pela operao de unio ocorrer quando R
1
e R
2

forem disjuntas, isto , quando no possurem tuplas em comum. Nesse caso, o
nmero de tuplas ser igual soma do nmero de tuplas nas duas relaes (n
1
+
n
2
);
o mnimo de tuplas geradas pela operao de unio ocorrer quando R
1
estiver
totalmente contida em R
2
. Nesse caso, o nmero de tuplas ser igual ao nmero
de tuplas de R
2
(n
2
).
Logo, max(R
1
R
2
) = n
1
+ n
2
e min(R
1
R
2
) = n
2

2. R
1
R
2

Da mesma forma:
o mximo de tuplas geradas pela operao de interseo ocorrer quando R
1

estiver totalmente contida em R
2
. Nesse caso, o nmero de tuplas ser igual ao
nmero de tuplas de R
1
(n
1
).
o mnimo de tuplas geradas pela operao de interseo ocorrer quando R
1
e R
2

forem disjuntas, isto , quando no possurem tuplas em comum. Nesse caso, o
nmero de tuplas ser igual zero.
Logo, max(R
1
R
2
) = n
1
e min(R
1
R
2
) = zero
3. R
1
X R
2

Como a operao de produto cartesiano combina cada tupla do primeiro operando
com todas as tuplas do segundo operando, sem quaisquer restries, o nmero de
tuplas geradas por essa operao constante e igual ao produto do nmero de
tuplas em ambos os operandos.
Assim, max(R
1
x R
2
) = min(R
1
x R
2
) = n
1
* n
2

4.
a=7
(R
1
)
Sabemos que R
1
possui 100 tuplas. Se todas elas satisfizerem a condio de seleo
(a = 7) teremos no mximo 100 tuplas no resultado. Se nenhuma delas satisfizer
essa condio, teremo no mnimo zero tuplas.
Assim, max(
a=7
(R
1
)) = 100 e min((
a=7
(R
1
)) = zero
5.
a
[R
1
]
Sabemos que R
1
possui 100 tuplas. Se todas elas possurem o mesmo valor para o
atributo a, teremos apenas uma tupla no resultado da operao de projeo. Por
outro lado, se cada tupla de R
1
possuir um valor diferente para o atributo a, teremos
100 tuplas no resultado.
Assim, max (
a
[R
1
]) = 100 e min (
a
[R
1
]) = 1
C. Escreva uma expresso que traduza a operao de interseo em termos das
operaes de unio e diferena.
Sabemos que:
a operao de unio inclui as tuplas de ambas as relaes operandas sem
duplicao;
a operao de diferena inclui todas as tuplas do primeiro operando que no esto
presentes no conjunto de tuplas do segundo operando.
Assim sendo, se subtrairmos do resultado da unio as tuplas que esto em um
operando mas no esto no outro obteremos as tuplas que esto na sua interseo:
R S = (R S) (R S) (S R)
D. Seja o seguinte esquema de Banco de Dados Relacional:
LIVRO (Lid, Ttulo, Editora, Assunto)
AUTOR (Aid, Nome)
AUTORIA (Lid, Aid)
EDITORA (Eid, Nome)
onde Lid, Aid e Eid representam os atributos chaves das suas respectivas relaes.
Escreva as expresses em lgebra Relacional que resolvem as seguintes consultas:
1. Nome das editoras que publicaram livros escritos, em parceria, por dois
ou mais autores.
R
1
Autoria
R
2
Autoria
T


R1.Lid
[
R1.Aid R2.Aid
( R
1

|X| R
2
) ]
Lid = Lid
S


Editora
[ T

|X| Livro ]
Lid = Lid
2. Nome dos autores que nunca publicaram livros pela editora McGraw-Hill.
Cdigos dos livros publicados pela editora McGraw-Hill:
R
1

Lid
[
Editora = McGraw-Hill
(Livro) ]
Autores que publicaram livros pela editora McGraw-Hill:
R
2

Aid
[ R
1
|x| Autoria ]
Lid = Lid
Universo de autores:
R
3

Aid
[Autor]
Cdigos dos autores que nunca publicaram livros pela editora McGraw-Hill:
R
4
R
3
R
2
Nomes desses autores:
S


Nome
[R
4

|X| Autor ]
Aid = Aid
3. Nomes dos autores que s publicaram livros individualmente e sempre
na mesma editora.
Autores que publicaram livros em parceria:
R
1
Autoria
R
2
Autoria
R
3

R1.Aid
[
R1.Aid R2.Aid
( R
1

|X| R
2
) ]
Lid = Lid
Autores com mais de uma publicao e seus respectivos livros:
T
1

R1.Aid, R1.Lid
[
R1.Lid R2.Lid
(R
1
|X| R
2
) ]
Aid = Aid
Editoras dos livros publicados por esses autores:
T
2

T1.Aid, Livro.Editora
[ T
1
|X| Livro ]
Lid = Lid
Autores com publicaes em mais de uma editora:
R
4

Aid
[
Editora Editora
(T
2
|X| T
2
) ]
Aid = Aid
Universo de autores:
R
5

Aid
[Autor]
Autores que s publicaram livros individualmente:
R
6
R
5
R
3
Autores que publicaram livros em apenas uma editora:
R
7
R
5
R
4
Autores que s publicaram livros individualmente e em apenas uma editora:
R
8
R
6
R
7
Nomes desses autores:
S


Nome
[R
8

|X| Autor ]
Aid = Aid
4. Autores que s publicaram livros numa mesma editora.
Autores com mais de uma publicao e seus respectivos livros:
R
1
Autoria
R
2
Autoria
T
1

R1.Aid, R1.Lid
[
R1.Lid R2.Lid
(R
1
|X| R
2
) ]
Aid = Aid
Editoras dos livros publicados por esses autores:
T
2

T1.Aid, Livro.Editora
[ T
1
|X| Livro ]
Lid = Lid
Autores com publicaes em mais de uma editora:
R
3

Aid
[
Editora Editora
(T
2
|X| T
2
) ]
Aid = Aid
Universo de autores:
R
4

Aid
[Autor]
Autores que publicaram livros em apenas uma editora:
R
5
R
4
R
3
Nomes desses autores:
S


Nome
[R
5

|X| Autor ]
Aid = Aid
5. Autores que publicaram livros sobre todos os assuntos registrados no
banco de dados.
A consulta inclui o pronome indefinido todos e portanto envolve a operao de
diviso. Resta apenas determinar a forma das relaes operandas que vo atuar
como dividendo e divisor nessa operao.
Considerando que:
o nmero de atributos da relao dividendo deve ser pelo menos uma unidade
maior do que o nmero de atributos da relao divisora;
todo os atributos da relao divisora devem corresponder, em termos de domnio,
a um subconjunto no vazio dos atributos da relao dividendo;
o resultado da operao inclui todos os atributos da relao dividendo que no
tm correspondncia na relao divisora;
temos que:
a relao dividendo dever incluir, nica e exclusivamente, dois atributos: o
primeiro deles com domnio cdigo de autor e o segundo com domnio
assunto, uma vez que o resultado da operao resume-se aos cdigos dos
autores que publicaram livros sobre todos os assuntos;
a relao divisora dever possuir apenas um atributo com domnio assunto
(i.e., um a menos que a relao dividendo).
Assim;
Dividendo
Autoria.Aid, Livro.Assunto
[ Autoria |X| Livro ]
Lid = Lid
Divisor
Assunto
[ Livro ]
Autores que publicaram livros em todos os assuntos:
S Dividendo

Divisor
E. Considere o seguinte esquema de BD:
PACIENTE (Nome, Doena, Tratamento)
MDICO (Nome, Especialidade)
Assuma que nomes identificam univocamente tanto pacientes como mdicos e que
alguns mdicos eventualmente podem tornar-se pacientes. Assuma tambm que
doenas e especialidades possuem o mesmo domnio, isto , gripe pode aparecer
como doena e como especialidade. Um mdico pode ter mais de uma especialidade.
Um paciente pode ter mais de uma doena e pode receber mais de um tratamento
para a mesma doena.
Expresse as consultas abaixo em expresses da lgebra Relacional.
Nomes dos mdicos acometidos de uma doena de sua especialidade.
Neste caso, o mdico tambm paciente e sua doena da sua especialidade.
Logo:
Mdicos que tambm so pacientes:
R
1
Mdico |X| Paciente
Nome = Nome
Mdicos pacientes cuja doena a mesma da sua especialidade:
R
2

Especialidade = Doena
(R
1
)
Soluo:
S
Mdico.Nome
[ R
2
]
Doenas que possuem um nico tratamento.
Universo de doenas:
R
1

Doena
[ Paciente ]
Universo de doenas com mais de um tratamento:
T
1
Paciente
T
2
Paciente
R
2

T1.Doena
[
Tratamento Tratamento
( T
1
|X| T
2
) ]
Doena = Doena
Universo de doenas com um nico tratamento:
R
5
R
1
R
2

Nomes dos pacientes que esto sendo submetidos a todos os tratamentos
para suas doenas.



F. Seja o seguinte esquema de BD:
PEAS (#p, nome, tipo)
CONTM (#p, #c)
Onde uma tupla (k, j) de CONTM representa o fato de que a pea de cdigo k contm a pea de
cdigo j. Evidentemente, #p e #c possuem o mesmo domnio.
Obtenha expresses da lgebra Relacional que resolvam as seguintes consultas:
a) Cdigo e nome das peas do tipo parafuso.
b) Cdigo das peas atmicas, isto , que no possuem componentes.
c) Nome e tipo das peas que possuem um ou mais componentes.
d) Cdigo das peas que no so componentes de nenhuma pea.
e) Cdigos das peas que possuem mais de um componente.
f) Cdigo das peas que possuem exatamente um componente.
g) Cdigo das peas compostas que entram na composio de outras peas.
G. Considere as Relaes F e D que representam Funcionrios e Dependentes, respectivamente,
com o seguinte esquema simplificado:
F(#f, nomef)
D(#f, nomed, par)
onde:
#f: matrcula do funcionrio,
nomef: nome do funcionrio,
nomed: nome do dependente, e
par: parentesco, que pode ser um dentre: 'filho', 'filha', 'esposa/o', etc.
Observe que em D, #f uma chave-estrangeira que casa com a chave-primria #f de F.
Abaixo mostrada uma possvel instncia dessas relaes:
F D
#f nomef #f nomed par
01 F1 01 Alice filha
02 F2 02 Alice esposa
03 F3 02 Clara filha
04 F4 03 Jos filho

Para as instncias acima obtenha:
a) F x D
b) F |x| D,
c) nomef, nomed (F |x| D )
d) par='filha'(D)
Obtenha expresses da lgebra relacional que respondem s seguintes consultas:
a) Nomes e parentescos de todos os dependentes?
b) Matrculas dos funcionrios que possuem dependentes filhas?
c) Matrculas do funcionrios que no possuem dependentes?
d) Matrculas dos funcionrios que possuem algum dependente.
e) Nomes dos funcionrios que possuem uma dependente chamada Alice.
f) Matrculas dos funcionrios que possuem mais de um dependente?
g) Matrculas dos funcionrios que possuem exatamente um dependente?
h) Matrculas dos funcionrios que no tm Alice como dependente.
i) Matrculas dos funcionrios que possuem uma dependente chamada Alice, juntamente com os
nomes de seus demais dependentes, quando for o caso.
j) Matrculas dos funcionrios que possuem exatamente um dependente.

You might also like