본 포스팅은
BDA 빅데이터분석학회 SQLD 스터디 학습내용입니다.
[2024 이기적 SQL 개발자 이론서+기출문제]
서적과 강의를 바탕으로 서술한 내용임을 밝힙니다.
01. 정규화
: 데이터에 대한 중복을 제거하고 데이터가 관심자별로 처리되도록 엔터티를 쪼개 성능을 향상시키는 활동
단, 정규화가 대체적으로 좋은 것이며, 경우에 따라서 반정규화(중폭 포함, 엔터티 합침)가 더 이득일 수도 있음
→ 정규화시 입력/삭제/수정은 성능 향상↑, 조회는 성능 향상 혹은 저하될 수 있다.
함수적 종속
:어떤 기준 값(컬럼)에 의해 데이터가 종속되는 현상을 의미
ex) 결정자(아이디) → 종속자(이름, 나이, 연봉, 부서ID, 부서명): 아이디가 나머지 모든 칼럼을 함수 종속한다.
1. 1차 정규화
: 엔터티에서 다중 속성이 있거나 하나의 속성에 여러 속성값이 있으면 원자값으로 쪼개준다.
→ 도메인(속성 입력 값의 범위)원자성(1개)
2. 2차 정규화
: [1차정규형→2차정규형(NF)] 형태로 엔터티를 변경하는 활동이다.
식별자에 부분 종속하는 대상을 쪼개어 준다.
즉, 결정자 전부에 나머지 칼럼이 완전 종속하지 않고, 결정자 부분적으로도 종속한다면 쪼개야 한다.
- 위에서는 부분 종속한다는 것은 따로 뜯어낸다.(결정자는 주 식별자로)
- 기존 엔터티에서 학번이 가져간 일반속성을 제외하고 입력한다.
- 기존 데이터를 파악하여 관계를 설정한다.
3. 3차 정규화
: 엔터티에서 일반속성끼리 함수종속이 발생하면 쪼개준다.
결정자(직원ID) → 종속자(나머지 칼럼들) : 완전함수종속(2NF 만족)
하지만, 나머지 칼럼 중에서 결정자(부서 ID) → 종속자(부서명)가 발생했기 때문에 쪼개준다.
반정규화(=역정규화): 현재는 빠진 내용
: 정규화한 데이터를 다시 합쳐서 중복되게 하거나 통합, 분리 등을 수행하는 모델링 방식
- 반정규화가 필요한 대상을 찾아본다.
- 다른 방법이 없는지 검토해 본다.
- 달리 방법이 없다면 반정규화를 적용한다. → 실제로 잘 사용하지 않음
컬럼 반정규화
(1) 중복컬럼 추가: 테이블에 중복되는 컬럼을 추가해 조인을 감소
02. 관계와 조인의 이해
조인
: 식별자를 상속해 이를 이용하여 데이터를 결합해 여러 엔터티에서 필요한 데이터를 한 번에 가져오는 것
계층형 데이터 모델
: 계층구조를 가진 데이터를 저장한 모델 자기 자신의 엔터티와 관계가 발생하는 경우
상호배타적 관계
: A와 B가 C집단에 소속되었지만, 서로 공통적인 부분이 없는 관계
03. 모델이 표현하는 트랜직션의 관계
트랜직션
: 데이터베이스의 논리적인 연산 단위 혹은 논리적인 업무단위
- 식별자관계: 외래키(빌려온 키)가 PK(식별자)의 일부분인가?
- 비식별자관계: 외래키(빌려온 키)가 PK(식별자)의 일부분이 아닌가?
IE: 실선(중복 X, 빈값 X(존재성))이 강한 연결관계
Barker: 똑같이 #으로 표시되면 강한 연결관계
04. NULL 속성의 이해
NULL
: 아직 정해지지 않은 값을 의미
- 어떤 값이 들어오지 않았음을 표현
- 테이블(=엔터티)의 특성상 행X열 형태를 유지해야 함
BARKER 표기법에서는 O표시가 NULL이 들어와도 됨을 의미한다.
cf. IE 표기법에서는 NULL이 들어와도 되는지 알 수 없다.
05. 본질식별자 vs. 인조식별자
식별자 분류
- 대표성여부: 주식별자 vs. 보조식별자
- 스스로생성여부: 내부식별자 vs. 외부식별자
- 단일속성여부: 단일식별자 vs. 복합식별자
- 대체여부: 본질식별자 vs. 인조식별자
'자격증 > SQLD' 카테고리의 다른 글
[SQLD] 2파트 SQL 기본 및 활용 - SQL 활용 (0) | 2024.11.16 |
---|---|
[SQLD] 2파트 SQL 기본 및 활용 - SQL 기본 학습 (2) | 2024.11.02 |
[SQLD] 1파트 데이터 모델링(Data Modeling) (5) | 2024.10.27 |
댓글