본문 바로가기
[자격증]/SQLD

[오답 풀이] 1과목

by 에디터 윤슬 2025. 3. 6.

1. 아래의 설명에 알맞은 속성은?

<설명>

업무상 필요한 데이터 이외에 데이터 모델링을 위해업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성이다.

  • 파생속성
  • 기본속성
  • 설계속성
  • PK 속성
해설

1. 파생 속성 : 다른 속성에 영향을 받아 발생하는 속성입니다.
2. 기본 속성 : 업무 분석을 통해 바로 정의한 속성입니다.
3. 설계 속성 : 업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 새로 만들어지거나 변형되는 속성입니다.
4. PK 속성 : 엔티티를 유일하게 구분할 수 있는 속성을 의미합니다.

 

2. 엔터티에 대한 설명 중 가장 적절하지 않은 것은?

  • 주식별자와 기본 속성이 없어도 된다.
  • 반드시 속성이 존재해야 한다.
  • 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
  • 영속적으로 존재하는 인스턴스의 집합이다.
해설

1. 엔터티는 반드시 주식별자를 가져야 하고, 해당 객체의 특성을 설명하는 속성들을 가져야 합니다.

 

3. 아래의 계층형 쿼리에 대한 결과값으로 알맞은 것은?

col1 col2 col3
--------------------
A null 1
B A 2
C A 3
D B 4
​
SELECT *
FROM SQLD46_01
WHERE COL3 <> 2
START WITH COL3 = 4
CONNECT BY COL1 = PRIOR COL2;

 

  •  START WITH:
    • `START WITH COL3 = 4`: 계층 탐색의 시작점은 `COL3` 값이 `4`인 행입니다.
    • 해당 조건에 맞는 행은:
col1 = D, col2 = B, col3 = 4
  • CONNECT BY:
    • `CONNECT BY COL1 = PRIOR COL2`: 계층 탐색의 연결 조건은 `현재 행의 COL1`이 `이전 행의 COL2`와 같아야 합니다.
    • 즉, 부모-자식 관계를 정의하며, 탐색 방향은 아래에서 위로 진행됩니다.
  • WHERE 조건:
    • `WHERE COL3 <> 2`: 최종적으로 `COL3` 값이 `2`인 행은 제외됩니다.
  • CONNECT BY 탐색:
    • 첫 번째 연결:
    • `PRIOR COL2 = B`, 따라서 `COL1 = B`인 행을 찾습니다:
col1 = B, col2 = A, col3 = 2
  • 두 번째 연결:
    • `PRIOR COL2 = A`, 따라서 `COL1 = A`인 행을 찾습니다:
col1 = A, col2 = null, col3 = 1
  • 최종 결과:
col1 = D, col2 = B, col3 = 4
col1 = A, col2 = null, col3 = 1

 

4. 슈퍼 - 서브 타입에서 개별 테이블의 접근이 매우 많을 경우에 가장 적절한 것은?

  • 1:1
  • 1:N
  • N:N
  • 1:2
해설

슈퍼타입(Supertype)과 서브타입(Subtype)의 관계는 항상 1:1 관계입니다. 이는 서브타입이 슈퍼타입의 특정 세부 유형을 나타내기 때문입니다. 슈퍼타입과 서브타입 간의 관계는 다음과 같은 특징을 가집니다:

 

1. 상속 관계:
• 서브타입은 슈퍼타입의 모든 속성과 관계를 상속받습니다.
• 서브타입은 슈퍼타입의 특정 세부 사항을 나타내며, 슈퍼타입과 동일한 기본 키를 공유합니다.

 

2. 1:1 관계의 이유:
• 서브타입의 각 인스턴스는 반드시 슈퍼타입의 한 인스턴스와 연결됩니다.
• 따라서, 서브타입의 기본 키는 슈퍼타입의 기본 키와 동일하며, 이는 1:1 관계를 보장합니다.

 

3. 예시:
• 예를 들어, `Employee`(슈퍼타입)와 `Manager`, `Technician`(서브타입) 간의 관계를 생각해보면:
• 모든 `Manager`나 `Technician`은 반드시 `Employee`에 해당합니다.
• 따라서, `Manager`와 `Technician`은 각각 `Employee`와 1:1로 매핑됩니다.

 

