NLP Learner in Switzerland

Relational Algebra(RA), Domain Relational Calculus(DRC) 쿼리 예제 본문

Database SQL/Exercise

Relational Algebra(RA), Domain Relational Calculus(DRC) 쿼리 예제

초코빵 2021. 4. 23. 10:00
728x90
반응형

 

Mondial_database.pdf
0.07MB

 

RA 및 DRC 쿼리 예제

 

 

 

[답]

 

RA

1. π name(desert) 

2. π area(σ name='Madagascar'(island))

3. π countryname, name(ρ countryname←name, country←code(country)⨝language)

4. π mountain(geoMountain⨝(π country(ρ country←code(country))\π country(geoSea))}

5. (ρ country2←country(π country(economy))) \ π country2(ρ country1←country,GDP1←GDP(π country,GDP (economy))⨝GDP1<GDP2(ρ country2←country,GDP2←GDP(π country,GDP (economy))))

* 하 진짜 개복잡하다 ㅡㅡ

* 일단 max, min같은게 나오면 두개의 비교가 무조건 들어가기 때문에 같은 relation을 두번 불러오게 된다.

* 각각의 economy1, 2 relation에서 country와 GDP 컬럼을 가져와서 축소시키는 것까지는 동일

* 그 이후 각각 불러온 컬럼들의 이름을 따로 명명해준다 country1,2 gdp1,2 그래야 비교할 수 있으니깐

* GDP1<GDP2로 GDP가 더 큰 애들을 찾아내고, 이 애들을 전체에서 빼준다(\)

* e.g. 아래와 같은 Economy relation에서 \역슬래시 앞은 A,B,C 전체가 나오고, 역슬래시 뒤에는 B,C만 나오므로 빼주면 가장 작은 A만 남는다.

Economy
국가 GDP
A 100
B 200
C 300

6. π countryname((ρ country←code, countryname←name(country) ethnicGroup)÷π name(ethnicGroup))

* 이건 3번을 풀어도 저 나누기만 빼고 다 맞는다... 맨날 왜 나누기가 생각이 안나냐

* RA에서 나누기는, 나눠지는 애를 전부 포함하는 결과값을 찾을 때 쓴다. 나눠지는 애를 최대한 커버하는 결과값을 내놓기 때문이다.

* 뭔말이냐면 e.g. 7÷3=2.xxx 이다. 여기서 2가 몫인 이유는, 7은 3을 2번 최대한 커버할 수 있기 때문이다. 동일하게,

* π name(ethnicGroup))는 전체 ethnicGroup 리스트가 도출되는데, 이 전체 ethnicGroup 리스트를 커버하는 국가를 찾아내는 것이다.

 

DRC
 

1. {<n>|∃a,c(<n,a,c>∈desert)}

2. {<a>|∃i,h,t,c(<'Madagascar',i,a,h,t,c>∈island)}

3. {<n1,n2>|∃p(<c,n1,p>∈language∧∃c,ca,pr,a,po(<c,n2,ca,pr,a,po>∈country))}

4. {<m>|∃c,p1(<m,c,p1>∈geoMountain∧¬∃s,p2(<s,c,p2>∈geoSea))}

5. {<c1>|∃g1,a1,s1,i1,if1(<c1,g1,a1,s1,i1,if1>∈economy∧ c2,g2,a2,s2,i2,if2(<c2,g2,a2,s2,i2,if2>∈economy g1≤g2))}

* 'GDP1(g1)이 GDP2(g2)보다 작음'을 만족하는 모든 경우에서 true인 c1을 찾는다.

6. {<n>|∃c,ca,pr,a,po(<c,n,ca,pr,a,po>∈country∧ c1,e,p1(<c1,e,p1>∈ethnicGroup∃p2(<c,e,p2>∈ethnicGroup)))}

* 아무리 생각해도 왜 답이 이건지 진심 모르겠음. 주변에 물어보는 중...

 

 

 

 

Comments