Escolar Documentos
Profissional Documentos
Cultura Documentos
FACULDADE DE ENGENHARIA
DEPARTAMENTO DE ENGENHARIA DE SISTEMAS E COMPUTAÇÃO
ENGENHARIA DE SISTEMAS B
ÁLGEBRA RELACIONAL
Lista de Exercícios
1. E1 R1 |X| R2 (equi-join)
C=D
Considerando que:
a operação de junção é equivalente a uma operação de seleção sobre o produto
cartesiano das tabelas operandas;
o número de tuplas gerado pelo produto cartesiano é igual ao produto do
número de tuplas das tabelas operandas;
no caso dos operandos R1 e R2 esse número é igual a 5.000 tuplas
(100 x 50).
Temos que:
no máximo, a condição (C = D) será válida para todas as 5.000 tuplas do
produto cartesiano;
no mínimo, nenhuma tupla do produto cartesiano atenderá a condição
(C = D).
Logo, max(E1) = 5.000 e min(E1) = 0
2. E2 E1 |X| R3 (equi-join)
E=F
3. E3 R3 R4 (união)
Considerando que:
a relação E1 possui no mínimo zero e no máximo 5.000 tuplas;
a relação R2 possui 50 tuplas;
o produto cartesiano de E1 por R2 terá no máximo 250.000 tuplas (i.e. 5000*50);
e
a junção à esquerda inclui todas as tuplas de E1, incluindo aquelas que não
satisfazem a condição de seleção (C = D);
Temos que:
o máximo de tuplas em E4 será igual 250.000, quando todas as tuplas do produto
cartesiano satisfizerem a condição (C = D);
o mínimo de tuplas em E4 será igual 5.000, quando nenhuma tupla do produto
cartesiano satisfizer a condição (C = D).
Logo, max(E4) = 250.000 e min(E4) = 5.000
5. E5 E1 |X|| R2 (right-join)
C=D
Considerando que:
a relação E1 possui no mínimo zero e no máximo 5.000 tuplas;
a relação R2 possui 50 tuplas;
o produto cartesiano de E1 por R2 terá no máximo 250.000 tuplas (i.e. 5000*50);
e
a junção à direita inclui todas as tuplas de R2, incluindo aquelas que não
satisfazem a condição de seleção (C = D);
Temos que:
o máximo de tuplas em E5 será igual 250.000, quando todas as tuplas do produto
cartesiano satisfizerem a condição (C = D);
o mínimo de tuplas em E5 será igual 50, quando nenhuma tupla do produto
cartesiano satisfizer a condição (C = D).
Logo, max(E5) = 250.000 e min(E4) = 50
6. E6 R2 ÷ R4 (divisão)
7. E7 R2 ÷ R3 (divisão)
1. R1 R2
Considerando que:
R1 e R2 possuem n1 e n2 tuplas, respectivamente; e
n2 > n1 > 0;
Temos que:
o máximo de tuplas geradas pela operação de união ocorrerá quando R1 e R2
forem disjuntas, isto é, quando não possuírem tuplas em comum. Nesse caso, o
número de tuplas será igual à soma do número de tuplas nas duas relações (n1 +
n2);
o mínimo de tuplas geradas pela operação de união ocorrerá quando R1 estiver
totalmente contida em R2. Nesse caso, o número de tuplas será igual ao número
de tuplas de R2 (n2).
Logo, max(R1 R2) = n1 + n2 e min(R1 R2) = n2
2. R1 R2
Da mesma forma:
o máximo de tuplas geradas pela operação de interseção ocorrerá quando R1
estiver totalmente contida em R2. Nesse caso, o número de tuplas será igual ao
número de tuplas de R1 (n1).
o mínimo de tuplas geradas pela operação de interseção ocorrerá quando R1 e R2
forem disjuntas, isto é, quando não possuírem tuplas em comum. Nesse caso, o
número de tuplas será igual zero.
Logo, max(R1 R2) = n1 e min(R1 R2) = zero
3. R1 X R2
4. a=7 (R1)
Sabemos que R1 possui 100 tuplas. Se todas elas satisfizerem a condição de seleção
(a = 7) teremos no máximo 100 tuplas no resultado. Se nenhuma delas satisfizer
essa condição, teremo no mínimo zero tuplas.
Assim, max( a=7 (R1)) = 100 e min(( a=7 (R1)) = zero
5. a [R1]
Sabemos que R1 possui 100 tuplas. Se todas elas possuírem o mesmo valor para o
atributo a, teremos apenas uma tupla no resultado da operação de projeção. Por
outro lado, se cada tupla de R1 possuir um valor diferente para o atributo a, teremos
100 tuplas no resultado.
Sabemos que:
a operação de união inclui as tuplas de ambas as relações operandas sem
duplicação;
a operação de diferença inclui todas as tuplas do primeiro operando que não estão
presentes no conjunto de tuplas do segundo operando.
Assim sendo, se subtrairmos do resultado da união as tuplas que estão em um
operando mas não estão no outro obteremos as tuplas que estão na sua interseção:
R S = (R S) – (R – S) – (S – R)
D. Seja o seguinte esquema de Banco de Dados Relacional:
onde Lid, Aid e Eid representam os atributos chaves das suas respectivas relações.
1. Nome das editoras que publicaram livros escritos, em parceria, por dois
ou mais autores.
R1 Autoria
R2 Autoria
T R1.Lid [ R1.Aid ≠ R2.Aid ( R1 |X| R2 ) ]
Lid = Lid
2. Nome dos autores que nunca publicaram livros pela editora McGraw-Hill.
Universo de autores:
R3 Aid [Autor]
Códigos dos autores que nunca publicaram livros pela editora McGraw-Hill:
R4 R3 – R2
Universo de autores:
R5 Aid [Autor]
Autores que só publicaram livros individualmente:
R6 R5 – R3
Autores que publicaram livros em apenas uma editora:
R7 R5 – R4
Autores que só publicaram livros individualmente e em apenas uma editora:
R8 R6 R7
Nomes desses autores:
S Nome [R8 |X| Autor ]
Aid = Aid
4. Autores que só publicaram livros numa mesma editora.
S Médico.Nome [ R2 ]
Doenças que possuem um único tratamento.
Universo de doenças:
R1 Doença [ Paciente ]
Universo de doenças com mais de um tratamento:
T1 Paciente
T2 Paciente
R2 T1.Doença [ Tratamento ≠ Tratamento ( T1 |X| T2 ) ]
Doença = Doença
Onde uma tupla (k, j) de CONTÉM representa o fato de que a peça de código k contém a peça de
código j. Evidentemente, #p e #c possuem o mesmo domínio.
F(#f, nomef)
D(#f, nomed, par)
onde:
#f: matrícula do funcionário,
nomef: nome do funcionário,
nomed: nome do dependente, e
par: parentesco, que pode ser um dentre: 'filho', 'filha', 'esposa/o', etc.
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
a) F x D
b) F |x| D,
c) nomef, nomed (F |x| D )
d) σ par='filha'(D)
Obtenha expressões da álgebra relacional que respondem às seguintes consultas: