UFO ET IT

관계형 대수로 MAX를 어떻게 찾을 수 있습니까?

ufoet 2021. 1. 5. 08:26
반응형

관계형 대수로 MAX를 어떻게 찾을 수 있습니까?


데이터베이스로 작업하면서 관계형 대수를 사용하여 MAX를 어떻게 찾을 수 있습니까?


단일 속성 'a'가있는 관계 A가 있다고 가정합니다 (이에 대해 더 복잡한 관계를 줄이는 것은 관계형 대수학에서 간단한 작업입니다. 여기까지 도달했다고 확신합니다). 이제 최대 값을 찾고 싶습니다. A의 값.

이를 수행하는 한 가지 방법은 자신과 A의 외적을 찾는 것입니다. 'a'의 이름을 변경하여 새 관계가 고유 한 이름을 가진 속성을 갖도록하십시오. 예를 들면 :

( 'a'를 'a1'로 이름 변경) X ( 'a'를 'a2'로 이름 변경)

이제 'a1'< 'a2'를 선택하면 결과 관계는 최대 값을 제외한 모든 값을 갖게됩니다. 최대 값을 얻으려면 원래 관계의 차이를 찾으십시오.

(A x A) - (select 'a1' < 'a2') ((rename 'a' as 'a1')(A) x (rename 'a' as 'a2')(A))

그런 다음 projectTobi Lehman이 아래 설명에서 제안한대로 연산자를 사용하여 단일 열로 줄입니다.

관계형 대수 표기법으로 작성하면 (제 기억이 정확하다면) 될 것입니다. 최종 이름 바꾸기 (예 : ρ)는 원래 관계에서와 동일한 이름을 가진 속성으로 끝납니다.

ρ a / a1a1 ((A x A)-σ a1 <a2a1 / a (A) x ρ a2 / a (A))))


오늘이 문제를 직접 해결하려고했을 때 2 센트 만 남았습니다.

A = 1,2,3이라고 가정 해 보겠습니다.

사용하는 경우

A x A - (select 'a1' < 'a2') ((rename 'a' as 'a1')(A) x (rename 'a' as 'a2')(A))

1 | 1, 2 | 1,3 | 2,3 | 1,3 | 2,3 | 3과 같은 두 개의 열이 아니라 단일 최대 값을 얻지 못합니다.

3 개만 얻는 방법은

project(a)A - project(a1)((select 'a1' < 'a2') ((rename 'a' as 'a1')(A) x (rename 'a' as 'a2')(A)))

적어도 그것은 비슷한 상황에서해야 할 일입니다.

누군가에게 도움이되기를 바랍니다.


속성 A와 값 1,2,3과의 관계가 있다고 생각합시다.

A

1
2
3

그래서 지금 ..

프로젝트 A 값을 A1로 이름을 바꿉니다.

A1
1
2
3

다시 A 값을 프로젝트하고 A2로 이름을 바꿉니다.

A2
1
2
3

와이 가입 A2<A1\join_{A2<A1}
(A2 정수, A1 정수) : 출력 스키마 - 그래서를

A2<A1

1|2
1|3
2|3

우리가 join좋아 하기 때문에 항상 A2 값은 A1보다 작을 것 입니다 ( a2<a1)

이제 프로젝트 A2 출력은 다음과 같습니다.

A2
1
2

이제 원래 속성과 비교

A diff A2

A
1
2
3

 diff

A2
1
2

출력은 3최대 값입니다.

안녕하세요, 어떤 사람이 더 나은 모습을 위해 편집을 도와야한다는 것을 알고 있습니다


지금은 관계형 대수 구문의 대부분을 잊어 버렸습니다 . 쿼리는 사용하여 SELECT, PROJECT, MINUSRENAME

SELECT v1.number
FROM values v1
MINUS
SELECT v1.number
FROM values v1 JOIN values v2 ON v2.number > v1.number

번역 할 수 있기를 바랍니다.


나는 이것이 오래되었다는 것을 알고 있지만 여기에 손으로 쓴 공식이 있습니다.

enter image description here

관계 A : 1,2,3,4

1. First we want to PROJECT and RENAME relation A
2. We then to a THETA JOIN with the test a1<a2
3. We then PROJECT the result of the relation to give us a single set of values 
   a1: 1,2,3 (not max value since a1<a2)

4. We then apply the difference operator with the original relation so: 
   1,2,3,4 --- 1,2,3 returns 4

   4 is the Max value.

MAX 찾기 :

  • 전략:

    1. Find those x that are not the MAX.

      • Rename A relation as d so that we can compare each A x with all others.
    2. Use set difference to find those A x that were not found in the earlier step.

  • The query is: enter image description here


 Project x(A) - Project A.x
(Select A.x < d.x (A x Rename d(A)))

ReferenceURL : https://stackoverflow.com/questions/5493691/how-can-i-find-max-with-relational-algebra

반응형