2012-11-19 3 views
0

나는 데이터베이스 테스트를 내일하고 누군가가 나를 위해이 대답을 확인할 수 있기를 바랍니다. 나는이의 스키마를 가지고 말 :이 관계형 대수가 정확한가?

branch (branch_name, branch_city, assets) 
customer (customer_name, customer_street, customer_city) 
account (account_number, branch_name, balance) 
loan (loan_number, branch_name, amount) 
depositor (customer_name, account_number) 
borrower (customer_name, loan_number) 

내가 궁금합니다 질문 : 는 "이상 £ 5,000의 대출 그러나 더 £ 이하의 잔액이없는 계정이있는 모든 고객의 이름을 찾아라 500. "

원래 코드 :

π customer_name 
    (σ amount > 5,000^balance < 500 
    (borrower ⋈ loan ⋈ depositor ⋈ account)) 

편집 :

π customer_name 
    (σ amount > 5,000 (borrower ⋈ loan)) 
- 
π customer_name 
    (σ balance < 500 (depositor ⋈ account)) 

가 올바른지인가요 : 어윈 Smout의 조언을 보았다면서, 나는 다음에 내 코드를 수정했습니다?

+0

이것은 대학 숙제처럼 보입니다. [sqlfiddle] (http://sqlfiddle.com/) 예제를 설정할 수 있습니까? –

+0

안녕하세요. 실제 SQL 쿼리를 실행하지 않고 sqlfiddle이 작동하지만 관계형 대수 연산자는 작동합니까? –

+0

아마도 그렇지 않습니다. 그것이 언제 효과가 있었는지 어떻게 알았습니까? 어떻게 테스트 해볼까요? 증거를 써요? 이것은 [프로그래머 StackExchange] (http://programmers.stackexchange.com)에게 더 좋은 질문이 될 것입니다. –

답변

0

저는 지금 그것이 정확하다는 것을 알고 있기 때문에 제 질문 만 대답 할 것입니다. 도와 주신 모든 분들께 감사드립니다.

π customer_name (σ amount > 5,000 (borrower ⋈ loan))  
- 
π customer_name (σ balance < 500 (depositor ⋈ account)) 
+0

테스트 성공 ... –

+0

조언 주셔서 감사합니다! –

2

아니요. 올바르지 않습니다. "그러나 계정이 없다 ..."라는 말은 관계형 차이 연산자를 어딘가에서 사용해야한다는 것을 나타냅니다.

+0

그게 내가 생각한거야,하지만 내 쿼리가 재미있어 보이지만 나는 그것이 작동하지 않을 이유가 아무것도 볼 수 없습니다. 이 쿼리에서 집합 차이 쿼리를 사용하는 방법을 잘 모르겠습니다. 어떤 아이디어? –

+0

검색어는 항상 '작동'합니다. 그렇다고해서 주어진 문제에 대한 올바른 해결책이기도하지 않습니다. 귀하의 질의는 귀하가 500보다 큰 대출을 가지고있는 고객의 이름을 제공합니다. 그것이 주어진 문제와 어떻게 다른지보십시오. –

+0

무슨 뜻인지 알 겠어. 나는 그것을 해결하는 방법을 모르겠습니다. 책에 충돌합니다. –