본문 바로가기
Certificate Study/SQLD Study

SQLD Day 4

by bell_one 2026. 8. 3.

[문제 1] 1과목: 데이터 모델링의 이해

엔티티(Entity)의 속성(Attribute)에 대한 설명 중 가장 부적절한 것은?

① 엔티티가 관리하는 최소 단위의 데이터 항목이다.

② 하나의 속성은 인스턴스(행) 내에서 오직 하나의 값(Single Value)만 가져야 한다.

③ 속성도 엔티티와 마찬가지로 반드시 2개 이상의 인스턴스(데이터 행)를 가져야 의미가 있다.

④ 속성의 명칭은 해당 업무에서 사용하는 용어로 명확하고 중복되지 않게 부여해야 한다.

  • 상세 해설:
    • 인스턴스(행)를 가지는 주체는 엔티티입니다.
    • 속성(Attribute)은 엔티티를 구성하는 '세로줄(컬럼/항목)' 개념이므로 "2개 이상의 인스턴스를 가져야 한다"는 속성 자체에 적용되는 설명이 아닙니다. (엔티티가 2개 이상의 인스턴스를 가져야 하는 것입니다.)

[문제 2] 1과목: 데이터 모델링의 이해

데이터베이스의 정규화(Normalization) 과정 중, **"테이블 내의 모든 일반 속성이 기본키(Primary Key) 전체에 완전히 종속되어야 하며, 기본키의 일부에만 종속되는 부분 함수 종속을 제거하는 정규화 단계"**는?

① 제1정규화 (1NF)

② 제2정규화 (2NF)

③ 제3정규화 (3NF)

④ 보이스-코드 정규화 (BCNF)

  • 상세 해설:
    • 제1정규화 (1NF): 모든 속성의 값이 원자값(Atomic Value)을 가지도록 분해 (다중값 제거).
    • 제2정규화 (2NF): 기본키가 2개 이상의 컬럼으로 구성된 복합키일 때, 기본키의 일부에만 종속되는 '부분 함수 종속'을 제거하고 완전 함수 종속으로 만드는 단계.
    • 제3정규화 (3NF): 기본키가 아닌 일반 속성 간의 종속 관계인 '이행적 함수 종속(A ➔ B, B ➔ C)'을 제거하는 단계.

[문제 3] 2과목: SQL 기본

다음 중 SQL문에서 WHERE 절에 사용하는 논리 연산자의 우선순위가 높은 것부터 낮은 순서대로 올바르게 나열된 것은?

① NOT ➔ AND ➔ OR

② OR ➔ AND ➔ NOT

③ AND ➔ OR ➔ NOT

④ NOT ➔ OR ➔ AND

  • 상세 해설:
    • SQL 논리 연산자의 우선순위는 NOT > AND > OR 순서입니다.
    • 괄호 ()가 없다면 NOT이 가장 먼저 처리되고, 그 다음 AND, 마지막으로 OR가 평가됩니다.

[문제 4] 2과목: SQL 기본

다음 중 NULL 값의 처리 함수에 대한 설명으로 가장 올바르지 않은 것은? (Oracle/ANSI SQL 기준)

① NVL(A, B) : A가 NULL이면 B를 반환하고, A가 NULL이 아니면 A를 반환한다.

② NVL2(A, B, C) : A가 NULL이 아니면 B를 반환하고, A가 NULL이면 C를 반환한다.

③ NULLIF(A, B) : A와 B의 값이 같으면 NULL을 반환하고, 다르면 A를 반환한다.

④ COALESCE(A, B, C) : A, B, C 중 가장 작은 NULL 아닌 값을 반환한다.

  • 상세 해설:
    • COALESCE(A, B, C, ...): 크고 작음을 비교하는 함수가 아니라, 나열된 인자들 중 NULL이 아닌 '첫 번째' 값을 반환하는 ANSI 표준 함수입니다. (예: COALESCE(NULL, NULL, 30, 50) ➔ 30 반환)

[문제 5] 2과목: SQL 기본

아래의 학생 테이블에서 '전공'별로 학생 수가 3명 이상인 전공과 그 학생 수를 조회하고자 합니다. ( A )와 ( B )에 들어갈 키워드가 올바르게 짝지어진 것은?

SQL
 
SELECT 전공, COUNT(*)
FROM 학생
GROUP BY ( A )
( B ) COUNT(*) >= 3;

① (A) 전공, (B) WHERE

② (A) 전공, (B) HAVING

③ (A) 학번, (B) WHERE

④ (A) 학번, (B) HAVING

  • 상세 해설:
    • GROUP BY 전공: '전공' 컬럼을 기준으로 그룹화합니다.
    • HAVING: GROUP BY로 그룹화된 결과에 조건을 걸 때는 WHERE가 아닌 HAVING 절을 사용해야 합니다. (WHERE 절에는 COUNT(*) 같은 집계 함수 조건을 쓸 수 없습니다.)

'Certificate Study > SQLD Study' 카테고리의 다른 글

SQLD Day6  (0) 2026.08.05
SQLD Day 5  (0) 2026.08.04
SQLD Day 3  (0) 2026.07.31
SQLD Day 2  (0) 2026.07.30
SQLD Day 1  (0) 2026.07.29