데이터베이스

SQL _중복 릴레이션(테이블), 차수(degree)와 카디날리티(cardinality), Sailors, Reserves, boats

스윙스윙 2021. 8. 21. 12:10

▣ SQL _중복 릴레이션(테이블), 차수(degree)와 카디날리티(cardinality)

2014년 73번

정답 : 2번

차수(degree)는 SID, SNAME 2개, 카디날리티(cardinality)는 총 3개

B1.color = 'red' AND B2.color = 'green'이므로 bid는 (102, 103) 혹은 (103, 104)이어야 하며 해당하는 bid인 sid는 31, 64, 74임

 

 

 

-----------------------------------------------------------------
-- 2014년 정보시스템감리사 DB 73번

CREATE TABLE SAILORS_73
(
  SID INT
, SNAME VARCHAR(20) NOT NULL
, RATING INT
, AGE FLOAT
, PRIMARY KEY (SID)
)
;

INSERT INTO SAILORS_73 VALUES (22, 'Dustin', 7, 45.0);
INSERT INTO SAILORS_73 VALUES (29, 'Brutus', 1, 33.0);
INSERT INTO SAILORS_73 VALUES (31, 'Lubber', 8, 55.5);
INSERT INTO SAILORS_73 VALUES (32, 'Andy', 8, 25.5);
INSERT INTO SAILORS_73 VALUES (58, 'Rusty', 10, 35.0);
INSERT INTO SAILORS_73 VALUES (64, 'Horatio', 7, 35.0);
INSERT INTO SAILORS_73 VALUES (71, 'Zorba', 10, 16.0);
INSERT INTO SAILORS_73 VALUES (74, 'Horatio', 9, 35.0);
INSERT INTO SAILORS_73 VALUES (85, 'Art', 3, 25.5);
INSERT INTO SAILORS_73 VALUES (95, 'Bob', 3, 63.5);

SELECT * FROM SAILORS_73;

DROP TABLE RESERVES_73;

CREATE TABLE RESERVES_73
(
  SID INT
, BID INT
, SDAY DATE
)
;

INSERT INTO RESERVES_73 VALUES (22, 101, '2014-10-04');
INSERT INTO RESERVES_73 VALUES (22, 102, '2014-10-05');
INSERT INTO RESERVES_73 VALUES (22, 104, '2014-07-06');
INSERT INTO RESERVES_73 VALUES (31, 101, '2014-10-01');
INSERT INTO RESERVES_73 VALUES (31, 103, '2014-06-02');
INSERT INTO RESERVES_73 VALUES (31, 104, '2014-12-03');
INSERT INTO RESERVES_73 VALUES (64, 102, '2014-06-02');
INSERT INTO RESERVES_73 VALUES (64, 103, '2014-10-04');
INSERT INTO RESERVES_73 VALUES (74, 103, '2014-08-09');
INSERT INTO RESERVES_73 VALUES (74, 104, '2014-04-18');

SELECT * FROM RESERVES_73;

CREATE TABLE BOATS_73
(
  BID INT
, BNAME VARCHAR(20) NOT NULL
, COLOR VARCHAR(20) NOT NULL
, PRIMARY KEY (BID)
)
;

INSERT INTO BOATS_73 VALUES (101, 'Interlake', 'blue');
INSERT INTO BOATS_73 VALUES (102, 'Interlake', 'red');
INSERT INTO BOATS_73 VALUES (103, 'Clipper', 'green');
INSERT INTO BOATS_73 VALUES (104, 'Marine', 'red');

SELECT * FROM BOATS_73;

SELECT S.SID AS SID, S.SNAME AS SNAME
FROM SAILORS_73 S, RESERVES_73 R1, BOATS_73 B1, RESERVES_73 R2, BOATS_73 B2
WHERE S.SID = R1.SID AND R1.BID = B1.BID
AND S.SID = R2.SID AND R2.BID = B2.BID
AND B1.COLOR = 'red' AND B2.COLOR = 'green';