2013-02-26 4 views
0

내가 ρ, ∪, π 만 다음과 같은 관계형 대수 연산 {σ를 사용하여 모든 여성 직원의 자녀들의 각각의 생일을 검색하고 싶은이 테이블관계 대수는

Employee(ssn, name, sex, address, salary, bdate, dno, superssn) 
fk:superssn is ssn in Employee 
fk:dno is dnumber in Department 

Department(dnumber, dname, mgrssn, mgrstartdate) 
fk:mgrssn is ssn in Employee 

Dept_locations(dnumber, dlocation) 
fk:dnumber is dnumber in Department 

Project(pnumber, pname, plocation, dnum) 
fk:dnum is dnumber in Department 

Dependent(essn, dependent_name, sex, bdate, relationship) 
fk: essn is ssn in Employee 

Works_on(essn,pno,hours) 
fk: essn is ssn in Employee; pno is pnumber in Project 

가 조회 -, ×}.

지금까지 나는 π bdate (σ {sex = 'f'} 종업원) x (σ {관계 = '자녀'} 종속성)하지만 그것이 옳다고 생각하지 않습니다.

답변

0

x는 무엇을 나타 냅니까? 자연스러운 조인? 데카르트 제품?

Cartesian 제품 인 경우 해당 Cartesian 제품에는 BDATE라는 별개의 두 속성이 있습니다. 당신은 그것을 처리해야합니다.

자연 결합 인 경우 BDATE 특성은 조인 필드의 일부가됩니다. 당신은 그것을 처리해야합니다.

+0

관계형의 대수는 항상 데카르트 조인입니다. –

0

π bdate (σ{sex = 'f'} Employee) x (σ{relationship='child'} Dependent)은 모호합니다. 모든 여성 직원과 관련이없는 모든 여성 직원이 참여합니다.

(σ{sex='f'} π(ssn, sex)Employee) ...something... 
(σ{relationship='child'} π(essn, bdate, relationship)Dependent) 

을 그리고 그들과 합류 : 이제 가입 튜플을 선택할 수 있습니다

π(ssn, sex)Employee ...something... π(essn, bdate, relationship)Dependent 

:

어떤 관계 대수 표현에서

, 당신은 관심있는 특성을 투영함으로써 시작
(σ{sex='f'} π(ssn, sex)Employee) × 
(σ{relationship='child'} π(essn, bdate, relationship)Dependent) 

각 종업원의 부양 가족 만 선택하십시오 :

관계형 대수에 대한 지식이 있다면

π(bdate)(σ{ssn=essn} ((σ{sex='f'} π(ssn, sex)Employee) × 
(σ{relationship='child'} π(essn, bdate, relationship)Dependent))) 

, 당신은 내가 가장 효율적인 방법으로 이런 짓을하지 않았 음을 의심 할 수 있습니다 :그에서

σ{ssn=essn} ((σ{sex='f'} π(ssn, sex)Employee) × 
(σ{relationship='child'} π(essn, bdate, relationship)Dependent)) 

, 종속 생년월일을 선택합니다. 당신은 정확할 것이지만, 이것은 각 단계를 따로 따로 보여줍니다. 이 쿼리를 최적화하는 것은 독자를위한 연습 과제로 남겨 둡니다.