티스토리 뷰

AI/SQL

[SQL] 이상 현상과 정규화

brave_sol 2025. 4. 9. 15:08

1. 이상현상

- 잘못된 데이터베이스 설계로 발생하는 오류

- 삽입 이상: 데이터를 삽입할 때 불필요한 내용까지 삽입해야 하는 문제

- 갱신 이상: 중복된 데이터 중 일부만 갱신되어 발생하는 문제

- 삭제 이상: 어떤 데이터를 삭제할 때 다른 유용한 정보도 함께 삭제되는 문제

 

2. 함수 종속성

- 어떤 속성 x(결정자)의 한 값이 다른 속성 y(종속자)에 속한 하나의 값에만 매핑되는 경우

- 예: ID → 이름

 

1) 완전 함수 종속

- 기본키를 구성하는 속성 모두가 결정자 역할을 하는 경우

2) 부분 함수 종속: 2차 정규화 원인

- 기본키를 구성하는 속성 중 일부가 결정자 역할을 하는 경우

- 기본키가 복합키이거나 후보키가 결정자인 경우에 부분 함수 종속이 발생할 수 있다

3) 이행 함수 종속: 3차 정규화 원인

* 결정자란? 어떤 속성(컬럼)이 다른 속성의 값을 '결정'할 수 있을 때, 그 속성

 

3. 정규화(Normalization)

- 이상 현상을제거하기 위해 데이터베이스를 구조화하는 과정

- 데이터 간의 종속성을 제거하여 중복되는 데이터를 줄임

- 데이터의 일관성과 무결성을 보장

비정규화 DB
         ↓        ←  도메인이 원자값 
1차 정규화
         ↓        ←  부분 함수 종속 제거(완전 함수 종속이 되도록 만들어줌)
2차 정규화        
         ↓        ←  이행 함수 종속 제거(X→Y, Y→Z => X→Z)
3차 정규화 ----------------------(일반적으로 3차까지 많이 함)
         ↓        ← 결정자이면서 후보키가 아닌 것 제거
     BCNF
         ↓        ← 다치 종속 제거
4차 정규화
         ↓        ← 조인 종속 제거
5차 정규화

 

1) 1차 정규화

- 한 칸에 자료가 여러개 들어감 => 하나의 속성에 하나의 값만 들어갈 수 있게 분해

- 테이블의 컬럼이 하나의 값만 갖도록 도메인을 원자값으로 설정하는 과정

* 원자값 : 더 이상 나눌 수없는 가장 작은 값

 

2) 2차 정규화

- 부분 함수 종속을 제거하고 완전 함수 종속이 되도록 테이블을 분해하는 과정

 

3) 3차 정규화

- 이행 함수 종속을 제거하도록 테이블을 분해하는 과정

- A를 알면 B를 알고 C까지 알 수 있는 경우( A→B , B→C  => A→C)

 

4) BCNF

- 결정자이면서 후보키가 아닌 것 제거(=결정자 A가 후보키여야함) 

* 결정자: 어떤 속성(컬럼)을 결정할 수 있는 속성(A→B라면, A가 결정자)

** 함수 종속(A→B는 A를 알면 B가 결정된다는 뜻) 

*** 후보키: 모든 튜플(행)을 유일하게 식별할 수 있는 최소 속성 집합(중복 없이 사람을 찾아낼 수 있는 최소한의 정보)

 

5) 4차 정규화

- 다치종속: 한 속성이 정해지면, 다른 속성들이 서로 독립적으로 여러 개씩 연결될 수 있는 경우

 

6) 5차 정규화

- 조인 종속: 한 릴레이션(테이블)이 여러 개의 분리된 테이블로 나눠졌을 때, 그 테이블들을 다시 조인하면, 원래 테이블이 정확히 복원되는 관계

 

반응형

'AI > SQL' 카테고리의 다른 글

[SQL] 인덱스와 뷰, JOIN  (0) 2025.04.17
[SQL] CAST, IN, ANY, ALL, 서브쿼리  (0) 2025.04.13
[SQL] 제약조건, 키(Key), 인덱스  (0) 2025.04.08
[SQL] 리눅스(ubuntu)에 mysql 설치, SQL 기본 문법  (0) 2025.04.08
[SQL] 데이터와 정보  (0) 2025.04.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함