2016-10-19 4 views
0

{name, pet} 속성을 가진 Persons 테이블이 있습니다. 각 종류의 애완 동물 (dog, cat, bird) 중 하나를 가지고있는 사람들의 이름은 어떻게 선택합니까?하지만 애완 동물이 테이블에 있으면 애완 동물의 각 종류 중 하나만 가지고 있습니다.관계형 대수에서 "하나씩"행 선택

예 : Bob, DogBob, Cat이 표의 유일한 행입니다. 따라서 Bob에는 애완 동물의 각 종류 중 하나가 있습니다. 그러나 Lynda, Bird이 추가되면 Bob에는 더 이상 애완 동물 유형이 하나씩 없습니다.

이 첫 번째 단계는 π(pet)입니다. 관계형 대수가 중복을 제거하기 때문에 모든 종류의 애완 동물 목록을 얻을 수 있습니다. 이 후에 무엇을해야할지 모르지만, π(pet)Persons에 가입해야한다고 생각합니다.

자연 결합 및 교차 제품과 같은 몇 가지 시도를했지만 아직 결과에 도달하지 못했으며 아이디어가 없습니다.

+0

설명이 명확하지 않습니다. 어쩌면 당신은 "그들이 테이블에 나타나는 각 종류의 애완 동물 중 하나를 가지고있는 곳"을 의미 할 것입니다. 자연 언어로 자신을 분명히하지 않으면 RA에서 어떻게 명확해질 것으로 기대합니까? 또는 특정 RA 표현이 무엇을 말하고 있다고 주장하는 것을 정당화 할 수 있습니까? 정확한 임무는 무엇 이었습니까? (더 많은 열이 있다면 "하나"는 "정확히 하나"또는 "하나 이상"이어야합니다.) – philipxy

답변

0

질문에 대한 대답은 Division operator 찾을 수 있습니다 :

사람 ÷ π 애완 동물이 관계 대수의 표현이 모든 이름을 포함, 단 열 name와의 관계를 반환

(사람) 모든 종류의 애완 동물을 가지고있는 사람의 현재Persons 테이블에 있습니다.

부분은 어떤 의미에서는 제품 연산자의 역함입니다 (이름은이 사실에서 정확히 파생됩니다). 이는 투영, 집합 차이 및 제품 (예 : answer 참조)의 관점에서 정의 할 수있는 파생 연산자입니다.