2014-09-09 6 views
0

선택 및 투영 연산자를 사용해야하는 시점을 이해하려고합니다. 현재 나의 선택은 선택은 지정된 기준에 맞는 튜플을 반환하고, 투영은 그것이 적용되는 관계로부터 새로운 관계를 생성하지만, 지정된 속성으로 만 생성된다는 것이다. 예를 들어 관계 "관계"에서 지정된 속성 값관계형 대수, 이러한 쿼리에서 투영 및 선택을 사용하는 경우?

σ(attribute="criteria"^(relation)) 

반환 모든 튜플.

Π name (relation) 

은 "기타"속성을 무시하고 "관계"관계에서 이름 목록을 찾습니다. 이 샘플 데이터베이스에서

과 별표 마크 주 키 : M & T 은행을 위해 일하는 모든 직원의 이름을 찾기

A) :

employee(*personName*, street, city) 
works(*personName*, companyName, salary) 
company(*companyName*, city) 
manages(*personName*, managerName) 

나는해야한다.

Π personName(σcompanyName = “M&T Bank” ^(works)) 

나) 데이터베이스에 기록 될 수있는 모든 회사의 이름을 찾습니다.

Π companyName (company) 

C) 관리자가 아닌 모든 직원의 이름을 찾습니다.

Π personName (works) - ΠpersonName(manages) 

기본적으로 위의 쿼리 시도가 맞습니까? 그리고이 연산자에 대한 나의 이해가 정확하고 완전합니까?

답변

0

답 A)가 맞습니다. (또한 사용자의 표기법에 ^의 의미가 무엇인지 모르므로 무시했습니다).

는 B의 경우에는 회사가 기업 테이블뿐만 아니라 작품 표에뿐만 아니라 기록 될 수 있음을 유의하십시오. 따라서 대답은 Π companyName (company) U Π companyName (works)이어야합니다.

C의 경우 직원 식별에 약간주의해야합니다. 이전의 직원이 여전히 직원에 속하지만 에없는 사람들은으로 간주되어야합니다. 교사 (또는 교사)의 견해에 따라 Π personName (works) 대신 Π personName (works) U Π personName (employee)을 사용해야 할 수도 있습니다.

C에서 더 심각한 문제는 관리자 식별입니다. ΠpersonName(manages)은 관리자가 아닌 개인이 관리합니다. 관리자는 Π managerName(manages)입니다.

따라서 C의 경우 (Π personName (works) U Π personName (employee)) - Π managerName(manages)을 선호 할 수 있습니다.

일반적으로 투영 및 선택에 대한 이해는 정확하지만 답변을 공식화 할 때는 약간주의해야합니다.

+0

캐럿은 위 첨자로 표시되어 있습니다. 죄송합니다. 이 모든 것이 의미가 있습니다. 도움이 될만한 답장을 보내 주셔서 대단히 감사합니다. –