DBMS

3 . 정규화

imysydesu 2026. 6. 8. 09:34

 

 

 

1 . 정규화

 

 

 

  • Normalization
  • 데이터베이스 테이블을 효율적으로 구조화하는 작업
  • 중복 데이터를 줄이고 데이터가 꼬이지 않게 테이블을 나누는 과정

 

 

 

1 -1 . 정규화 단계

 

 

( 오늘 수업은 1~3단계까지 진행)

 

  1. 제1 정규형(1NF) : 하나의 칸에는 하나의 값만 들어가야 함 -> 원자값이 아닌 도메인 분해
  2. 제2 정규형(2NF) : 1NF를 만족하고, 기본키 전체에 완전 종속되어야 함, 부분적 함수 종속 제거
  3. 제3 정규형(3NF) : 2NF를 만족하고, 이행적 함수 종속 제거해야 함
  4. BCNF 정규화(BCNF) :결정자이면서 후보키가 아닌 것 제거
  5. 제4 정규형(4NF) :다치 종속 제거
  6. 제5 정규형(5NF) :조인 종속성 이용

 

 

- 이행적 종속 : A -> B, B -> C, A -> C

 

 

 

 

 

 


 

 

 

 

 

2 . 이상 현상

 

 

- 정규화가 제대로 되지 않은 테이블에서 발생하는 데이터 불일치 문제를 의미

 

 

  • 수정 이상 : 같은 데이터가 여러 행에 중복 저장되어 있을 때 일부만 수정하면 데이터 불일치가 발생하는 현상

ex) 가게 이름 '과일가게' 과일 이름 '바나나' 원산지 '베트남' 판매처 번호 '010-0000-0000'와 가게 이름 '과일가게' 과일 이름 '망고' 원산지 '베트남' 판매처 번호 '010- 0000-0000'가 있다고 가정했을 때 전화번호가 '010-1111-1111'로 변경되었는데 한 행만 수정하면 같은 가게의 판매처 번호가 서로 달라지는 문제 발생

 

 

  • 삭제 이상 : 특정 정보를 삭제할 때 원하지 않는 다른 정보까지 함께 삭제되는 현상

ex) 가게 이름 '과일가게1' 과일 이름 '바나나' 원산지 '베트남' 판매처 번호 '010-0000-0000'와 가게 이름 '과일가게2' 과일 이름 '망고' 원산지 '베트남' 판매처 번호 '010- 0000-0000'가 있다고 가정했을 때 '바나나'를 삭제했을 때 '과일가게2'라는 가게 이름의 정보도 함께 사라짐

 

 

  • 삽입 이상 : 새로운 정보를 삽입하려 할 때 불필요한 정보가 없으면 삽입할 수 없는 현상

 

ex) 가게 이름 '과일가게1' 과일 이름 '바나나' 원산지 '베트남' 판매처 번호 '010-0000-0000'와 가게 이름 '과일가게2' 과일 이름 '망고' 원산지 '베트남' 판매처 번호 '010- 0000-0000'가 있다고 가정했을 때 새로운 가게인 '과일가게3'의 정보를 추가하려고 해도 과일 이름이 정해지지 않아서 '과일가게3'의 정보만 저장할 수 없음

 

 

 

 

 

 

 


 

 

 

 

 

 

3 . 정규화 예시

 

 

- 제 1 정규화, 2 정규화, 3 정규화 진행 상황

 

 

 

  • 비정규화 테이블

 

 

  • 정규화 진행

 

 

 

 

 

 


 

 

 

 

4 . references - 참조

 

 

 

 

- 기존 member 테이블 사용

 

 

  • 새로운 테이블인 profile 생성

 

 

 

  • profile 테이블에 데이터 넣기

 

 

 

 

 


 

 

 

 

5 . join

 

 

 

- join => 두 테이블을 연결할 때 사용

 

 

 

  • inner join : 교집합
  • left join : 왼쪽 테이블을 기준으로 연결
  • right join : 오른쪽 테이블을 기준으로 연결
  • cross join : 하나의 값에 다른 테이블의 모든 내용 연결, 곱집합

 

 

 

  • 멤버 테이블의 아이디, 이름, 성별과 프로필 테이블의 엠비티아이를 한 번에 출력하기

 

  • inner join 사용

 

 

  • left join 사용

 

 

  • right join 사용

 

 

  • cross join 사용 -> 다른 컬럼 사용한 예제

 

 

 

=> 이 4개의 조인 중 값이 같은 조인은 inner join과 right join이다

 

 

 

 

 

 


 

'DBMS' 카테고리의 다른 글

5 . 사용자 계정  (0) 2026.06.08
6 . MySQL 함수  (0) 2026.06.08
4 . 서브쿼리  (1) 2026.06.08
2 . SQL  (0) 2026.06.05
1 . 데이터베이스 기초 (DB, DBMS, RDBMS, SQL)  (0) 2026.06.04