O conjunto de valores produzidos por Q1 e Q2 é o mesmo. Contudo Q2 pode produzir mais cópias do mesmo tuplo. Por exemplo, se R= {(4,5),(4,8)} e S={(5,3),(8,2),(8,0)}, Q1 retorna 3 tuplos: (4)(4)(4), equanto que Q2 retorna apenas 2 tuplos: (4)(4).
Basta verificar com um exemplo. Se R = {(1,2),(2,1)}, Q1 retorna apenas o tuplo (1,1), o qual não está contido em R e é claramente diferente de R.
Q1 produz uma relação com 3 atributos: a, b, c. Q2 produz uma relação com 4 atributos: a, R.b, S.b, c.
Primeiro vamos mostras com um exemplo que Q1 e Q2 podem não dar o mesmo resultado.
R: S: a b a b --- --- 1 2 1 3 5 3 Q1 retorna (1) e (5). Q2 retorna apenas (5).
Agora vamos tentar provar que qualquer elemento retornado por Q2 também é retornado por Q1. Se o conseguirmos fazer, fica provado que o resultado de Q2 está contido no resultado de Q1.
Seja 'x' um elemento retornado por Q2. 'x' terá forçosamente de pertencer à coluna 'a' de R e não pertencer à coluna 'a' de S. Se 'x' pertence à coluna 'a' de R, então R terá de ter pelo menos um tuplo da forma (x,y). Este tuplo (x,y) pertence a R mas nunca poderá pertencer a S (porque 'a' não pode pertencer à coluna 'a' de S). Isto é, 'x' aparecerá forçosamento no output de Q1. Está demonstrado!
Ambas as queries produzem os tuplos de R para os quais a componente b seja igual à componente d de algum tuplo de S.
Em SQL, INTERSECT elimina os tuplos repetidos.
A expressão nunca poderá ser FALSE. Se a e b forem ambos diferentes de NULL, então a expressão é sempre verdadeira. Se a e b forem ambos NULL, a expressão dá UNKNOWN. Se a for NULL e b for diferente de NULL, então a expressão poderá ser TRUE ou UNKNOWN (consoante b>=0 ou b<0). Finalmente, se b for NULL e a for diferente de NULL, a expressão também apenas poderá ser TRUE ou UNKNOWN (consoante a<=0 ou a>0).
A view V(d,c) ficaria com os tuplos (2,3), (12,2) e (12,1). A view W(d,e) ficaria com os tuplos (2,3) e (12,3). O SELECT iria retornar apenas o tuplo (7,3). Logo, a soma dos componentes é 10.
Q2 nem sequer é SQL válido. Q1 obtém o resultado pretendido, e Q3 também (a solução de Q3 é semelhante aquela que foi feita nas aulas praticas em álgebra relacional).
Como a é chave primária, não poderá ter valores repetidos. b não tem qualquer tipo de restrição e poderá ter valores repetidos. Logo, o número de valores distintos para o atributo a nunca poderá ser inferior ao número de valores distintos para o atributo b.
I viola a integridade referencial caso S tenha algum tuplo em que a=3. II nunca viola a integridade referencial devido ao UPDATE CASCADE. III viola a integridade referencial caso a coluna a de R não contenha o valor 5.
Para o caso (c) as chaves seriam ACD e ABD. Ambas as DFs violam BCNF, mas os atributos do lado direito de ambas as DFs pertencem a pelo menos 1 chave. Logo R ficaria na 3FN.
Para os outros casos isso não acontece.
Como T tem 2 tuplos, o output do produto cartesiano de T com T com T dará 2*2*2 = 8 tuplos. Já agora, o output seria:
T1.v | T2.v | T3.v ------+------+------ 0 | 0 | 0 0 | 0 | 1 0 | 1 | 0 0 | 1 | 1 1 | 0 | 0 1 | 0 | 1 1 | 1 | 0 1 | 1 | 1
É só somar os valores da terceira coluna (T3.v) para os quais o valor de T1.v é zero (ver output da pergunta 13). Isto é: 0+1+0+1 = 2.
O facto de R ser muitos-um (com seta curva) obriga a que para cada entidade de A esteja associada 1 entidade de B. Contudo, não existe qualquer restrição sobre o número de entidades que possam existir em B (a não ser o facto de B ter de possuir pelo menos 1 entidade).
Seria perfeitamente possivel que todas as 100 entidades de A estivessem associadas a uma única entidade de B, ou a 100 B's distintos, ou a qualquer outra coisa entre 1 e 100 B's. Para além disso, pode haver uma série de entidades em B que não estão associadas a nenhuma entidade de A. Por outras palavras, o número de entidades de B poderá ser qualquer número n>1.
Alguns poderiam pensar que R seria convertido em (a,b), mas tal não acontece. Ao passar para o modelo relacional, o esquema de R vai ser (a,b,c), que corresponde à união da chave de A (que é a) com a chave de B (que é b,c).