다른 선택지와 비교
• 1:N 관계는 한 개의 엔티티가 여러 개의 관련 엔티티와 연결될 때 사용됩니다. 하지만 슈퍼타입-서브타입 관계에서는 각 서브타입이 하나의 슈퍼타입 인스턴스에만 연결되므로 적합하지 않습니다.
• N:N 관계는 두 엔티티 간에 다대다 관계가 있을 때 사용됩니다. 이는 슈퍼타입-서브타입 관계와 관련이 없습니다.
• 1:2 데이터베이스 모델링에서 일반적인 관계 유형이 아니며, 슈퍼타입-서브타입 관계와도 맞지 않습니다.

 

결론
슈퍼타입과 서브타입 간에는 항상 1:1 관계가 성립합니다.

5. 성능 모델링에 대한 설명으로 가장 적절한 것은?

  • 일반적으로 완전 정규화를 수행한 후 성능을 고려하여 반정규화를 수행한다.
  • 정규화는 성능 개선에 도움이 되지 않는다.
  • 정규화에 의해 중복 데이터가 발생한다.
  • 정규화에 의해 이상현상이 발생한다.
해설

[정규화(Normalization)]
• 데이터베이스 설계에서 데이터 중복을 제거하고 데이터 무결성을 유지하기 위해 데이터를 구조화하는 과정입니다.
• 정규화는 데이터를 여러 테이블로 나누고, 각 테이블 간 관계를 정의하여 이상현상(삽입, 갱신, 삭제 이상)을 방지합니다.
• 하지만 지나치게 정규화를 수행하면 JOIN 연산이 많아져 성능 저하가 발생할 수 있습니다.

 

[반정규화(Denormalization)]
• 성능 개선을 위해 정규화된 데이터 모델에 일부 중복 데이터를 허용하거나 테이블을 병합하는 과정입니다.
• 반정규화는 JOIN 연산을 줄이고 쿼리 속도를 개선하는 데 유용하지만, 데이터 중복으로 인해 무결성 관리가 복잡해질 수 있습니다.

 

왜 정답이 맞는지
1. 일반적인 데이터베이스 설계 과정
• 먼저 완전 정규화를 수행하여 데이터의 중복과 이상현상을 제거합니다.
• 이후, 시스템 성능 요구사항(예: 쿼리 속도)을 고려하여 필요한 부분에 대해 반정규화를 수행합니다.

 

2. 성능 모델링의 핵심 목표
• 데이터 무결성과 성능 간의 균형을 맞추는 것입니다.
• 완전 정규화를 통해 데이터 무결성을 확보한 뒤, 성능 병목 현상이 발생하는 경우에 한해 반정규화를 적용합니다.

 

다른 선택지와 비교
1. 정규화는 성능 개선에 도움이 되지 않는다.
• 정규화는 데이터 중복 제거와 무결성 유지에 도움을 주며, 잘 설계된 정규화는 특정 상황에서 성능을 개선할 수도 있습니다.
2. 정규화에 의해 중복 데이터가 발생한다.
• 정규화의 목적은 중복 데이터를 제거하는 것입니다.
3. 정규화에 의해 이상현상이 발생한다.
• 정규화를 통해 삽입, 갱신, 삭제와 관련된 이상현상을 방지할 수 있습니다.

 

6. 다음 중 데이터모델링의 관계에 대한 설명으로 가장 부적절한 것을 2개 고르시오.

  • 관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있으나 ERD에서는 관계를 연결할 때, 존재와 행위를 구분하지 않고 단일화된 표기법을 사용한다.
  • UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중 연관관계(Association)와 의존관계(Dependency)가 있고 이것은 실선과 점선으 표기법으로 다르게 표현이 된다.
  • 관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있고 ERD에서는 관계를 연결할 때, 존재와 행위를 구분하여 실선과 점선의 표기법으로 다르게 표현한다.
  • UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중 연관관계(Association)와 의존관계(Dependency)가 있으나 구분 하지 않고 단일화 된 표기법을 사용한다.
