728x90
반응형
SMALL
안녕하세요😊 코드카인 여러분!
오늘은 데이터베이스에서 매우 중요한 개념 중 하나인 정규화에 대해 알아보겠습니다. 정규화는 데이터베이스 설계의 기본 원칙 중 하나인데요, 쉽게 이해할 수 있도록 일상생활에 빗대어 설명해 드릴게요. 😊
📚 정규화란?
정규화(Normalization)는 데이터를 중복 없이 체계적으로 정리하는 과정이에요.
데이터베이스에서 정보가 여기저기 흩어져 중복될 경우 관리와 유지보수가 어렵고 데이터 일관성이 깨질 위험이 생깁니다.
정규화를 통해 중복을 제거하고, 데이터 무결성을 유지하며, 저장 공간을 효율적으로 사용하는 것이 목적이에요.
일상생활로 비유해볼까요?
📦 여러분이 이사를 하면서 물건을 상자에 담는다고 상상해보세요.
정규화를 하지 않은 데이터는 상자 하나에 책, 옷, 주방도구 등이 섞여 있는 상태와 같아요.
필요한 물건을 찾으려면 매번 상자를 뒤져야 하고, 잘못 넣으면 고장 나거나 잃어버릴 수도 있겠죠?
하지만 정규화를 하면,
- 📚 책은 책 상자,
- 👕 옷은 옷 상자,
- 🍴 주방도구는 주방 상자
처럼 정리된 상태가 됩니다. 이제 필요한 물건을 쉽게 찾을 수 있고, 물건이 뒤섞일 걱정도 없겠죠? 😊
🔍 정규화의 단계
정규화는 크게 5단계로 이루어져 있어요. 하지만 실무에서는 주로 1NF, 2NF, 3NF를 사용합니다. 간단히 알아볼게요!
1. 1NF(제1정규형)
- 각 열이 원자값(더 이상 나눌 수 없는 값)을 가져야 한다.
- 한 셀에 여러 값이 들어가면 안 돼요!
📌 예) 주소를 하나의 칸에 '서울시 강남구'라고 쓰는 대신, '도/시', '구', '동'으로 나누기
2. 2NF(제2정규형)
- 부분 종속 제거
- 기본 키가 아닌 다른 컬럼이 기본 키의 일부에만 의존하면 안 된다.
📌 예) 학생 테이블에 '학생ID'와 '과목ID'가 키인데, 과목 이름은 '과목ID'에만 의존하면 분리해야 해요.
3. 3NF(제3정규형)
- 이행 종속 제거
- 기본 키가 아닌 다른 컬럼이 기본 키를 거쳐서 의존하지 않아야 한다.
📌 예) '학생ID → 학년 → 반'이면 학년과 반은 별도로 나눠야 해요.
💻 실전 예제
다음은 비정규화된 데이터를 정규화하는 예제입니다.
1. 비정규화된 테이블
주문ID | 고객이름 | 고객주소 | 상품이름 | 상품가격 |
---|---|---|---|---|
1 | 하영 | 서울 강남구 | 티셔츠 | 20,000 |
2 | 하영 | 서울 강남구 | 신발 | 50,000 |
2. 정규화된 테이블
고객 테이블
고객ID | 고객이름 | 고객주소 |
---|---|---|
101 | 하영 | 서울 강남구 |
상품 테이블
상품ID | 상품이름 | 상품가격 |
---|---|---|
A01 | 티셔츠 | 20,000 |
A02 | 신발 | 50,000 |
주문 테이블
주문ID | 고객ID | 상품ID |
---|---|---|
1 | 101 | A01 |
2 | 101 | A02 |
🧐 용어 정리
- 데이터 무결성: 데이터가 정확하고 일관되게 유지되는 상태
- 부분 종속: 기본 키의 일부에만 의존하는 상태
- 이행 종속: 기본 키를 거쳐 다른 컬럼에 의존하는 상태
😊 마무리하며..
정규화는 처음 배우면 복잡하고 헷갈릴 수 있어요. 하지만 작은 단계부터 차근차근 연습하다 보면, 데이터베이스 설계가 훨씬 깔끔해진답니다! 😊
혹시 아직도 어려우시다면 댓글로 질문해주세요. 코드카인이 항상 응원할게요! 🚀
728x90
반응형
SMALL
'데이터베이스 > DB 필수지식!' 카테고리의 다른 글
초보자를 위한 데이터베이스 설계 핵심: Primary Key와 Foreign Key 쉽게 배우기 - 코드카인 티스토리 (0) | 2024.12.31 |
---|---|
SNS 설계도? ER 다이어그램으로 데이터 관계 쉽게 이해하기 - 코드카인 티스토리 (0) | 2024.12.31 |
데이터베이스와 친구 되기! PL/SQL로 자동화의 세계를 열다 - 코드카인 티스토리 (0) | 2024.12.20 |
[데이터베이스] 권한과 역할의 차이, 초보 개발자를 위한 완벽 가이드 (0) | 2024.12.19 |
[데이터베이스] RDBMS와 NoSQL의 차이점 완벽 정리: 개념, 장단점, 사용 사례와 예제 코드 (0) | 2024.12.18 |