■ 데카르트곱(Descartes product) 또는 카티션 프로덕트(Cartesian product), CROSS JOIN
데카르트곱 (Descartes product, Cartesian product)
임의의 두 집합 A와 B에 대해 x∈A, y∈B인 모든 순서쌍 (x, y)로 이루어진 집합을 A와 B의 데카르트곱이라 하고, A×B로 표현한다
A × B = { (x, y) | x∈A, y∈B }
2013년 52번
정답 : 3번
차수 7, 카디날리티 9
-- SAMPLE SQL(오라클)
-- MY SQL 하고 문법이 달라요 ㅠㅠ
CREATE TABLE STU_52
(
SNO CHAR(4)
, SNAME VARCHAR2(50) NOT NULL
, ADDR VARCHAR2(4)
, SCORE NUMBER
, DEPT CHAR(3)
)
;
ALTER TABLE STU_52
ADD CONSTRAINT STU_52_PK PRIMARY KEY (SNO);
INSERT INTO STU_52 VALUES ('9801', '홍길동', '서울', 80, '100');
INSERT INTO STU_52 VALUES ('9802', '김철수', '대전', 90, '200');
INSERT INTO STU_52 VALUES ('9803', '이순자', '강릉', 90, '100');
INSERT INTO STU_52 VALUES ('9805', '홍길동', '부산', 95, '200');
INSERT INTO STU_52 VALUES ('9806', '박남정', '서울', 65, '300');
COMMIT;
SELECT * FROM STU_52;
CREATE TABLE DEPT_52
(
DNO CHAR(3)
, DNAME VARCHAR2(4) NOT NULL
)
;
ALTER TABLE DEPT_52
ADD CONSTRAINT DEPT_52_PK PRIMARY KEY (DNO);
INSERT INTO DEPT_52 VALUES ('100', '정통');
INSERT INTO DEPT_52 VALUES ('200', '전자');
INSERT INTO DEPT_52 VALUES ('300', '기계');
ALTER TABLE STU_52
ADD CONSTRAINT STU_52_FK FOREIGN KEY (DEPT) REFERENCES DEPT_52(DNO);
COMMIT;
SELECT * FROM DEPT_52;
SELECT * FROM STU_52 S, DEPT_52 D WHERE S.DEPT > '100';
2019년 68번
정답 : 4번
아무런 조인 조건이 없으므로 CROSS JOIN, 카티션 프로덕트(X)가 발생함
R의 카디날리티(튜플 수) 4와 S의 카디날리티 5가 곱하기 되어 COUNT(*)는 20이 됨