과목 I. 데이터 모델링의 이해
제2장 데이터 모델과 SQL
제1절 정규화
제2절 관계와 조인의 이해
제3절 모델이 표현하는 트랜잭션의 이해
제4절 Null 속성의 이해
제5절 본질식별자 vs. 인조식별자
# 함수 종속성(Functional Dependency)
* ab → cde, e → b, d → ab: ab는 자신인 ab와 cde를 결정하므로 모든 속성을 결정한다. 따라서 후보 키가 된다.
* e → b, ae → ab → cde, ae → cde: ae는 모든 속성을 결정한다.
* d → ab → cde: d는 모든 속성을 결정한다.
# 제2정규형
* 엔터티의 일반 속성은 주식별자 전체에 종속이어야 한다.
# 정규화와 성능
* 정규화를 수행하면 중복 속성을 제거하여 용량을 최소화
* 일반적으로 정규화 수행 시 데이터 처리 성능이 향상
* 반정규화가 조회 성능을 항상 향상시키는 것은 아니며, 때로는 정규와에 의해 성능이 향상될 수도 있다.
* 정규화로 인해 조회 성능이 저하될 수 있다. 이 때문에 반정규화를 고려한다.
# 1차 정규화의 대상
* 칼럼에 의한 반복적인 속성값을 갖는 형태는 속성의 원자성을 위배
* 반복적인 속성 나열 형태에서는 각 속성에 대해 'or' 연산자로 연결된 조건들이 사용되는데, 이때 어느 하나의 속성이라도 인덱스가 정의되지 않으면 'or'로 연결된 모든 조건절들이 인덱스를 사용하지 않고 한 번의 전체 데이터 스캔으로 처리되게 되어 성능 저하가 나타날 수 있다.
* 모든 반복 속성에 인덱스를 생성하면 검색 속도는 좋아지겠지만 반대로 너무 많은 인덱스 때문에 입력, 수정, 삭제의 성능이 저하
# 어떤 릴레이션 R이 제2정규형이고, 기본키에 속하지 않은 속성 모두가 기본키에 이행적 함수 종속이 아닐 때 제3정규형에 속한다.
# 데이터 모델링의 정규화
* 정규화는 논리 데이터 모델 상세화 과정의 대표적인 활동으로, 논리 데이터 모델의 일관성을 확보하고 중복을 제거하여 속성들이 가장 적절한 엔터티에 배치되도록 함으로써 보다 더 신뢰성 있는 데이터 구조를 얻는 데 목적이 있다.
* 제1정규형은 모든 인스턴스가 반드시 하나의 값을 가져야 함을 의미한다.
* 제3정규형을 만족하는 엔터티의 일반 속성은 주식별자 전체에 종속적이다.
* 반정규화는 성능을 위해 데이터 중복을 허용하는 것이지만 성능의 향상을 항상 보장하는 것은 아니다.
# 관계(Relationship)와 조인(Join)
* 조인(Join)이란 식별자를 상속하고, 상속된 속성을 매핑키로 활용하여 데이터를 결합하는 것을 의미한다.
* 부모의 식별자를 자식의 식별자로 포함하면 식별 관계, 부모의 식별자를 자식의 일반 속성으로 상속하면 비식별 관계라고 할 수 있다.
* 관계(Relationship)를 맺는다는 것은 식별자를 상속시키고 해당 식별자를 매핑키로 활용해 데이터를 결합해 보겠다는 것을 의미한다.
# NULL
* 모르는 값을 의미
* 값의 부재를 의미
* 공백 문자(Empty String) 혹은 숫자 0과 동일하지 않다.
* NULL과의 모든 비교(IS NULL 제외)는 알 수 없음(Unknown)을 반환한다.
# 순차적으로 수행되는 작업 A와 B가 반드시 모두 수행되거나 모두 수행되지 않아야 한다고 할 때, 이에 대한 설명
* A와 B는 하나의 트랜잭션으로 묶여 처리되어야 한다.
* 커밋은 A와 B를 모두 수행한 다음에 해주어야 한다.
* A와 B에 주어진 조건은 트랜잭션의 원자성(Atomicity)에 해당한다.
* A까지만 수행되고 시스템 장애가 발생했다면 A를 undo해야 한다.
# NULL 값
* NULL 값에 어떤 숫자를 더해도 결과는 항상 NULL이다.
* NULL 값과 어떤 숫자의 크기를 비교한 결과는 항상 unknown이다.
* "NULL = NULL" 연산의 결과는 FALSE 또는 unknown이다.
* 집계 함수를 계산할 때 NULL 값은 0이 아니라 계산에서 제외된다.
# 본질식별자와 인조식별자
* 인조식별자는 대체로 본질식별자가 복잡한 구성을 가질 때 만들어진다.
* 인조식별자를 사용하면 중복 데이터를 막기 어려워진다.
* 인조식별자를 사용하면 본질식별자를 사용할 때와 비교하여 추가적인 인덱스가 필요해진다.
* 인조식별자는 단점도 존재하므로 꼭 필요한 경우에만 사용하는 것이 바람직하다.
'study .. > SQLD' 카테고리의 다른 글
| [과목 II. SQL 기본 및 활용] 제1장 SQL 기본: contents (2) | 2025.08.17 |
|---|---|
| [과목 II. SQL 기본 및 활용] 제1장 SQL 기본: index (1) | 2025.08.17 |
| [과목 I. 데이터 모델링의 이해] 제2장 데이터 모델과 SQL: index (3) | 2025.08.13 |
| [과목 I. 데이터 모델링의 이해] 제1장 데이터 모델링의 이해: contents (3) | 2025.08.11 |
| [과목 I. 데이터 모델링의 이해] 제1장 데이터 모델링의 이해: index (0) | 2025.07.31 |