2012-02-07 2 views
2

두 열 (예 : 시작 및 끝 가중치) 간의 최대 차이를 얻을 수 있습니까?관계 대수를 사용하는 열 간의 최대 차이

지금 당장은 각 열의 두 열 사이의 차이가있는 새 열이 필요하므로 no로 기울여야합니다. 그런 다음 최대 값을 취하십시오. 선택 작업 조건에서 산술 연산이 허용되지 않기 때문에 (예 : SIGMA (c1 - c2 < c3 - c4) (표) 허용되지 않음) 의도 한 방식대로 작동하지 않습니다.

공개 : 이는 숙제 문제의 일부입니다.

+1

올바르게 이해했다면 "두 열 사이의 최대 차이"의 결과는 스칼라 값이지만 모든 관계 연산의 결과는 관계입니다. – onedaywhen

답변

0

당신은 현실 세계에서이 일을 찾고 있다면, 당신은 (거의 똑같은 금액 또는 뷰) 하위 쿼리와 같은이 작업을 수행 할 수 있어야한다 :

select max (diff) from (
    select high - low as diff from blah blah blah 
) 

이것이 관계형 대수학의 추상 세계에 적용되는지 여부는 말할 수 없습니다. 나는 그 실제 세계의 문제를 해결하기에는 너무 바쁩니다. :-)

1

정확하게 계획 한대로 수행 할 수 있지만이를 위해 일반화 된 프로젝션이 필요합니다. 일반화 돌기 R은 관계되는 연산자

Π(E1, E2,..., En)R 

이고, E1 ... 욕실은 A 및 B는 R 또는 상수의 특성 인 형태 a⊕b에 표현하고, ⊕는 임의 그들 사이의 이항 연산자. 결과는 E1 ... En 속성과의 관계입니다.

이렇게하면 차이를 새 관계 (R ': = Π (x-y) R)로 투영 한 다음 계획 한대로 최대 값을 찾을 수 있습니다.

우리가 일반화 된 투영법을 사용할 수 없다면, 실제로 투영법의 정의에서 속성 이름 만 허용하므로 다른 속성에서 실제로 속성을 뺄 수있는 방법이 없다고 생각합니다. 선택의 정의는 a와 b의 형식의 표현식 만 허용합니다. 여기서 a와 b는 속성 또는 상수이고 θ는 이진 관계 연산자입니다 (이 방식은 논리적입니다. 관계 R (X, Y)가있는 경우 X 또는 Y의 유형에 대한 아이디어가 없기 때문에 조작이 중요하지 않습니다.

일반화 된 투영법은 관계형 대수의 큰 확장이라고 생각합니다. 실생활에서 분명히 대단히 유용합니다. 더 과학적인 관점 에서조차도 옹호 될 수 있습니다. "X> 50"과 같은 값에 대해 2 진 조건부 연산자를 허용하면 유형을 이미 가정하고 그 점을 렌더링합니다 미안해. 하지만 강사가 의견을 달리 할 수도 있습니다.