아래와 같이 관계가 설정된 데이터베이스에 [Customer] 테이블에는… | [컴퓨터활용능력 1급 필기] 20년 2회차 기출문제 상세 페이지
1[컴퓨터활용능력 1급 필기] 20년 2회차
아래와 같이 관계가 설정된 데이터베이스에 [Customer] 테이블에는 고객번호가 1004인 레코드만 있고, [Artist] 테이블에는 작가이름이 CAT인 레코드만 있다. 다음 중 이 데이터베이스에서 실행 가능한 SQL 문은? (단, SQL문에 입력되는 데이터 형식은 모두 올바르다고 간주함)
1
INSERT INTO Artist VALUES ('ACE', '한국', Null, Null);2
INSERT INTO CINTA (고객번호, 작가이름) VALUES (1004, 'ACE');
3
INSERT INTO Customer (고객번호, 고객이름) VALUES (1004, 'ACE');
4
INSERT INTO CINTA VALUES (1234, 'CAT', '유화');
해설
관계 그림을 보면 Artist 테이블은 '작가이름'이 기본 키이고 국적·생일·사망일 필드를 가지며, Customer 테이블은 '고객번호'가 기본 키이다. 가운데 CINTA 테이블은 '고객번호'와 '작가이름' 두 필드가 함께 기본 키인 연결 테이블이고 '작품종류' 필드를 추가로 가진다. Artist와 CINTA, Customer와 CINTA는 각각 일대다(1:∞) 관계로 연결되어 있으므로, CINTA에 들어가는 작가이름과 고객번호는 반드시 각 원본 테이블에 이미 존재해야 한다(참조 무결성).
이 조건에서 Artist 테이블에 작가이름이 'ACE'인 새 레코드를 추가하는 문은 실행할 수 있다. Artist에는 'CAT'만 있으므로 기본 키 'ACE'는 중복이 아니고, Artist는 관계에서 '일(1)' 쪽이라 다른 테이블의 값을 참조할 필요도 없기 때문이다. 값 목록도 필드 수 네 개와 맞고, 기본 키가 아닌 생일·사망일에는 Null을 넣을 수 있다.
반면 CINTA에 작가이름 'ACE'를 넣는 문은 Artist에 'ACE'가 아직 없으므로, CINTA에 고객번호 1234를 넣는 문은 Customer에 1234가 없으므로 각각 참조 무결성 위반으로 실행되지 않는다. 또 Customer에 고객번호 1004를 추가하는 문은 이미 1004인 레코드가 있어 기본 키 중복으로 실패한다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
