SQLD - 1과목. 데이터 모델링의 이해
Part 1. 데이터 모델링의 이해, Part 2. 데이터 모델과 SQL
1. 학습 내용
- Part 1. 데이터 모델링의 이해
- 데이터 모델의 이해
- 엔티티
- 속성
- 관계
- 식별자
- Part 2. 데이터 모델과 SQL
- 정규화
- 관계와 조인의 이해
- 모델이 표현하는 트랜젝션의 이해
- Null 속성의 이해
- 본질 식별자 vs 인조 식별자
2. 정리
SQL 자격 검정 실전 문제 (줄여서 노랭이)를 풀면서 강조되는 내용들은 별도 텍스트로 정리했다.
Part 1. 데이터 모델링의 이해
1. 데이터 모델의 이해
- 업무와의 통합 - 데이터 모델링이 단순히 설계에 머무르는 것이 아니라 업무와의 통합이 진행되어야 함이 강조된다.
- 비유연성 - 프로세스(비즈니스 로직)과 엔티티(테이블)의 라이프사이클은 다르다. 둘을 통합하면 효율성과 유연성이 저해될 수 있다. 반드시 분리해야 한다.
- 개념 스키마 - 개념 스키마는 통합된 모든 사용자의 관점이다. 데이터 모델링은 통합관점의 뷰를 지닌 개념 스키마를 만들어가는 과정이다.
- 각 스키마에 대한 관점을 이해해야 한다.
- 외부 스키마 : 각각의 사용자 관점
- 개념 스키마 : 통합된 사용자 (조직)의 관점 - 데이터 모델링의 과정이자 목적
- ERD 작성 순서
- 엔티티 도출 -> 엔티티 배치 -> 관계 설정 -> 관계명 기술
2. 엔티티
- 특정 시나리오를 근거로 엔티티를 도출하는 문제가 출제된다. 2개 이상의 인스턴스 및 속성, 1개 이상의 관계를 지니는지 파악하라.
- 발생 시점에 따른 엔티티 분류를 암기할 것 - 기본 -> 중심 -> 행위 엔티티 순으로 확장된다.
3. 속성
- 특성에 따른 분류에 대해 숙지할 것 : 기본(일반), 설계(PK), 파생(성능, 편의)
- 도메인 : 데이터 타입과 + 크기 + 제약사항에 대한 지정
4. 관계
Part 1. 데이터 모델링에서는 관계에 대한 문제가 가장 많았다.
- 존재적 관계와 행위적 관계에 대해 명확히 비교할 수 있어야 한다.
- 한 엔티티의 존재가 다른 엔티티에 영향을 미치면 존재적 관계
- 엔티티 간의 관계는 행위적 관계
관계의 표기법은 관계명, 관계차수, 선택사양 3가지 표현으로 구분한다.
- 관계를 도출할 때 무엇을 확인해야 하는지 암기해야 한다.
- 두 개의 엔티티 사이에 관심 있는 연관 규칙이 존재하는가?
- 두 개의 엔티티 사이에 정보의 조합이 발생하는가?
- 업무기술서, 장표에 관계 연결을 가능케 하는 동사(Verb)가 있는가?
- 업무기술서, 장표에 관계 연결에 대한 규칙이 서술되어 있는가?
- 객체의 연관(Association)관계와 의존(Dependency)관계에 대해 이해, 암기할 필요가 있다.
- 연관관계는 의존관계보다 더 긴 관계를 유지한다
- 연관관계는 생성자, 의존관계는 메서드의 파라미터로 불러온다(메서드가 끝나면 관계가 종료된다).
5. 식별자
- 식별자 지정 조건에 대해 암기해야 한다 - 유일성, 최소성, 불변성, 존재성
- unique, not null, 불변, 최소(복합키X)로 빠르게 암기하자
식별자 관계와 비식별자 관계의 구분을 이해해야 한다 - 부모와 자식 간 엔티티가 독립적이냐(비식별) 종속적이냐(식졀)로 구분하면 편리하다.
- 내부(본질) 식별자와 인조 식별자 간의 경계에 대해 파악해야 한다.
- 주민등록번호, 사번, 학번 - 내부 식별자
- 일련 번호 - 인조 식별자
Part 2. 데이터 모델과 SQL
정규화 파트부터 난이도가 급격히 상승한다. 이론 영역의 킬러문제는 정규화에서 출제될 것으로 예상된다.
1. 정규화
급격한 난이도 상승의 주범, **말장난이 추가되기 시작** 한다는 점에서 주의해야 한다.
함수 종속성을 이용하여 정규화의 필요성을 판단하게 만드는 문제가 자주 출제된다.
- 함수 종속성 (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. 관계와 조인의 이해
- FK를 통해 관계를 구성한다는 것을 이해해야 한다.
- FK를 통해 테이블을 통합함을 이해해야 한다.
3. 모델이 표현하는 트랜젝션의 이해
4. Null 속성의 이해
- NULL의 연산
- NULL값과의 연산은 NULL값을 리턴
- NULL값과의 비교연산은 거짓(FALSE)를 리턴
- NULL은 상태이기 때문에 크고 작음을 비교할 수 없음
- NULL의 입력
- 오라클에서 ‘‘과 같이 입력했을 경우 null로 입력된다.
- SQL Server에서 ‘‘과 같이 입력했을 경우 공백문자로 입력된다.
- NULL의
5. 본질 식별자 vs 인조 식별자
- 트랜젝션이 All or Nothing, 동시에 수행됨을 인지해야 한다.
- null 값의 계산 결과는 null임을 인지해야 한다
- 본질 식별자와 인조 식별자의 경계에 대해 이해해야 한다.
This post is licensed under CC BY 4.0 by the author.