해설

1. 부적절한 선택지 3:
“관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있고 ERD에서는 관계를 연결할 때, 존재와 행위를 구분하여 실선과 점선의 표기법으로 다르게 표현한다.”
• 왜 부적절한가?
• ERD(Entity-Relationship Diagram)에서는 존재에 의한 관계와 행위에 의한 관계를 구분하지 않고, 단일화된 표기법(보통 실선)을 사용하여 관계를 표현합니다.
• ERD의 목적은 엔터티 간의 관계를 명확히 정의하는 것이며, 존재와 행위를 별도로 구분하여 다른 표기법(예: 점선)을 사용하는 방식은 없습니다.

 

2. 부적절한 선택지 4:
“UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중 연관관계(Association)와 의존관계(Dependency)가 있으나 구분하지 않고 단일화된 표기법을 사용한다.”
• 왜 부적절한가?
• UML 클래스 다이어그램에서는 연관관계(Association)와 의존관계(Dependency)를 명확히 구분하며, 서로 다른 표기법을 사용합니다:
• 연관관계(Association): 실선으로 표시.
• 의존관계(Dependency): 점선 화살표로 표시.
• UML은 이러한 관계를 엄격히 구분하여 설계 모델링에서 각 관계의 의미를 명확히 전달합니다.

 

적절한 선택지
1. “관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있으나 ERD에서는 관계를 연결할 때, 존재와 행위를 구분하지 않고 단일화된 표기법을 사용한다.”
• ERD에서는 존재와 행위를 구분하지 않고, 단일 표기법(실선)을 통해 엔터티 간의 관계를 표현합니다.
2. “UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중 연관관계(Association)와 의존관계(Dependency)가 있고 이것은 실선과 점선의 표기법으로 다르게 표현이 된다.”
• UML 클래스 다이어그램에서 연관관계는 실선, 의존관계는 점선으로 명확히 구분되어 다른 표기법을 사용합니다.

7. 주식별자를 구성하는 속성에서 하나만이라도 제거되면 유일성을 만족하지 못하는 특성은 무엇인가?

  • 최소성
  • 유일성
  • 불변성
  • 원자성
해설

주식별자를 구성하는 속성에서 하나라도 제거되면 유일성을 만족하지 못하는 특성은 최소성입니다.

 

1. 최소성
• 주식별자는 최소한의 속성 집합으로 구성되어야 하며, 이 속성 집합이 데이터베이스 내에서 각 튜플을 고유하게 식별할 수 있어야 합니다.
• 주식별자의 속성 중 하나라도 제거되면, 고유성을 잃게 되어 더 이상 주식별자로 기능하지 못합니다.
• 이는 주식별자가 중복 없이 데이터를 식별할 수 있도록 설계된 최소한의 속성 집합임을 의미합니다.

 

2. 다른 선택지와 비교
1. 유일성:
• 유일성은 주식별자가 각 튜플을 고유하게 식별할 수 있는 특성을 의미합니다.
• 하지만 질문은 “속성을 제거했을 때”에 초점이 맞춰져 있으므로, 유일성이 아니라 최소성이 적합합니다.

 

2. 불변성:
• 불변성은 주식별자가 데이터베이스 내에서 변경되지 않는 특성을 의미합니다.
• 이는 속성을 제거했을 때 유일성을 잃는 문제와는 관련이 없습니다.

 

3. 원자성:
• 원자성은 속성이 더 이상 분리될 수 없는 가장 작은 단위로 저장된다는 특성을 의미합니다.
• 이는 주식별자와 직접적인 연관이 없습니다.

 

8. 데이터 모델링 시 유의점으로 적절하지 않은 것은?

  • 여러 장소의 데이터 베이스에 같은 정보를 저장하지 않도록 하여 중복성을 최소화한다.
  • 데이터의 정의를 데이터의 사용 프로세스와 분리하여 유연성을 높인다.
  • 사용자가 처리하는 프로세스나 장표등에 따라 매핑이 될 수 있도록 프로그램간의 연계성을 높인다.
  • 데이터간의 상호 연관관계를 명확하게 정의하여 일관성 있게 데이터가 유지되도록 한다.
