키보드워리어

[데이터베이스] 정규화 정리 본문

개발 관련/Database

[데이터베이스] 정규화 정리

꽉 쥔 주먹속에 안경닦이 2023. 8. 10. 21:10
728x90

안녕하세요 블로그 방문자 여러분, 반갑습니다.

데이터 베이스 정규화 정리 들어갑니다.


정규화란?

데이터베이스가 대충 만들어 졌다면 단계별로 정규화 시키는게 중요합니다.
정규화는 정처기를 통해 배웠던 내용입니다. 3과목 참고해주세요.

대충 만들어진 데이터 베이스들 정리용

 

원래 관계형 데이터 베이스는 하나의 셀에 하나의 값만 저장해야합니다.
두개의 데이터를 한 셀에 넣은 다면 정규화가 필요합니다.

1정규형

반복되는 데이터를 가로가 아닌 세로로 늘리는것이 1정규화
제 1정규화에서 테이블 분할과 기본키(PK)지정 이뤄짐.

2정규형

완전 함수적 종속성 관계 제거한 것.

 

함수적 종속성 관계란 하나의 키값을 통해 데이터를 특정 지을 수 있는것을 가리킴.

 

PK로 지정된 데이터들중에서 종속성 관계를 제거해준다.

ex) [주문 상품] 테이블의 상품코드와 상품명이 있다.


이때 상품 코드만 보더라도 상품명을 알 수 있기 때문에 [상품] 테이블을 따로 생성해서 상품명은
[주문 상품] 테이블에서 제거해준다.

 

[주문상품] 테이블 수정 전

주문번호 상품코드 상품명 개수
1 0001 A 1
1 0002 B 10

[주문상품] 수정 후

주문번호 상품코드 개수
1 0001 1
1 0002 10

[상품] 테이블 추가

상품코드 상품
0001 A
0002 B
0003 C

3정규형

3정규형은 이행 함수 종속성 제거한다. 쉽게말해 2정규형에서 PK값에서 중복된 부분을 제거했다면
3정규형에서는 그 이외에 부분에서 중복된 부분을 제거해주는 것이다.

 

[주문] 테이블 수정 전

주문번호 날짜 성명 연락처
1 1/1 박준용 010-xxxx
2 2/1 김재진 016-xxxx
3 2/5 박준용 010-xxxx

같은 사람이 반복해서 주문했다. 중복 제거해주자.

 

[주문] 테이블 수정 후

주문번호 날짜 고객번호
1 1/1 1
2 2/1 2
3 2/5 1

[고객] 테이블 추가

고객번호 성명 연락처
1 박준용 010-xxxx
2 김재진 016-xxxx

이렇게 테이블 끼리의 연계를 ER다이어그램으로 표현해볼 수 있습니다.

 

ER프로그래밍
ER프로그래밍

정규화의 목적

정규화로 데이터 구조를 개선하는 것은 하나의 데이터가 한 곳에 저장되도록 하기 위함.


참고하시면 좋은 글

2023.08.01 - [개발 관련/Database] - [databases] 데이터시스템 설계 쌩 기초

 

[databases] 데이터시스템 설계 쌩 기초

안녕하세요 블로그 방문자 여러분, 반갑습니다. 데이터 시스템설계를 좀 살펴볼건데요~~ 한빛 미디어사의 SQL첫걸음을 참고하였어요. 데이터베이스 설계 1.데이터베이스 설계 논리형과 물리명

keyboardwarrior.tistory.com

2023.07.30 - [개발 관련/Database] - [databases] 서브쿼리

 

[databases] 서브쿼리

안녕하세요 블로그 방문자 여러분, 반갑습니다. 오늘은 databases - 서브쿼리를 포스팅하려고 합니다. 서브 쿼리 서브쿼리란? Select 명령에 의한 데이터 질의로, 상부가 아닌 하부의 부수적인 질의

keyboardwarrior.tistory.com

2023.07.27 - [개발 관련/Database] - [databases]데이터의 일관성을 지키기 위한 로킹(locking)

 

[databases]데이터의 일관성을 지키기 위한 로킹(locking)

안녕하세요 블로그 방문자 여러분, 반갑습니다. 오늘은 로킹에 대해 배워볼게요 제가 지난번 동시성 제어문제에 대해 글을 작성한 게 있었는데 이 내용의 2부라고 보셔도 좋을 거 같아요! 2023.06.

keyboardwarrior.tistory.com

 

이상 부족한 컨텐츠 읽어주셔서 감사드립니다.

내용 피드백이 있는 경우 댓글 부탁드립니다!

다음 포스팅 때 뵙겠습니다! 감사합니다 🤗

728x90

'개발 관련 > Database' 카테고리의 다른 글

[redis] 레디스 조금 정리  (0) 2023.09.19
[데이터베이스] 트랜잭션  (0) 2023.08.11
[databases] 데이터시스템 설계 쌩 기초  (0) 2023.08.01
[데이터베이스] 인덱스란?  (0) 2023.07.31
[databases] 서브쿼리  (0) 2023.07.30