정규화를 본격적으로 알기 전 이상 현상에 대해 알고갑시다.
좋은 관계형데이터베이스를 설계하는 목적 중 하나가 이상 현상이 생기지 않게 설계하는 것인데요
그렇다면 이상현상이란 뭘까요?
💡 이상 현상(anomaly)
: 데이터베이스에서 삽입, 업데이트, 삭제를 제대로 할 수 없게 되는 경우
1) 삽입 이상
: 자료를 삽입할 때 의도하지 않은 자료까지 삽입해야만 자료를 테이블에 추가할 수 있는 경우
2) 업데이트 이상
: 중복된 데이터가 여러 곳에 저장되어 있는데, 그 중 일부만 수정되면 서로 다른 값이 되어 데이터 모순이 발생하는 현상.
3) 삭제 이상
: 어떤 정보를 삭제하면, 의도하지않은 다른 정보까지 삭제되어버리는 현상
이런 현상을 예방하기 위해서는 데이터 정규화를 해야합니다
💡 정규화(Normalization)
: 데이터베이스의 테이블이 잘 만들어졌는지 평가하고, 잘 만들지 못한 테이블을 고쳐나가는 과정
: 테이블을 정규형이라고 불리는 형태에 부합하게 만들어나가는 과정
정규형의 형태는 지켜야 되는 순서에 따라 Normal Form의 약자 NF와 숫자를 사용해서
1NF(제 1 정규형), 2NF(제 2 정규형), 3NF(제 3 정규) 처럼 순서에 따라 규칙이 누적됩니다
정규형의 종류는 굉장히 많지만 대부분의 경우 제 3 정규형에 부합하기만 하면 잘 정규화된 데이터 베이스라고 표현합니다
💡 정규화의 장점
- 데이터베이스에서 삽입, 업데이트, 삭제 이상을 없앨 수 있다
- 새로운 종류의 데이터를 추가할 때 테이블 구조 수정을 많이 하지 않아도 된다
- 데이터베이스 구조를 단순화해서 사용자가 더 쉽게 이해할 수 있다
정규화 작업은 데이터 모델을 만들고, 데이터베이스에 구현하기 전에 적용하면 좋습니다
1. 1NF (제 1 정규형)
: 테이블 안 모든 로우의 모든 컬럼 값들은하나의 값(=나눌 수 없는 단일 값)만 허용된다
나눌 수 없는 단일 값은 하나의 값을 말하는 걸까?
모든 데이터는 맘만 먹으면 쪼갤 수 있죠
그래서 1NF는 문자 그대로 “물리적으로 쪼갤 수 있어야 한다”는 뜻이라기 보단
중요한 건 “해당 컬럼이 비즈니스적으로 하나의 단위로 쓰이냐”입니다.
비즈니스적으로 하나의 의미를 가진 단위면 ‘원자값’으로 보는 거죠
그래서 전화번호·이름처럼 분해 가능하지만 하나의 의미라면 1NF 만족하는 거고,
분리해서 따로 관리해야 하는 값(예: 여러 전화번호 목록)은 1NF 위반되는 거죠
2. 1NF를 지키지 않는 경우는 2가지
- 첫번째, 한 컬럼에 같은 종류의 값을 여러개 저장하고 있을 때
- 해결책 :
- 한 값만 넣기 위해서 컬럼의 수를 늘리는 방법은 NULL을 생성하기 때문에
문제가 발생하는 해당 attribute를 분리해서 새로운 테이블로 만들어 주고,
관계를 foregin key로 저장해 주는 방법을 사용하면 됩니다.
- 한 값만 넣기 위해서 컬럼의 수를 늘리는 방법은 NULL을 생성하기 때문에
- 해결책 :
- 두번째, 한 컬럼에 서로 다른 종류의 값을 여러개 저장하고 있을 때
- 해결책:
- 한 컬럼을 여러개로 분리해서 모델링
- 해결책:
'데이터 분석 > 06. 데이터 모델링' 카테고리의 다른 글
| [데이터베이스 모델링] Candidate Key (0) | 2025.11.14 |
|---|---|
| [데이터베이스 모델링] 함수 종속성과 이행성 (0) | 2025.11.14 |
| 카디널리티를 적용한 ERM 초안 수정 (0) | 2025.09.29 |
| 카디널리티 관계 유형 (0) | 2025.09.29 |
| 식별자의 종류와 주식별자의 특성 (0) | 2025.09.29 |