해설

“사용자가 처리하는 프로세스나 장표 등에 따라 매핑이 될 수 있도록 프로그램 간의 연계성을 높인다.”
• 데이터 모델링은 데이터의 구조와 관계를 설계하는 데 초점이 맞춰져 있으며, 프로그램 간의 연계성을 높이는 것은 데이터 모델링의 주요 목적이 아닙니다.
• 이 설명은 데이터 모델링보다는 시스템 설계나 애플리케이션 통합에 더 가깝습니다.

 

적절한 선택지
1. “여러 장소의 데이터베이스에 같은 정보를 저장하지 않도록 하여 중복성을 최소화한다.”
• 정규화를 통해 중복 데이터를 제거하고, 데이터 무결성을 유지하는 것은 데이터 모델링에서 중요한 원칙입니다.
2. “데이터의 정의를 데이터의 사용 프로세스와 분리하여 유연성을 높인다.”
• 데이터를 사용 프로세스와 분리하여 설계하면, 데이터 모델이 변경되더라도 프로세스에 영향을 최소화할 수 있어 유연성이 증가합니다.

 

9. 모델링의 단계 중 가장 재사용성이 높은 모델링은?

  • 논리적 데이터 모델링
  • 개념적 데이터 모델링
  • 물리적 데이터 모델링
  • 개념적 데이터 모델링, 물리적 데이터 모델링
해설

1. 개념적 데이터 모델링
• 재사용성이 가장 높은 모델링 단계는 개념적 데이터 모델링입니다.
• 개념적 데이터 모델은 비즈니스 요구사항을 기반으로 데이터의 주요 엔터티(Entity)와 관계(Relationship)를 정의하며, 기술적 세부사항(예: 데이터베이스 스키마, 데이터 타입 등)을 포함하지 않습니다.
• 특징:
• 비즈니스 중심의 고수준 설계로, 기술 독립적입니다.
• 다양한 프로젝트나 시스템에서 재사용 가능하며, 다른 모델링 단계(논리적, 물리적)의 기초가 됩니다.
• 비즈니스와 IT 간의 의사소통을 원활히 하는 데 도움을 줍니다.

 

2. 논리적 데이터 모델링
• 논리적 데이터 모델은 개념적 모델을 기반으로 더 구체적인 세부사항(속성, 관계, 키 등)을 정의합니다.
• 시스템의 요구사항에 맞게 데이터를 구조화하며, 특정 기술에 종속되지 않지만 재사용성은 개념적 모델보다 낮습니다.

 

3. 물리적 데이터 모델링
• 물리적 데이터 모델은 논리적 모델을 기반으로 실제 데이터베이스 구현에 필요한 구체적인 세부사항(테이블, 컬럼, 인덱스 등)을 정의합니다.
• 특정 DBMS(Database Management System)에 종속되므로 재사용성이 가장 낮습니다.

 

10. 데이터 무결성을 지키기 위한 것과 관계 없는 것을 고르시오

  • 애플리케이션의 로직
  • Trigger
  • Lock
  • Constraints
해설

데이터 무결성(Data Integrity)은 데이터의 정확성, 일관성, 신뢰성을 유지하는 것을 목표로 하며, 이를 위해 데이터베이스 시스템에서 다양한 기법과 도구를 사용합니다. 아래는 데이터 무결성을 유지하기 위한 주요 요소와 부적절한 선택지에 대한 설명입니다:

 

[적절한 요소]
1. Trigger:
• 트리거는 데이터 변경 이벤트(예: 삽입, 수정, 삭제)가 발생할 때 자동으로 실행되는 데이터베이스 객체입니다.
• 데이터 무결성을 유지하기 위해 특정 규칙을 강제하거나 데이터를 검증하는 데 사용됩니다.

 

