Claude가 생성한 데이터 모델링 문제
문제 1
정규화(Normalization)에 대한 설명으로 가장 적절하지 않은 것은?
① 정규화를 수행하면 데이터 저장 공간이 줄어들고 데이터 중복이 최소화된다.
② 제1정규형은 모든 속성이 원자값(Atomic Value)을 가져야 한다는 규칙이다.
③ 정규화 수준이 높아질수록 조회 성능(Query 성능)은 항상 향상된다.
④ 제2정규형은 제1정규형을 만족하면서 부분 함수 종속을 제거한 상태이다.정답 및 해석
정규화 수준이 높아질수록 테이블이 여러 개로 쪼개지기 때문에, 조회할 때 JOIN이 늘어나서 오히려 조회 성능이 떨어질 수 있어요. 그래서 “항상 향상된다”는 틀린 설명
문제 2
속성(Attribute)에 대한 설명으로 가장 적절하지 않은 것은?
① 속성은 업무에서 필요로 하는 인스턴스로 관리하고자 하는 최소의 데이터 단위를 의미한다.
② 하나의 속성은 하나의 값(Atomic Value)만을 가져야 하며, 하나의 속성에서 다른 여러 개의 값을 가지는 것은 허용되지 않는다.
③ 다중 값을 가지는 속성(다가 속성)이 존재하면, 이를 별도의 엔터티로 분리하지 않고 그대로 두어야 정규화 원칙에 부합한다.
④ 속성은 엔터티를 설명하는 특성으로서, 엔터티가 가지고 있는 인스턴스의 특성 또는 성격을 나타낸다.문제 3
식별자(Identifier)에 대한 설명으로 가장 적절하지 않은 것은?
① 주식별자(Primary Identifier)는 엔터티 내에서 각 인스턴스를 유일하게 구분할 수 있는 식별자를 의미한다.
② 두 개 이상의 속성이 결합되어 주식별자의 역할을 수행하는 경우, 이를 복합식별자(Composite Identifier)라고 한다.
③ 본질식별자는 업무에 의해 만들어지는 식별자이고, 인조식별자는 원조식별자의 대체 여부와 관계없이 처음부터 인위적으로 만들어진 식별자만을 의미한다.
④ 주식별자로 선정된 속성은 반드시 유일성(Unique)과 최소성(Minimality) 특성을 만족해야 한다.정답 및 해석
인조식별자(Artificial Identifier)는 “원조식별자(본질식별자)의 대체 여부와 관계없이” 만들어지는 게 아니라, 오히려 본질식별자가 복잡하거나 문제가 있을 때 이를 대체하기 위한 목적으로 인위적으로 만드는 식별자이다.
📌 핵심 포인트
본질식별자: 업무 자체에서 발생하는 자연스러운 식별자 (예: 주민등록번호)
인조식별자: 본질식별자가 복잡하거나(속성 여러 개) 관리하기 어려울 때, 이를 대체하기 위해 인위적으로 만든 식별자 (예: 자동 증가되는 순번 ID)
문제 4
엔터티 간의 관계(Relationship)에 대한 설명으로 가장 적절하지 않은 것은?
① 관계는 두 개 이상의 엔터티 사이의 존재 유무나 인스턴스 연관의 형태로 표현되는 업무적인 이유에 의한 연관성을 의미한다.
② 관계는 존재적 관계(Existence Relationship)와 행위적 관계(Action Relationship)로 구분할 수 있다.
③ 관계차수(Cardinality)는 관계에 참여하는 두 엔터티 사이에서 인스턴스 간의 대응 관계를 나타내며, 1:1, 1:N, M:N 등으로 표현한다.
④ 두 엔터티 사이에는 한 개의 관계만 존재할 수 있으며, 서로 다른 두 개 이상의 관계가 동시에 존재할 수는 없다.정답 및 해석
- ① 관계는 엔터티 간의 업무적 연관성, 맞는 설명
- ② 존재적 관계(단순히 존재함으로써 성립, 예: 부서-사원)와 행위적 관계(어떤 행위에 의해 발생, 예: 고객-주문)로 구분하는 것, 맞는 설명
- 관계차수(Cardinality)가 1:1, 1:N, M:N으로 표현되는 것, 맞는 설명
- ④ 두 엔터티 사이에는 여러 개의 서로 다른 관계가 동시에 존재할 수 있다. 예를 들어 “사원”과 “부서” 엔터티 사이에 “소속된다”는 관계도 있고, 동시에 “관리한다(부서장)“는 관계도 있을 수 있다. 그래서 “한 개의 관계만 존재할 수 있다”는 설명은 틀린 설명
📌 핵심 포인트
두 엔터티 간 관계는 1개로 제한되지 않고, 서로 다른 의미의 관계가 복수로 존재할 수 있다
문제 5
슈퍼타입(Super Type)과 서브타입(Sub Type)에 대한 설명으로 가장 적절하지 않은 것은?
① 슈퍼타입과 서브타입 관계는 공통적인 속성은 슈퍼타입에서 관리하고, 서브타입별로 다른 특성을 갖는 속성은 서브타입에서 관리하기 위해 사용된다.
② 서브타입은 슈퍼타입의 속성을 상속받으며, 슈퍼타입의 인스턴스는 반드시 하나 이상의 서브타입에 속해야 한다.
③ 슈퍼타입/서브타입을 하나의 테이블로 통합하는 것을 Single Table 방식(One Table 방식)이라 하며, 이 경우 서브타입 구분자(Type 컬럼)를 두어 어떤 서브타입인지 식별하기도 한다.
④ 슈퍼타입/서브타입 모델을 물리모델로 변환할 때는 통합하는 방법(1개 테이블), 서브타입 단위로 분리하는 방법(각각 테이블), 개별 테이블로 모두 만드는 방법(각각 테이블 + 슈퍼타입 테이블) 중 선택할 수 있다.정답 및 해석
슈퍼타입의 인스턴스는 반드시 하나 이상의 서브타입에 속해야 한다”는 항상 참은 아니다.
📌 핵심 포인트
슈퍼타입 (Supertype): 공통된 속성을 가지고 있는 상위 엔터티 (공통 속성: 고객ID, 이름, 연락처)
서브타입 (Subtype): 공통 속성 외에 자신만의 고유한 속성을 가진 하위 엔터티 (고유 속성: 주민등록번호)
문제 6
정규화(Normalization) 단계에 대한 설명으로 가장 적절하지 않은 것은?
① 제3정규형(3NF)은 제2정규형을 만족하면서, 기본키가 아닌 속성들 간에 존재하는 이행적 함수 종속(Transitive Dependency)을 제거한 상태이다.
② BCNF(보이스-코드 정규형)는 제3정규형을 만족하면서, 모든 결정자가 후보키가 되도록 한 상태이다.
③ 제4정규형은 다중값 종속(Multi-Valued Dependency)을 제거한 상태이며, 제5정규형은 조인 종속(Join Dependency)을 제거한 상태이다.
④ 정규화 단계가 올라갈수록(1NF→2NF→3NF→BCNF) 이전 단계보다 만족하는 제약조건의 개수가 줄어들며, 더 느슨한 구조가 된다.문제 7
반정규화(De-normalization)에 대한 설명으로 가장 적절하지 않은 것은?
① 반정규화는 시스템의 성능 향상, 개발과 운영의 단순화를 위해 정규화된 데이터 모델을 의도적으로 통합하거나 중복시키는 것을 말한다.
② 반정규화를 수행하면 데이터 조회 성능은 향상될 수 있지만, 데이터 중복으로 인해 삽입·수정·삭제 시 데이터 무결성이 깨질 위험이 커진다.
③ 반정규화 기법에는 테이블 통합, 테이블 분할, 중복 컬럼 추가, 파생 컬럼 추가 등이 있다.
④ 반정규화는 정규화로 인한 성능 저하 문제를 해결하기 위한 기법이므로, 데이터 모델링 초기 단계에서 정규화보다 먼저 수행해야 한다.정답 및 해석
정규화는 정규화를 먼저 수행한 뒤에, 정규화로 인해 발생하는 성능 문제를 검토해서 “필요한 경우에 한해” 나중에 적용하는 기법
📌 핵심 포인트
SQLD의 대원칙은 “정규화가 기본, 반정규화는 필요시 예외적으로”
문제 8
다음과 같은 수강신청 릴레이션이 있다.
수강신청 (학번, 과목코드, 학생명, 과목명, 담당교수, 성적)
기본키(PK): 학번 + 과목코드 (복합키)
함수 종속 관계:
- 학번 → 학생명
- 과목코드 → 과목명, 담당교수
- (학번, 과목코드) → 성적
이 릴레이션에 대한 설명으로 가장 적절한 것은?
① 이 릴레이션은 이미 제3정규형(3NF)을 만족하고 있으므로 추가적인 정규화가 필요 없다.
② 이 릴레이션은 제1정규형(1NF)은 만족하지만, 기본키의 일부(학번, 과목코드 각각)에 종속되는 속성들이 존재하는 부분 함수 종속 문제가 있어 제2정규형(2NF)을 만족하지 못한다.
③ 이 릴레이션은 이행적 함수 종속(Transitive Dependency) 문제가 있으므로 제3정규형을 만족하지 못한다.
④ 이 릴레이션은 다중값 종속(Multi-Valued Dependency) 문제가 있으므로 제4정규형을 만족하지 못한다.정답 및 해석
수강신청의 기본키는 학번과 과목코드이다.
성적은 학번, 과목코드 모두 알아야 할 수 있어서 ‘완전함수 종속’이고, 학생명은 학번만 의존하고 있고, 과목명, 담당교수는 과목코드만 의존하고 있다.
제 1정규형 : 모든 값이 원자값이어야 한다 (만족)
제 2정규형 : 1정규형을 만족하고, 부분함수 종속이 없어야한다. 즉 기본키가 학번과 과목코드이면, 일부만 종속되면 안된다.
여기서 학생명과, 과목명, 담당교수는 일부만 의존하고 있다. 따라서 제 2정규형은 만족하지 못한다.
📌 핵심 포인트
부분 함수 종속 = 복합키 중 “일부”에만 종속 → 2NF 위반
이행적 함수 종속 = 기본키가 아닌 속성이 → 다른 기본키 아닌 속성에 종속 (A→B→C 형태) → 3NF 위반
문제 9
다음과 같은 사원 릴레이션이 있다.
사원 (사원번호, 사원명, 부서코드, 부서명, 부서위치)
기본키(PK): 사원번호
함수 종속 관계:
- 사원번호 → 사원명, 부서코드
- 부서코드 → 부서명, 부서위치
이 릴레이션에 대한 설명으로 가장 적절한 것은?
① 기본키가 단일 속성(사원번호)이므로 부분함수종속이 존재할 수 없고, 이 릴레이션은 항상 3NF를 만족한다.
② 부서명과 부서위치는 기본키(사원번호)에 직접 종속되지 않고, 부서코드를 거쳐서 종속되는 이행적 함수 종속 관계에 있으므로 3NF를 만족하지 못한다.
③ 사원명은 부서코드에 이행적으로 종속되므로 이 릴레이션은 2NF도 만족하지 못한다.
④ 이 릴레이션은 부서코드가 후보키가 아니므로 BCNF를 위반한다.정답 및 해석
사원의 기본키는 사원번호이다. (단일키)
제 2정규형 검증
단일키는 하나뿐이라서 부분함수 종속자체를 발생할 수 없으므로 제 2정규형을 만족한다.
제 3정규형 검증
사원번호 -> 부서코드 이고, 부서코드 -> 부서명, 부서위치 이다.
사원번호(A) -> 부서코드(B) -> 부서명, 부서위치(C) 가 된다.
A-> B 이고, B-> C 일때, A->C가 성립하면 이행적 함수 종속이다.
제 3 정규형은 이행적함수 종속이 존재하면 안되므로 만족하지 못한다.
BCNF 검증 (모든 결정자가 후보키여야 한다)
제 3정규형을 만족하지 못하면 검증 대상이 되지 못한다.
📌 핵심 포인트
기본키가 단일키면 제 2정규형은 무조건 통과
A -> B -> C 이면 제 3정규형 위반
키가 아닌 일반 속성이 결정자 역할을 하면 BCNF 위반
** 결정자란 : X -> Y 관계에서 Y를 결정짓는 왼쪽의 X
문제 10
식별자 관계(Identifying Relationship)와 비식별자 관계(Non-Identifying Relationship)에 대한 설명으로 가장 적절하지 않은 것은?
① 식별자 관계는 부모 엔터티의 주식별자가 자식 엔터티의 주식별자 속성으로 포함되는 관계이다.
② 비식별자 관계는 부모 엔터티의 주식별자가 자식 엔터티의 일반 속성(외래키)으로 포함되는 관계이다.
③ 자식 엔터티가 부모 엔터티 없이는 독립적으로 존재할 수 없고 강하게 의존하는 관계일 때는 주로 비식별자 관계로 설정한다.
④ 비식별자 관계를 설정하면 자식 엔터티의 기본키 구성이 단순해지지만, 부모와 자식 간의 관계 유무를 별도의 컬럼(FK)으로 관리해야 한다.정답 및 해석
자식이 부모 없이 존재할 수 없고 강하게 의존하는 관계라면, 오히려 “식별자 관계”로 설정해야 함
📌 핵심 포인트
- 식별자 관계 : 부모 엔터티의 기본키(PK)가 자식 엔터티의 기본키(PK) 또는 주식별자의 일부로 상속되는 관계
- 비식별자 관계 : 부모 엔터티의 기본키(PK)가 자식 엔터티의 일반 속성(FK)으로 상속되는 관계
문제 11
엔터티 간 관계의 참여도(선택성/필수성)에 대한 설명으로 가장 적절하지 않은 것은?
① 필수관계(Mandatory Relationship)는 한 엔터티의 인스턴스가 반드시 다른 엔터티의 인스턴스와 관계를 맺어야 하는 경우를 말한다.
② 선택관계(Optional Relationship)는 한 엔터티의 인스턴스가 다른 엔터티의 인스턴스와 관계를 맺을 수도 있고, 맺지 않을 수도 있는 경우를 말한다.
③ ERD 표기법에서 관계선의 점선(Dotted Line)은 선택관계를, 실선(Solid Line)은 필수관계를 표현하는 데 사용된다.
④ 관계의 참여도는 관계차수(Cardinality, 1:1, 1:N, M:N)와 동일한 개념으로, 참여도를 표현하면 별도로 차수를 표기할 필요가 없다.정답 및 해석
참여도(선택성/필수성)와 관계차수(Cardinality)는 서로 다른 별개의 개념이다.
- 관계차수(Cardinality): 관계에 참여하는 인스턴스의 “수량”을 나타냄 (1:1, 1:N, M:N)
- 참여도(선택성/필수성, Optionality): 관계 참여가 “필수인지 선택인지”를 나타냄 (실선/점선)
문제 12
정규화되지 않은 테이블에서 발생할 수 있는 이상현상(Anomaly)에 대한 설명으로 가장 적절하지 않은 것은?
① 삽입 이상(Insertion Anomaly)은 특정 데이터를 삽입하기 위해 불필요한 다른 속성값까지 함께 입력해야 하거나, 삽입 자체가 불가능한 경우를 말한다.
② 삭제 이상(Deletion Anomaly)은 튜플을 삭제할 때, 삭제하려는 의도와 상관없는 다른 정보까지 함께 삭제되어 손실되는 경우를 말한다.
③ 갱신 이상(Update Anomaly)은 중복 저장된 데이터 중 일부만 수정되어 데이터 간 불일치가 발생하는 경우를 말한다.
④ 이상현상은 반정규화를 수행하면 완전히 해결되며, 정규화는 오히려 이상현상을 유발하는 원인이 된다.문제 13
속성의 종류에 대한 설명으로 가장 적절하지 않은 것은?
① 기본속성(Basic Attribute)은 업무로부터 자연스럽게 도출되는 속성으로, 대부분의 속성이 여기에 해당한다.
② 설계속성(Designed Attribute)은 원래 업무상 존재하지 않지만, 데이터 모델링 과정에서 필요에 의해 새롭게 정의되는 속성이다 (예: 코드성 속성).
③ 파생속성(Derived Attribute)은 다른 속성으로부터 계산이나 변형을 통해 얻어지는 속성이며, 데이터 정합성을 위해 가능한 한 많이 사용하는 것이 권장된다.
④ 파생속성의 예로는 '평균 구매 금액', '나이(생년월일로부터 계산)' 등이 있다.정답 및 해석
파생속성은 오히려 “가능한 한 최소화”하는 게 권장이다.
📌 핵심 포인트
- 기본속성: 업무에서 원래 존재
- 설계속성: 모델링 편의상 새로 만듦 (코드, ID 등)
- 파생속성: 다른 속성으로 계산됨 → 정합성 리스크 때문에 최소화 권장
문제 14
도메인(Domain)에 대한 설명으로 가장 적절하지 않은 것은?
① 도메인은 하나의 속성이 가질 수 있는 값들의 범위(집합)를 의미한다.
② 도메인을 정의하면 데이터 타입, 길이, 제약조건 등을 명확히 할 수 있어 데이터 무결성 확보에 도움이 된다.
③ 예를 들어 '성별' 속성의 도메인은 {'남', '여'}처럼 정의할 수 있고, '나이' 속성의 도메인은 0 이상의 정수로 정의할 수 있다.
④ 서로 다른 속성이라도 같은 도메인을 공유할 수는 없으며, 하나의 도메인은 반드시 하나의 속성에만 대응되어야 한다.정답 및 해석
서로 다른 속성이라도 같은 도메인을 얼마든지 공유 가능하다.
예를 들어 “출발지 코드”와 “도착지 코드”는 서로 다른 속성이지만 둘 다 “지역코드 도메인”을 공유있고,
“시작일”과 “종료일”도 둘 다 “날짜 도메인”을 공유할 수 있다.
📌 핵심 포인트
도메인은 속성이 가질 수 있는 ‘합법적인 값들의 범위(집합)‘이자 ‘재사용 가능한 데이터 규격’
문제 15
ERD Barker 표기법에서 엔터티 박스 내부 표기 방식에 대한 설명으로 가장 적절하지 않은 것은?
① 엔터티는 모서리가 둥근 사각형(Soft-box)으로 표기하며, 엔터티명은 박스 내부 최상단에 표기한다.
② 엔터티 박스 내부에는 상하 구분선을 두어, 구분선 위쪽에는 주식별자(PK)를, 아래쪽에는 일반 속성을 배치한다.
③ 속성의 필수 여부에 따라 속성명 앞에 #(주식별자), *(필수 속성), o(선택 속성) 등의 기호를 부여하여 표기한다.
④ 관계선 표기 시 하나의 관계선에서 엔터티별 참여도(선택성)에 따라 실선(필수)과 점선(선택)이 혼용되어 표현될 수 있다.정답 및 해석
상하 구분선을 그어 위쪽(PK)과 아래쪽(일반 속성)으로 영역을 나누는 것은 IE(Information Engineering) 표기법의 특징이다.
바커(Barker) 표기법은 박스 내부에 구분선을 그리지 않으며, 속성명 앞에 붙는 기호(#, *, o)를 통해 주식별자와 일반 속성을 구분한다.
📌 핵심 포인트
바커(Barker) 표기법 : 모서리가 둥근 박스(Soft-box)와 속성 기호(#, *, o)를 활용하여 엔터티와 데이터 규칙을 직관적으로 표현하는 ERD 표기법
- 바커 표기법 속성 기호 3가지 (
#,*,o)#: 주식별자 (Primary Key)*: 필수 속성 (Mandatory / NOT NULL)o: 선택 속성 (Optional / NULL 허용)
IE(Information Engineering) 표기법 : 각진 직사각형 박스와 상하 구분선, 관계선 끝의 기호(|, O, <)를 활용하여 엔터티와 관계를 표현하는 ERD 표기법
문제 16
데이터 모델에서의 관계(Relationship)와 SQL의 JOIN에 대한 설명으로 가장 적절하지 않은 것은?
① 두 엔터티 사이에 관계가 설정되어 있다는 것은, 관계를 맺은 두 테이블을 조회할 때 서로 연결해서 조인할 수 있다는 것을 의미한다.
② 물리모델에서 외래키(FK)는 논리모델에서의 관계(Relationship)가 테이블 간 연결고리로 구현된 것이다.
③ 두 테이블 간에 외래키 관계가 없어도, 공통된 값을 가진 컬럼이 있다면 SQL에서 JOIN 조건으로 사용해 조회할 수 있다.
④ JOIN을 수행하려면 반드시 두 테이블 사이에 부모-자식 관계(FK 제약조건)가 데이터베이스에 물리적으로 선언되어 있어야 하며, 그렇지 않으면 SQL에서 JOIN 자체가 불가능하다.