2024. 9. 10. 14:29ㆍ취업 준비 !
데이터베이스(Data Base) 정규화 ?
정규화(Normalization)
정규화는 관계형 데이터베이스으이 설계에서 데이터 중복을 줄이고, 데이터 무결성성을 개선하기 위해 데이터 정규형에 맞도록 구조화하는 프로세스를 뜻합니다.
데이터베이스 정규화의 목표는 이상이 있는 관계를 잘 정리하여 생성하는 것에 있습니다.
제 1 정규화 ( 1NF 또는 최소형)은 데이터베이스 정규화에서 사용하는 정규형중 하나입니다.
관계형 데이터베이스의 테이블이 1NF이면 최소한 테이블은 관계이며, 중복되는 항목이 없어야 한다.
고객 취미
이름 | 취미 |
김00 | 배드민턴, 영화 |
이00 | 인터넷 |
박00 | 게임, 쇼핑 |
위 테이블에서 김00, 박00 은 여러 취미를 가지고 있기 때문에 제1 정규형을 만족하지 못하고 있다.
해결하기 위해
이름 | 취미 |
김00 | 배드민턴 |
김00 | 영화 |
이00 | 인터넷 |
박00 | 게임 |
박00 | 쇼핑 |
제 1 정규화를 통해 분리 해주었다.
제2 정규화(2NF)는 데이터베이스 정규화에서 사용하는 정규화중 하나로, 제1 정규형인 테이블이 제 2 정규형을 충족시키는 필요충분조건은 후보 키 K와 K에 속하지 않는 속성 A가 있을 때, A를 결정하기 위해 K의 일부가 아닌 K전체를 참조해야 만 하는 경우 1NF테이블은 2NF이다.
제 1 정규화 예시에서 나이를 추가해보겠습니다.
이름 | 나이 | 취미 |
김00 | 27 | 배드민턴 |
김00 | 27 | 영화 |
이00 | 23 | 인터넷 |
박00 | 32 | 게임 |
박00 | 32 | 쇼핑 |
위 테이블을
이름 | 나이 |
김00 | 27 |
이00 | 23 |
박00 | 32 |
이름 | 취미 |
김00 | 배드민턴 |
김00 | 영화 |
이00 | 인터넷 |
박00 | 게임 |
박00 | 쇼핑 |
이런 방식으로 테이블을 분리한다는 의미 입니다.
제 3 정규형
테이블이 제 2 정규형을 만족하고, 테이블 내의 키가 아닌 모든 컬럼이 테이블의 모든 키에 이행적 종속이 되지 않는다.
대회 | 연도 | 우승자 | 생년월일 |
A대회 | 2012 | 김00 | 1998.01.01 |
B대회 | 2016 | 이00 | 1999.10.03 |
C대회 | 2018 | 박00 | 1999.10.01 |
D대회 | 2020 | 김00 | 1998.01.01 |
E대회 | 2024 | 박00 | 1999.10.01 |
위 테이블은 2정규화 입니다. 3정규화로 변형하면
대회 우승자 테이블
대회 | 연도 | 우승자 |
A대회 | 2012 | 김00 |
B대회 | 2016 | 이00 |
C대회 | 2018 | 박00 |
D대회 | 2020 | 김00 |
E대회 | 2024 | 박00 |
우승자 정보 테이블
우승자 | 생년월일 |
김00 | 1998.01.01 |
이00 | 1999.10.03 |
박00 | 1999.10.01 |
위 테이블 처럼
이행적 함수종속은 기능적 종속으로 X -> Y , Y -> Z에 의해서 X- >Z가 되는 것입니다.
BCNF 정규화는 3차 정규화를 조금 더 강화 한 버전입니다.
그래서 3.5 정규화라고도 부릅니다.
제3 정규화를 진행한 테이블에 대한 모든 결정자가 후보키가 되도록 테이블을 분해
학번 | 과목이름 | 교수 |
101 | 과목1 | 김00 |
101 | 과목1 | 김00 |
102 | 과목2 | 이00 |
103 | 과목3 | 박00 |
101 | 과목2 | 박00 |
학번 | 교수 |
101 | 김00 |
102 | 이00 |
103 | 박00 |
101 | 박00 |
과목이름 | 교수 |
과목1 | 김00 |
과목2 | 이00 |
과목3 | 박00 |
과목2 | 박00 |
제 4 정규화
다치 종속을 제거
4 정규화를 만족하기 위해 BCNF를 만족해야하고,
다중값 종속(다치 종속)이 없어야 한다.
다치 종속 이란 ?
다치 종속은 어떠한 조건을 만족하는 튜플이 릴레이션 안에 있을 것을 요구, 그러므로 다치 종속은 튜플이 만들어내는 "종속" 중 한 종류
다치 종속은 머리가 두개인 이중 화살표 ↠표기한다. A↠B 일때 A가, B를 다치 결정한다고 말하고, 다른 말로는 B가 A에 다치 종속 된다고 말합니다.
제 5 정규화
조인 종속을 제거
5 정규화를 만족 하기 위해
4정규화를 만족해야하고, 더 이상 비손실 분해를 할 수 없어야 한다.
조인 종속 이란 ?
테이블 속성의 부분집합을 가지는 여러 개의 테이블들이 조인하여 만들어질 수 있을때 조인 조인종속성을 가진다고 한다.
왜 사용할까 ?
장점 :
1. 데이터 중복 제거
2. 데이터 무결성 유지
3. 데이터베이스 확장성
단점 :
1. 복잡한 쿼리
2. 데이터 삽입, 수정 성능 저하
3. 초기 설계 복잡성
추가적으로 관계형 데이터베이스를 사용하는 이유 !
관계형 데이터베이스(RDBMS)를 사용하는 이유는 다양한 데이터 관리 욕사항을 효율적으로 처리하고, 데이터를 체계적이고 안전하게 저장, 수정, 조회하는 데 있어 많은 이점을 제공하기 때문이다. 관계형 데이터베이스는 테이블 형태로 데이터를 구조화하고, 테이블 간의 관계를 정의할 수 있어 데이터 무결성을 유지하며 다양한 복잡한 쿼리를 지원합니다.
1. 데이터의 구조화된 저장
2. 데이터 무결성 유지
3. 복잡한 쿼리 및 데이터 검색
4. 데이터 중복 최소화
5. 데이터 보안
6. 트랜잭션 지원 및 데이터 일관성
7. 관계 표현 및 참조 무결성
8. 동시성 제어
9. 백업 및 복구 기능
10. 확장성
이처럼 관계형 데이터베이스는 데이터를 구조화하여 저장하고, 복잡한 관계를 유지하며, 데이터의 무결성과 일관성을 보장할 수 있는 강력한 도구 입니다.
트랜잭션, 동시성 제어, 참조 무결성, 데이터 보안 등의 기능을 통해 대규모 애플리케이션에서 안정적이고 효율적인 데이터 관리를 가능하게 합니다.
관계형 데이터베이스 :
MySQL, PostgreSQL, Oracle DB, Microsoft SQL Server, SQLite, MariaDB 등등 다양하게 많이 있는걸로 알고 있습니다!
참고
'취업 준비 !' 카테고리의 다른 글
[코드잇 풀스택 1기] - MVC 패턴 , OAuth (1) | 2024.11.16 |
---|---|
[코드잇 풀스택 1기] - RESTful API의 개념과 주요 제약 조건 (0) | 2024.09.28 |
[코드잇 풀스택 1기] - React - Next.js (0) | 2024.08.11 |
[코드잇 풀스택 1기] - 웹 페이지 CSR, SSR, SSG (0) | 2024.08.02 |
[코드잇 풀스택 1기] key설정 (0) | 2024.07.26 |