2. Lock:
• 락은 동시성 제어를 통해 데이터의 무결성을 보호하는 데 사용됩니다.
• 여러 사용자가 동일한 데이터를 동시에 수정하지 못하도록 제한하여 데이터 충돌을 방지합니다.

 

3. Constraints:
• 제약 조건은 데이터베이스에서 데이터 무결성을 유지하기 위해 설정된 규칙입니다.
• 예: Primary Key, Foreign Key, Unique, Check Constraints 등.

 

[부적절한 요소]
애플리케이션의 로직:
• 애플리케이션 로직은 주로 비즈니스 로직을 처리하는 역할을 하며, 데이터 무결성을 직접적으로 유지하는 데 핵심적인 역할을 하지 않습니다.
• 데이터 무결성은 주로 데이터베이스 내에서 관리되며, 애플리케이션 로직은 이를 보조하거나 활용할 수 있지만, 무결성을 보장하는 주요 수단으로 간주되지 않습니다.

 

11. CTAS 특징에 맞지 않는 것을 고르시오

  • CTAS는 테이블 구조만 복사하는 데 사용될 수 있다.
  • 모든 제약조건을 다 가져올수있다.
  • CTAS는 전체 테이블을 복사하는 데 사용된다.
  • CTAS 구문은 새로 생성되는 테이블에 기존 테이블의 전체 데이터 또는 조건부 데이터를 복사한다.
해설

CTAS (CREATE TABLE AS SELECT)의 특징
CTAS는 기존 테이블의 데이터를 기반으로 새로운 테이블을 생성하는 SQL 구문입니다. 이 구문은 데이터베이스에서 테이블 백업, 데이터 분석용 테이블 생성, 성능 튜닝 등을 위해 자주 사용됩니다. 주요 특징은 다음과 같습니다:

 

1. 테이블 구조 복사:
• CTAS는 기존 테이블의 구조를 복사할 수 있습니다.
• 필요에 따라 데이터를 제외한 테이블 구조만 복사하거나, 조건부 데이터를 복사할 수도 있습니다.

 

2. 데이터 복사:
• CTAS는 기존 테이블의 전체 데이터 또는 조건부 데이터를 새로운 테이블로 복사할 수 있습니다.

 

3. 제약조건 상속 제한:
• CTAS로 생성된 테이블은 기존 테이블의 NOT NULL 제약조건만 상속받습니다.
• 다른 제약조건(예: PRIMARY KEY, FOREIGN KEY, UNIQUE 등)은 복사되지 않습니다. 따라서 필요한 경우, 새로 생성된 테이블에 제약조건을 별도로 정의해야 합니다.

 

4. 인덱스 미복사:
• CTAS로 생성된 테이블은 기존 테이블의 인덱스를 복사하지 않습니다.

 

왜 “모든 제약조건을 다 가져올 수 있다”가 부적절한가?
• CTAS는 기본적으로 NOT NULL 제약조건만 상속하며, 다른 제약조건(예: PRIMARY KEY, FOREIGN KEY 등)은 가져오지 않습니다.
• 따라서 “모든 제약조건을 다 가져올 수 있다”는 CTAS의 특징에 맞지 않는 설명입니다.

 

적절한 설명
1. CTAS는 테이블 구조만 복사하는 데 사용될 수 있다:
• 데이터를 제외하고 테이블 구조만 복사할 수 있습니다(예: `WHERE 1=2` 조건 사용).
2. CTAS는 전체 테이블을 복사하는 데 사용된다:
• 기존 테이블의 모든 데이터를 새로운 테이블로 복사할 수 있습니다.
3. CTAS 구문은 새로 생성되는 테이블에 기존 테이블의 전체 데이터 또는 조건부 데이터를 복사한다:
• SELECT 문에 조건을 추가하여 특정 데이터만 복사할 수도 있습니다.

'[자격증] > SQLD' 카테고리의 다른 글

[오답 풀이] 38회차 기출 변형  (0) 2025.03.07
[오답풀이] 2과목  (0) 2025.03.06
[2과목] 관리 구문  (0) 2025.03.03
[2과목] SQL 활용  (0) 2025.03.02
[2과목] SQL 기본  (0) 2025.03.01