SQLD 공부 실전문제 오답노트 - PART 1 - CH1. 데이터 모델링의 이해
SQLD - Week 5 - 실전문제 Part1 - 1. 데이터 모델링의 이해
12번
발생시점에 따른 엔터티 분류
- 기본 -> 중심 -> 행위
- 기본 : 독립적으로 생성됨, 고유한 주식별자를 가짐
- 업무에 원래 존재하는 정보
- 자식 엔터티를 가질수 있음
- 상품, 회원
- 중심 : 기본 엔터티에서 파생, 행위 엔터티를 생성
- 업무에서 핵심 역할을 함
- 데이터 양이 많이 발생
- 주문, 매출, 계약
- 행위 : 2개 이상의 엔터티에서 파생
- 자주 내용이 바뀌거나 데이터 양이 증가
- 분석 초기 단계보다 상세 설계단계/프로세스와 상관모델링을 진행하면서 도출
- 주문내역, 이벤트 응모 이력
- 기본 : 독립적으로 생성됨, 고유한 주식별자를 가짐
16번
정규화
- 2차 정규화 : 1차정규형을 만족하고, 모든 non-key 컬럼은 PK 전체에 종속되어야 함
19번
속성명 부여 주의사항
- 해당 업무에서 사용하는 이름 부여
- 서술식 속성명은 사용X
- 약어 사용은 가급적 제한
- 전체 데이터 모델에서 유일성 확보
22번
3단계 스키마 구조
-
ANSI-SPARC에서 정의한 3단계 스키마 구조
1) 외부 스키마 : View 단계로 여러 사용자 관점으로 구성된 개인적 DB 스키마
2) 개념 스키마 : 모든 사용자 관점을 통합한 전체 DB
- 위 두 단계에서 논리적인 데이터 독립성을 고려
3) 내부 스키마 : 물리적인 저장구조 - 데이터 저장구조, 컬럼 정의, 인덱스 등 -
특징 : 데이터 독립성 보장
- 논리적 독립성 : 개념 스키마 변경 -> 외부 스키마 영향 X
- 논리적인 구조가 변경되어도 응용프로그램 영향도는 X
- 사용자 특성에 맞게 변경 가능, 통합 구조의 변경도 가능
- 물리적 독립성 : 내부 스키마 변경 -> 외부/개념 스키마 영향 X
- 데이터베이스 파일 구조의 변화가 논리스키마에 영향을 주지 X
- 데이터베이스 색인구조 변화가 응용프로그램에 영향을 주지 X
- 논리적 독립성 : 개념 스키마 변경 -> 외부 스키마 영향 X
25번
두 엔터티 사이의 관계를 도출할때 확인해야할 사항
- 두 개의 엔터티 사이에 관심 있는 연관규칙이 존재하는가?
- 두 개의 엔터티 사이에 정보의 조합이 발생하는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
- 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?
27번
인조식별자
- 인위적으로 만들어지는 식별자 (꼭 필요하지 않지만 관리의 편이성 등의 이유로 인위적으로 만들어지는 식별자)
- 본질식별자가 복잡한 구성을 가질때 인위적으로 생성(후보 식별자중 PK로 선정할 만한게 없을때)
- 꼭 필요한 경우에만 사용을 권장
- 주로 각 행을 구분하기 위한 기본키로 사용
- 자동으로 증가하는 일련번호 같은 형태
- e.g. 매매 엔터티의 매매번호
- 참고: 블로그
28번
- 이름은 동명이인이 있을수 있기떄문에 주식별자로 사용하기 부적합함
34번
함수 종속성 Functional Dependency
- 함수처럼 어떠한 값을 통해 종속 관계에 있는 다른 값을 유일하게 결정할수 있다
- e.g. 테이블에 [생일], [나이]라는 컬럼이 존재할때
- [나이]는 [생일]에 종속한다 : 생일을 알고 있으면 나이를 참조하지 않아도 나이를 결정할수 있음
- e.g. 테이블에 [생일], [나이]라는 컬럼이 존재할때
- 데이터베이스 설계단계에서 함수 종속 관계를 찾으면 중복된 데이터를 줄일수 있음
함수 종속의 성질(암스트롱의 공리 Armstrong’s axioms)
- augmentation : X → Y이면, XZ → YZ
- transitivity : X → Y이고 Y → Z이면, X → Z
- reflexivity : Y $\sub$ X, X → Y
- self-determination : X → X (자기 자신은 자신에 의해 함수 종속적이다)
- union : X → Y이고 X → Z이면, X → YZ
- decomposition : X → YZ이면, X → Y이고 X → Z
35번, 40, 41, 44번
정규화 단계
- 제1정규형(1 Normal Form: 1NF) : 엔터티의 모든 속성은 반드시 하나의 값만 가져야 한다
- 유사한 속성이 반복되면 -> 1차 정규화!
- 테이블의 컬럼은 하나의 값(원자값)을 갖도록 테이블 분해
- 제2정규형(2 Normal Form: 2NF) : 엔터티의 모든 속성은 반드시 모든 주식별자에 종속되어야한다
- 어떤 속성이 일부 주식별자에만 종속되어있다면 -> 2차 정규화!
- 부분 함수 종속성 제거 : 완전 함수 종속 만족
- 릴레이션에서 종속자가 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 되어있을때
- 기본키를 구성하는 속성 중 일부만 종속된 경우
- 릴레이션에서 종속자가 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 되어있을때
- 제3정규형(3 Normal Form; 3NF) : 주식별자가 아닌 모든 속성간에는 서로 종속될수 없다
- 2차 정규화를 진행한 테이블에 이행적 종속이 없도록 테이블을 분해하는 것
- 이행적 종속 : A → B, B → C 성립할때 A → C가 성립하는 것
- 이행함수 종속성 제거
- 속성간에 종속되어있다면 -> 3차 정규화!
- 기본키가 있는데 일반속성이 일반속성을 결정하는 경우
- 2차 정규화를 진행한 테이블에 이행적 종속이 없도록 테이블을 분해하는 것
- 제4정규형 : 다중값 종속성 제거 -> 4차 정규화!