다음과 같이 ‘학과’와 ‘학생’ 테이블을 생성하고 UPDATE 질의문 … | [7급 국가직 데이터베이스론] 24년 1회차 기출문제 상세 페이지
1[7급 국가직 데이터베이스론] 24년 1회차
다음과 같이 ‘학과’와 ‘학생’ 테이블을 생성하고 UPDATE 질의문 (가)를 실행할 때, 이에 대한 설명으로 옳은 것은?CREATE TABLE 학과 (
학과명 VARCHAR(20), 전화번호 VARCHAR(20),
PRIMARY KEY(학과명)
);
CREATE TABLE 학생 (
학번 VARCHAR(20), 이름 VARCHAR(20),
학과 VARCHAR(20), PRIMARY KEY(학번),
FOREIGN KEY(학과) REFERENCES 학과(학과명)
);
UPDATE 학생 SET 학과 = ‘AI소프트웨어학과’ WHERE 학과
=‘소프트웨어학과’; --- (가)
1
질의문 (가)를 실행하면 개체 무결성 제약조건을 위반하게 된다.
2
‘학생’ 테이블에 학과가 ‘AI소프트웨어학과’인 투플이 존재하면 질의문 (가)는 실행되지 않는다.
3
질의문 (가)는 ‘학생’ 테이블에 있는 모든 투플의 학과 값을 ‘AI소프트웨어학과’로 변경한다.
4
학과명이 ‘AI소프트웨어학과’인 투플이 ‘학과’ 테이블에 존재하지 않으면, 질의문 (가)는 참조 무결성 제약조건을 위반한다.
해설
외래키 학과는 학과 테이블의 학과명을 참조하므로, ‘AI소프트웨어학과’가 학과 테이블에 없으면 (가)는 참조 무결성 제약조건을 위반한다.
외래키 값은 NULL이거나 참조 테이블의 기본키 값 중 하나여야 한다. 따라서 바꿀 값이 학과 테이블에 먼저 존재해야 갱신이 허용된다.
- 개체 무결성 위반: 개체 무결성은 기본키(학번)의 NULL·중복 금지인데, (가)는 기본키를 바꾸지 않는다.
- 학생 테이블에 같은 학과 투플이 이미 있으면 실행 불가: 학과 속성은 기본키도 UNIQUE도 아니므로 같은 값이 여러 투플에 있어도 된다.
- 모든 투플의 학과 변경: WHERE 조건에 따라 학과가 ‘소프트웨어학과’인 투플만 변경된다.
오류나 개정된 내용이 보이면 알려주세요