[SQLD 학습 정리] 노랭이 오답노트 과목 1, 제 2장 - 데이터 모델과 SQL

도비·2025년 2월 27일

SQLD

목록 보기
4/5
post-thumbnail

39. 아래 논리 데이터 모델을 3차 정규화까지 수행했을 때 도출되는 엔터티 수로 가장 적절한 것은?

(단, 하나의 대출자에 대해 하나의 대출번호로 여러개의 도서 대출/반납을 관리한다고 가정하고, 엔터티 통합은 고려하지 않음)

1️⃣ 5
2️⃣ 6
3️⃣ 7
4️⃣ 8

📌 개념
1NF : 원자성 만족
2NF : 완전함수종속성 만족
3NF : 이행적종속성 제거

✅ 해설
1NF 수행

  • LAB실이용신청일, 시작일, 이용승인교수번호, 교수명 )-> 여러 속성값을 가짐 -> 엔터티 분리
  • 테이블 : 학생, LAB실이용신청, 도서 대출
    2NF 수행
  • PK가 각각 하나로 구성되어있기에 이미 완전함수종속성을 만족함
  • 테이블 : 학생, LAB실이용신청, 도서 대출
    3NF 수행
  • LAB실이용신청에서 교수명이용승인교수번호에 종속 -> 교수 엔터티 분리
  • 학생에서 학과명학과번호에 종속 -> 학과 엔터티 분리
  • 대출도서명, 출판사명, 출판년월, 대표저자명, ISBN대출도서번호에 종속 -> 대출도서 엔터티 분리
  • 대출도서 엔터티에서 PK는 대출번호도서번호로 구성됨
    - 도서명, 출판사명, 출판년월, 대표저자명, ISBN도서번호에 종속 -> 부분함수종속성을 가짐
    - 완전함수종속성을 만족시키기 위해(2NF 과정) 대출도서도서로 엔터티 분리
  • 결과적으로 학과, 학생, 교수, LAB실이용신청, 도서대출, 대출도서, 도서 엔터티로 분리
    3️⃣ (정답) 7개 (학과, 학생, 교수, LAB실이용신청, 도서대출, 대출도서, 도서)

41. 데이터 모델링의 정규화에 대한 설명으로 가장 적절하지 않은 것은?

1️⃣ 정규화는 개념 데이터 모델의 일관성을 확보하고 중복을 제거하여 속성들이 가장 적절한 엔터티에 배치되도록 한다.
2️⃣ 제1정규형은 모든 인스턴스가 반드시 하나의 값을 가져야 함을 의미한다.
3️⃣ 제3정규형을 만족하는 엔터티의 일반속성은 주식별자 전체에 종속적이다.
4️⃣ 반정규화는 성능을 위해 데이터 중복을 허용하는 것이지만 성능의 향상을 항상 보장하는 것은 아니다.

📌 개념
데이터 모델링의 3단계

  • 개념적 모델링 : 개념적 설계 -> ERD 작성
  • 논리적 모델링 : 세부속성, 식별자, 관계 설계 -> 정규화 수행
  • 물리적 모델링 : 실제 데이터베이스 구축 -> 반정규화를 수행하기도 함

✅ 해설
정규화는 개념 데이터 모델링 과정이 아닌 논리 모델링 과정에 속함.
1️⃣ (정답) 논리 모델링 과정에 대한 설명
2️⃣ 1차정규형 - 원자성 만족
3️⃣ 3차정규형 - 이행적 종속성 제거 = 일반속성에 종속되는 다른 일반속성이 없음
4️⃣ 반정규화 - 중복 허용, 조인 감소 -> 조회 성능 향상 / 유연성 감소


43. 아래에서 설명하는 정규형으로 가장 적절한 것은?

엔터티의 일반속성은 주식별자 전체에 종속적이어야 한다. 

1️⃣ 제1정규형
2️⃣ 제2정규형
3️⃣ 제3정규형
4️⃣ 보이스-코드 정규형

📌 개념
1NF : 원자성 만족
2NF : 완전함수종속성 만족
3NF : 이행적종속성 제거

✅ 해설
2️⃣ (정답) 식별자에 일반속성이 종속됨 = 완전함수종속성 만족


49. NULL 값에 대한 설명으로 가장 적절한 것은?

1️⃣ NULL 값에 어떤 숫자를 더해도 결과는 항상 NULL이다.
2️⃣ NULL 값과 어떤 숫자의 크기를 비교해도 결과는 항상 NULL이다.
3️⃣ "NULL = NULL" 연산의 결과는 TRUE이다.
4️⃣ 집계 함수를 계산할 때 NULL 값은 0으로 처리된다.

📌 개념

  • NULL을 포함한 연산 결과는 (NULL을 핸들링하는 함수를 제외하면) 항상 NULL이다.
  • 그룹 함수는 NULL을 제외하고 연산을 수행한다.

✅ 해설
1️⃣ (정답) NULL 핸들링 함수를 제외한 NULL과의 연산 결과는 항상 NULL이다.
2️⃣ 예외가 존재한다. (ORDER BY에서 NULL값과 비교가 이루어짐, DISTINCT FROM 마찬가지)
3️⃣ NULL 핸들링 함수를 제외한 NULL과의 연산 결과는 항상 NULL이다.
4️⃣ 그룹함수는 NULL을 0으로 처리하는게 아니라 제외하고 연산한다.


50. 본질식별자와 인조식별자에 대한 설명으로 가장 적절하지 않은 것은?

1️⃣ 인조식별자는 대체로 본질식별자가 복잡한 구성을 가질 때 만들어진다.
2️⃣ 인조식별자를 사용하면 중복 데이터를 막기 어려워진다.
3️⃣ 인조식별자를 사용하면 본질식별자를 사용할 때와 비교하여 추가적인 인덱스가 필요하다.
4️⃣ 인조식별자는 개발 편의성을 높여주기 때문에 되도록 사용하는 것이 바람직하다.

📌 개념
식별자의 대체 여부에 따른 분류

  • 본질 식별자 : 업무 프로세스에서 차용
  • 인조 식별자 : 인위적으로 만듦

✅ 해설
2️⃣ 실제 데이터를 구분하는 정보가 없다는 측면에서 맞는 설명
4️⃣ (정답) 되도록 사용하는 것이 -> 단점()도 존재하기에 필요시 사용해야 함


profile
문과 였던 것...

0개의 댓글