Pesquisa de álgebra relacional SQL

Estou em branco.

Tenho um esquema que tem duas relações. Um é o empréstimo que tem os atributos loan-number, branch-name and amount. A segunda relação é o mutuário que tem o nome do cliente e o número do empréstimo como seus atributos. Estas duas relações estão ligadas através do número de empréstimos.

Como iria escrever uma consulta em álgebra relacional se quisesse encontrar os nomes de todos os clientes com um saldo inferior a 10000.

Só por curiosidade ... eu também faria isso como uma consulta SQL básica.

Author: illabout, 2014-01-08

3 answers

Faça alguma pesquisa sobre álgebra relacional 8 principais operadores: restrição, projeção, produto cartesiano, união, interseção, diferença de conjuntos e divisão.

Para responder à tua pergunta:

loan(loan_number, branch_name, amount)
borrower(customer_name, loan_number)

Realizar uma junção natural de ambas as relações, aplicar a restrição (saldo inferior a 10000) e, em seguida, exibir os nomes com o uso de uma projeção. As duas seguintes expressões de álgebra relacional abaixo responderão à sua pergunta.relational algebra code

meaning of symbols

Ambos as expressões avaliam para a seguinte pesquisa SQL:

select customer_name
from borrower b, loan l
where b.loan_number=l.loan_number and amount>10000;
 4
Author: D. Rattansingh, 2014-01-08 14:01:39

Disclaimer: eu não estou muito familiarizado com álgebra relacional.

O SQL pode ser rapidamente visto como a utilização de uma junção interna implícita e, em seguida, de um filtro emprestado.montante:

SELECT customer-name
FROM Borrower, Loan
WHERE Customer.loan-number = Loan.loan-number
 AND Loan.amount > 10000

E depois traduzir isto para uma álgebra relacional, tendo em mente que os seguintes símbolos são os únicos necessários para isto:

A operação selecionada (σ): - identificar um conjunto de tuplas que faz parte de uma relação e extrair apenas essas tuplas. A operação seleccionar selecciona tuplas que satisfazer um determinado predicado ou condição.

A operação do projecto (Π): - devolve a sua relação de argumento com certos atributos excluídos.

 Π customer-name (σ Borrower.loan-number=Loan.loan-number (σ Loan.amount>10000 (Borrower X Loan)))
 1
Author: Squirrel, 2014-01-08 14:10:29
Acho que o SQL seria relativamente simples... algo como o seguinte provavelmente será suficiente:
SELECT 
  b.customer-name,
  SUM(l.amount)
FROM
  borrower b
  JOIN loan l
    ON b.loan-number = l.loan-number
GROUP BY
  b.customer-name
HAVING
  SUM(l.amount) < 10000
 0
Author: NetsydeMiro, 2014-01-08 13:55:40