Olá,
Fui conferir o gabarito para o item L do exercício 1 e fiquei com uma dúvida. Por que utilizamos a relação Peças nesse caso?
Não seria possível usar só Catálogo e Fornecedor? Já que se as peças não são fornecidas não precisam aparecer.
Olá,
Fui conferir o gabarito para o item L do exercício 1 e fiquei com uma dúvida. Por que utilizamos a relação Peças nesse caso?
Não seria possível usar só Catálogo e Fornecedor? Já que se as peças não são fornecidas não precisam aparecer.
Oi, Vinicius.
Dá para substituir a relação Peças por Catálogo nesse item:
Resposta do gabarito:
{ p.codp | Peca(p) AND ( NOT(∃f)( Fornecedores(f) AND NOT ( (∃c)( Catalogo(c) AND c.codf = f.codf AND c.codp = p.codp AND c.preco <= 200 ) ) ) ) }
Nova resposta:
{ c1.codp | Catalogo(c1) AND ( NOT(∃f)( Fornecedores(f) AND NOT ( (∃c2)( Catalogo(c2) AND c2.codf = f.codf AND c2.codp = c1.codp AND c2.preco <= 200 ) ) ) ) }
Se tiremos Peças, não temos como escapar de usar duas variáveis-tupla diferentes para "percorrer" Catálogo.
Você tem alguma outra sugestão de resposta?
Kelly
A minha resposta tinha sido:
{ C.codp | Catalogo(C) and (∀F)((NOT Fornecedores(F) or (C.codf=F.codf and C.preço <= 200))}
Não entendi direito a questão de "percorrer" o Catálogo.
Vinicius,
Você escreveu a seguinte consulta:
Para cada tupla C em Catálogo, exiba C.codp se (C.preço <= 200 e , para todas as tuplas F em Fornecedor, é verdade que C.codf = F.codf ).
O resultado dessa consulta vai ser sempre vazio, pois a parte em negrito só pode ser verdade para, no máximo, uma só tupla de Fornecedor (e não todas).
Kelly
Entendi o problema, professora.
Obrigado.