본문 바로가기
카테고리 없음

SQL 개발자 자격증 준비 2) 데이터 모델과 SQL

by 오잉쿡 2024. 5. 22.
반응형

1. 정규화 : for 데이터의 무결성 보장

- 데이터 정합성(데이터의 정확성/일관성을 유지하고 보장)을 위해 엔터티를 작은 단위로 분리하는 과정. 

ㄴ 데이터의 중복성을 제거한다

ㄴ 정규화를 할수록 엔터티는 증가한다 > JOIN으로 인한 조회 성능 저하 발생 여지 O

- 정규화를 할 경우 데이터 조회성능은 처리조건에 따라 향상되는 경우도 있고 저하되는 경우도 있지만,

입력,수정,삭제 성능은 일반적으로 향상된다고 볼 수 있음.

 

🌟제 1정규형 : 모든 속성은 반드시 하나의 값만 가져야 한다.

ㄴ 하나의 속성이 다중값을 가지는 경우 어플리케이션에서 데이터를 꺼내 쓸 때 불필요한 Split을 사용해야 하는 번거로움 발생.

- 유사한 속성이 반복되는 경우도 1차 정규화의 대상이 된다.

ㄴ 한 엔터티 내에 유사한 속성이 반복되는 경우, 데이터가 늘어날 때 계속해서 속성을 추가해야하고, 모든 인스턴스가 추가된 속성의 개수만큼 속성값을 가지고 있지 않을 수 있다(NULL) >> 공간의 낭비 발생할 여지 O

 

🌟 제 1차 정규화 

→ 속성값이 하나가 되도록 엔터티 분리 

ㄴ 원자값이 아닌 도메인을 분리한다. 

→  유사한속성이 반복되지 않도록 엔터티 분리  

 

🌟 제 2정규형 : 엔터티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 한다. (부분종속X)

 

🌟 제 2차 정규화

→ 주식별자에 대한 부분종속이 없도록 엔터티 분리 

ㄴ부분함수 종속성을 제거한다. 

 

🌟 제 3정규형 : 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다. 

 

🌟 제 3차 정규화

→ 다른 일반속성에 종속되지 않도록 엔터티를 분리한다.

ㄴ 이행 함수의 종속성을 제거한다. 

 

2. 트랜젝션 : 데이터를 조작하기 위한 하나의 논리적인 작업 단위. 논리적으로 하나의 단위로 묶어서 진행.

ㄴ 데이터 모델로 표현 가능, 데이터는 트랜잭션 범위로 묶일 수 있다. (물리적인X)

ex. 온라인에서 퀴즈의 정답을 맞히면 쿠폰을 즉시 발행해주는 이벤트 진행 중, 쿠폰은 선착순 100명에게만 지급, 

- 이벤트 응모 이력을 저장한다 

- 쿠폰을 발행한다 

위 2가지 작업을 논리적으로 하나의 단위로 묶어야 함 > 이벤트 응모 이력을 정상적으로 저장했으나, 그 순간 선착순 100개 쿠폰이 모두 소진되었다고 했을 때 쿠폰 발생 실패 > 이벤트 응모 이력 또한 롤백 되어야 함 .

 

3. NULL : 존재하지 않음, 값이 없음을 의미 

**0과 다른 개념.

**NULL과 'NULL'은 같은 데이터가 아니다 > 'NULL'은 텍스트를 의미함.

어떠한 사유로 데이터가 입력되지 않아 NULL값이 된 것이지 0은아니다.

**가로연산(LOW) : NULL이 포함되어 있으면 결과값은 NULL이 된다. 

**세로 연산(COLUMN) : 다른 인스턴스의 데이터와 연산할 때는 NULL 값을 제외한다.  

**NULL이 포함된 사칙연산의 결과는 항상 NULL이다. 

**데이터를 집계할 때 NULL은 집계 대상에서 제외된다.

**WHERE COL IS NULL 조건은 WHERE COL = NULL 조건과 같다. (X) 

ㄴ WHERE COL IS NULL 조건은 COL값이 NULL인 행을 반환하지만, 

COL = NULL의 결과는 항상 False이므로 WHERE COL = NULL 조건은 아무 행도 반환하지 않습니다. 

**WHERE COL IS NOT NULL 조건은 COL이 NULL이 아닌 행만 출력하는 조건이다.

 

4.성능데이터 모델링 : 데이터베이스의 성능을 향상시키기 위해 설계단계부터 성능과 관련된 사항들이 모델링에 반영될 수 있다. 성능 데이터 모델링의 방법으로는 정규화 / 반정규화 / 테이블 통합 / 테이블 분할 등이 있다. 

 

5. 이력 테이블 컬럼 추가

ㄴ 대량의 이력 테이블을 조회할 때, 속도가 느려질 것을 대비해서 조회 기준이 될 것으로 판단되는 컬럼을 미리 추가해 놓는 방식. 

 

 

 

 

 

 

 

 

반응형

댓글