📝자격증/SQLD

[SQLD] 1-2. 데이터 모델과 SQL

スモモ🍒 2024. 2. 24. 21:34

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

2. 데이터 모델과 SQL

  1) 정규화

  2) 관계와 조인의 이해

  3) 모델이 표현하는 트랜잭션의 이해

  4) Null 속성의 이해

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

 

* 설계도를 보고 어떤 구조인지 이해하는 게 중요한 것 같다.


1) 정규화

: 데이터에 대한 중복을 제거하고 데이터가 관심사별로 처리되도록 엔터티를 쪼개 성능을 향상 시키는 활동 (↔ * 반정규화)

  입력/삭제/수정은 성능 향상, 조회는 성능 향상 혹은 저하될 수 있다.

 

(* 반정규화 : 정규화한 데이터를 다시 함쳐 중복되기 하거나 통합, 분리등을 수행하는 모델링 방식, 2024 개편되면서 반정규화에 대한 내용이 없어진 듯..?)

 

* 함수적 종속 : 어떤 기준값(컬럼)에 의해 데이터가 종속되는 현상을 의미

ex) ID라는 속성을 선택 시 이름, 나이, 연봉을 가져올 수 있는 것)

 

* 정규화 순서

1. 비정규형

(도메인원자성을 확보)

2. 1NF : 엔터티에서 다중 속성이 있거나 하나의 속성에 여러 속성값이 있으면 원자값으로 쪼개준다.

(부분종속성 제거)

3. 2NF : 식별자에 부분 종속하는 대상을 쪼개준다. (하나의 속성만으로도 유일하게 구분이 가능하다면(부분적 종속이라면) 쪼개준다)

(이행종속성 제거)

4. 3NF : 엔터티에서 일반속성끼리 함수종속이 발생하여 쪼개준다. ex) 식별자가 2개일 경우 2개로 쪼개줌

(결정자 제거)

5. BCNF(보이스코드 정규화)

(다치종속 제거)

6. 4NF

(조인속성)

7. 5NF

 

2) 관계와 조인의 이해

* 조인 (JOIN)

: 식별자를 상속 후 데이터를 결합해 여러 엔터티에서 필요한 데이터를 한 번에 가져오는 것

 

* 계층형 데이터 모델 : 계층 구조를 가진 데이터를 저장한 모델 자기 자신의 엔터티와 관계가 발생하는 경우

* 상호배타적 관계 : A와 B가 C집단에 소속되었지만, 서로 공통적인 부분이 없는 관계 ( ], [ 으로 표현)

 

3) 모델이 표현하는 트랜잭션의 이해

* 트랜잭션 (Transaction)

: 데이터베이스의 논리적인 연산 단위 혹은 논리적인 업무 단위 (연산 하나하나를 뜻함)

 

* 식별 관계 (강한 연결관계, FK가 PK의 일부분) vs 비식별 관계 (약한 연결관계, FK가 PK의 일부분이 아님)

 

- IE  표기법 : 식별자 (PK), 외래키 (FK)

- BARKER 표기법 : 식별자 (#), 일반속성-필수값 (*), 일반속성-선택값(º)

 

4) Null 속성의 이해

* Null : 아직 정해지지 않은 값 (0이 아님)

- 필요한 이유?

  1) 아직 값이 들어오지 않았음을 표현

  2) 엔터티 특성상 행열 형태 유지

 => IE 표기법에서는 알기 어려우나, BARKER 표기법에서는 일반속성(선택값)에 Null을 표현할 수 있다.

 

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

* 본질식별자 : 업무에 의해 생성된 식별자

* 인조식별자 : 임의로 만들어낸 식별자

- 언제 써야 하는지? : 식별자로 이루어진 식별자가 너무 많다 = 인조식별자 사용


 

[ 참고 (이기적 무료강의) : https://www.youtube.com/@ydot0789/videos ]