Post

SQLD - 1과목. 데이터 모델링의 이해

Part 1. 데이터 모델링의 이해, Part 2. 데이터 모델과 SQL

1. 학습 내용

1

  • Part 1. 데이터 모델링의 이해
    1. 데이터 모델의 이해
    2. 엔티티
    3. 속성
    4. 관계
    5. 식별자
  • Part 2. 데이터 모델과 SQL
    1. 정규화
    2. 관계와 조인의 이해
    3. 모델이 표현하는 트랜젝션의 이해
    4. Null 속성의 이해
    5. 본질 식별자 vs 인조 식별자

2. 정리

SQL 자격 검정 실전 문제 (줄여서 노랭이)를 풀면서 강조되는 내용들은 별도 텍스트로 정리했다.

Part 1. 데이터 모델링의 이해

1. 데이터 모델의 이해

2

  • 업무와의 통합 - 데이터 모델링이 단순히 설계에 머무르는 것이 아니라 업무와의 통합이 진행되어야 함이 강조된다.
  • 비유연성 - 프로세스(비즈니스 로직)과 엔티티(테이블)의 라이프사이클은 다르다. 둘을 통합하면 효율성과 유연성이 저해될 수 있다. 반드시 분리해야 한다.

3

  • 개념 스키마 - 개념 스키마는 통합된 모든 사용자의 관점이다. 데이터 모델링은 통합관점의 뷰를 지닌 개념 스키마를 만들어가는 과정이다.
  • 각 스키마에 대한 관점을 이해해야 한다.
    • 외부 스키마 : 각각의 사용자 관점
    • 개념 스키마 : 통합된 사용자 (조직)의 관점 - 데이터 모델링의 과정이자 목적
  • ERD 작성 순서
    • 엔티티 도출 -> 엔티티 배치 -> 관계 설정 -> 관계명 기술

2. 엔티티

4

  • 특정 시나리오를 근거로 엔티티를 도출하는 문제가 출제된다. 2개 이상의 인스턴스 및 속성, 1개 이상의 관계를 지니는지 파악하라.
  • 발생 시점에 따른 엔티티 분류를 암기할 것 - 기본 -> 중심 -> 행위 엔티티 순으로 확장된다.

3. 속성

5

  • 특성에 따른 분류에 대해 숙지할 것 : 기본(일반), 설계(PK), 파생(성능, 편의)
  • 도메인 : 데이터 타입과 + 크기 + 제약사항에 대한 지정

4. 관계

6

Part 1. 데이터 모델링에서는 관계에 대한 문제가 가장 많았다.

  • 존재적 관계행위적 관계에 대해 명확히 비교할 수 있어야 한다.
    • 한 엔티티의 존재가 다른 엔티티에 영향을 미치면 존재적 관계
    • 엔티티 간의 관계는 행위적 관계
  • 관계의 표기법은 관계명, 관계차수, 선택사양 3가지 표현으로 구분한다.

  • 관계를 도출할 때 무엇을 확인해야 하는지 암기해야 한다.
    • 두 개의 엔티티 사이에 관심 있는 연관 규칙이 존재하는가?
    • 두 개의 엔티티 사이에 정보의 조합이 발생하는가?
    • 업무기술서, 장표에 관계 연결을 가능케 하는 동사(Verb)가 있는가?
    • 업무기술서, 장표에 관계 연결에 대한 규칙이 서술되어 있는가?
  • 객체의 연관(Association)관계의존(Dependency)관계에 대해 이해, 암기할 필요가 있다.
    • 연관관계는 의존관계보다 더 긴 관계를 유지한다
    • 연관관계는 생성자, 의존관계는 메서드의 파라미터로 불러온다(메서드가 끝나면 관계가 종료된다).

5. 식별자

7

  • 식별자 지정 조건에 대해 암기해야 한다 - 유일성, 최소성, 불변성, 존재성
    • unique, not null, 불변, 최소(복합키X)로 빠르게 암기하자
  • 식별자 관계와 비식별자 관계의 구분을 이해해야 한다 - 부모와 자식 간 엔티티가 독립적이냐(비식별) 종속적이냐(식졀)로 구분하면 편리하다.

  • 내부(본질) 식별자와 인조 식별자 간의 경계에 대해 파악해야 한다.
    • 주민등록번호, 사번, 학번 - 내부 식별자
    • 일련 번호 - 인조 식별자

Part 2. 데이터 모델과 SQL

정규화 파트부터 난이도가 급격히 상승한다. 이론 영역의 킬러문제는 정규화에서 출제될 것으로 예상된다.

1. 정규화

급격한 난이도 상승의 주범, **말장난이 추가되기 시작** 한다는 점에서 주의해야 한다.

8

함수 종속성을 이용하여 정규화의 필요성을 판단하게 만드는 문제가 자주 출제된다.

  • 함수 종속성 (Functional Dependency)
    • X의 값을 알면 Y의 값을 식별할 수 있고, X에 의해 Y가 달라질 때 Y는 X에 함수적 종속이라고 한다.
    • X->Y로 표현한다.
    • 등호 계산처럼 aX -> aY 같이 양변에 변수를 추가할 수 있다.
    • a->b b->c 따라서 a->c와 같이 관계를 연속할 수 있다.

정규형과 정규화라는 단어를 이용한 말장난 문제가 몇몇 출제되고 있다.

  • 정규형과 정규화
    • 제 1 정규형은 제 1 정규화가 진행 된 결과이다.
    • 제 2 정규형은 제 2 정규화가 진행 된 결과이다.
    • 제 3 정규형은 제 3 정규화가 진행 된 결과이다.

테이블을 주고 어떤 정규화를 진행해야 하는지 묻는 문제가 자주 출제된다. (함수형 종속성을 이용한 문제가 자주 출제된다)

  • 제 1 정규화 판단
    • 하나의 속성에 여러 개의 속성 값이 있을 경우
    • 여러 개의 비슷한 속성이 테이블에 있을 경우
  • 제 2 정규화 판단
    • 테이블 내에서 별도의 테이블로 분리할 수 있는 테이블이 있는지 판단
      • 부분적 종속 (PK에 종속되지 않은 속성)인지 판단
    • 제 2 정규화를 수행한 후 제 3 정규형에 부합하는 경우도 있음
    • 함수 종속성 (FD)에서 포함 관계가 확인 될 경우 제 2 정규화 대상임을 의심해야 함
  • 제 3 정규화 판단
    • A -> B, B -> C와 같이 연쇄되는 이행적 종속성 파악

2. 관계와 조인의 이해

9

  • FK를 통해 관계를 구성한다는 것을 이해해야 한다.
    • FK를 통해 테이블을 통합함을 이해해야 한다.

3. 모델이 표현하는 트랜젝션의 이해

4. Null 속성의 이해

  • NULL의 연산
    • NULL값과의 연산은 NULL값을 리턴
    • NULL값과의 비교연산은 거짓(FALSE)를 리턴
    • NULL은 상태이기 때문에 크고 작음을 비교할 수 없음
  • NULL의 입력
    • 오라클에서 ‘‘과 같이 입력했을 경우 null로 입력된다.
    • SQL Server에서 ‘‘과 같이 입력했을 경우 공백문자로 입력된다.
  • NULL의

5. 본질 식별자 vs 인조 식별자

10

  • 트랜젝션이 All or Nothing, 동시에 수행됨을 인지해야 한다.
  • null 값의 계산 결과는 null임을 인지해야 한다
  • 본질 식별자와 인조 식별자의 경계에 대해 이해해야 한다.
This post is licensed under CC BY 4.0 by the author.