SQLD · SQL 개발자
식별자와 키
식별자는 1과목에서 가장 출제 비중이 높은 주제입니다. 주식별자·보조식별자, 단일·복합, 본질·인조, 내부·외부라는 네 가지 분류 축을 서로 섞지 않고 구분해 두는 것이 핵심입니다. 분류 축을 섞으면 보기 네 개가 전부 그럴듯해 보입니다.
이 주제에서 다루는 내용
- 주식별자가 갖추어야 할 조건 — 유일성, 최소성, 불변성, 존재성
- 주식별자와 보조식별자의 구분
- 본질식별자와 인조식별자, 인조식별자를 쓸 때의 대가
- 내부식별자와 외부식별자(외래식별자)
- 식별관계와 비식별관계가 식별자 상속에 미치는 영향
자주 틀리는 지점
- 주식별자 조건에 "최소성"을 빼고 고르는 실수. 불필요한 속성이 붙으면 주식별자가 아닙니다.
- 인조식별자를 무조건 좋은 선택으로 보는 보기. 중복 데이터를 걸러내지 못하는 대가가 있습니다.
- 식별관계와 비식별관계를 자식 식별자 구성과 연결하지 못하는 경우.
연습문제 3문항
아래 문항은 오리지널 문제입니다. 기출문제가 아닙니다.
다음 중 엔터티(Entity)의 특징에 대한 설명으로 옳지 않은 것은?
- A. 엔터티는 업무에서 관리하고자 하는 정보의 단위이며, 실체가 있는 것과 개념적인 것 모두 해당될 수 있다.
- B. 엔터티의 인스턴스는 유일한 식별자에 의해 식별 가능해야 하며, 둘 이상의 인스턴스가 존재해야 한다.
- C. 엔터티는 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다.
- D. 엔터티는 속성을 갖지 않아도 되며, 업무 프로세스와 무관하게 정의될 수 있다.
정답: D
해설. 엔터티는 반드시 속성을 가져야 하며 업무에서 필요로 하는 정보를 관리해야 한다. D는 이를 부정하므로 틀림. A는 유무형 엔터티 분류, B는 식별자·인스턴스 조건, C는 관계 필수 특성을 각각 올바르게 설명한다.
다음 정규화 과정에서 발생할 수 있는 문제점으로 가장 적절한 것은? [학생 테이블] 학번, 이름, 전공코드, 전공명, 지도교수, 교수연락처가 하나의 테이블에 저장되어 있을 때, 제3정규형 적용을 위해 분해한 결과 [학생] 테이블(학번, 이름, 전공코드, 지도교수), [전공] 테이블(전공코드, 전공명), [교수] 테이블(지도교수, 교수연락처)로 분리되었다.
- A. 학생 테이블의 지도교수 컬럼이 교수 테이블의 지도교수와 참조무결성을 보장하지 못하여 데이터 일관성 문제가 발생할 수 있다.
- B. 전공 테이블의 전공코드가 중복 값을 허용하게 되어 데이터 중복이 증가하고 저장 공간 낭비가 발생한다.
- C. 분해된 테이블들을 조인할 때 원본 테이블의 정보를 완전히 복원할 수 없는 무손실 분해 조건을 위반한다.
- D. 제3정규형 조건을 만족하지 못한 분해로서, 학번이 전공코드와 지도교수를 동시에 결정하는 이행적 종속성이 여전히 존재한다.
정답: A
해설. 정답은 A입니다. 정규화 분해 시 교수 테이블의 지도교수 컬럼은 기본키 역할을 하는데, 학생 테이블의 지도교수는 외래키가 되어야 합니다. 하지만 동일한 컬럼명이라도 참조무결성 제약이 명시적으로 설정되지 않으면 데이터 일관성 문제가 발생할 수 있습니다. B는 전공코드가 전공 테이블의 기본키이므로 중복될 수 없습니다. C는 학번을 통해 모든 정보를 조인으로 복원 가능하므로 무손실 분해입니다. D는 학번→전공코드, 학번→지도교수의 직접 종속이므로 이행적 종속성이 제거된 올바른 제3정규형입니다.
다음 테이블 구조와 데이터를 바탕으로 주식별자의 특성에 대한 설명 중 옳지 않은 것은? [EMPLOYEE 테이블] EMP_ID | EMP_NAME | DEPT_ID | EMAIL -------|----------|---------|------- E001 | 김철수 | D01 | kim@company.com E002 | 이영희 | D01 | lee@company.com E003 | 박민수 | D02 | park@company.com E001 | 김철수 | D02 | kim2@company.com [DEPARTMENT 테이블] DEPT_ID | DEPT_NAME --------|---------- D01 | 개발팀 D02 | 마케팅팀 위 EMPLOYEE 테이블에서 EMP_ID를 주식별자로 가정할 때:
- A. 현재 데이터 상태로는 EMP_ID가 유일성(Uniqueness)을 위반하고 있으므로 주식별자로 적절하지 않다.
- B. EMP_ID는 최소성(Minimality)을 만족하며, 단일 컬럼으로 개체를 식별할 수 있다.
- C. 주식별자는 NOT NULL 제약조건을 가져야 하므로, EMP_ID 컬럼에 NULL 값이 허용되어서는 안 된다.
- D. 불변성(Invariability)은 주식별자 값이 부여된 이후 변경되지 않아야 한다는 특성으로, 이는 NULL 허용 여부를 의미하는 존재성(Existence)과 동일한 개념이다.
정답: D
해설. 정답 D. 불변성(값이 변경되지 않음)과 존재성(NULL 불허)은 서로 다른 별개의 특성이므로 동일하다는 설명은 틀리다. A는 EMP_ID 'E001' 중복으로 유일성 위반이 맞고, B는 단일 컬럼으로 최소성을 만족하며, C는 존재성 특성에 대한 올바른 설명이다.