본문 바로가기
DataBase

2-4. 데이터 정규화 , 조인

by 사라리24 2024. 3. 27.
SMALL

1.데이터 정규화

 

 

-  데이터 베이스를 설계할 때 중복을 최소화하는 것
- 조직화 되어 있지 않은 테이블과 관계들을 조직화된 테이블과 관계들로 나누는 것

* 데이터 정규화가 필요한 경우
- 테이터를 변경, 삽입, 삭제할 때 원하지 않게 데이터가 삭제되거나 가공되는 일이 발생할 수 있음(이상현상)
- 이상 현상이 발생할 가능성이 있다면 정규화가 필요

 

 

 

2. 정규화의 종류

 

 

 

1. 1NF (제 1 정규화)

 

(1) 테이블 안에 모든 값들은 단일 값이여야 함

(2) 더 이상 쪼개질 수 없는 단위로 저장

 

 

 

2. 2NF(제 2 정규화)

 

 (1) 1NF를 만족하며서 종속성을 가진 관계들로만 테이블을 생성
    - 종속성들 중 종속 관계에 있는 열들끼리 테이블을 구분해 주는 것
    - 기본키에 속하지 않은 모두가 기본키에 완전 함수 종속인 정규형
         ㄴ 함수 종속성: x값에 따라 y값이 결정되는 경우

 

 

교수 - 학과 - 과목 이 연결되어 있습니다.

과목 - 과목코드를 연결지어 밑에 코드와 연결해줍니다.

 

3. 3NF(제 3 정규화)

 

 (1) 2NF를 만족하면서, 기본키에 대해 이행적 함수 종속이 되지 않은 것을 의미

 

 

교수코드를 만들어서 학번-교수코드, 교수-교수코드 연결

과목코드를 만들어서 학과-과목코드 연결

쪼갤 수 있는 만큼 쪼개서 종속된 것들만 정리

 

 

4. 비정규화

 

- 정규형에 일치하게 되어있는 테입즐을 저규형을 지키지 않는 테이블로 변경
- 테이블을 조회하는 용도로 사용하거나, 너무 데이터가 많아 나뉘어 성능이 저하된다면

   비정규화를 하여 테이블을 다루는 것이 더 효율적일 수 있음
 - 어떤 작업을 수행하는지, 어떤 데이터를 사용하는지에 따라 적절한 정규화를 하는 것이 좋음

 

 

(*) 이상현상

 

- 삽입이상: 테이블에 데이터를 추가 시 불필요한 열의 값들도 삽입해야 하는 상황
- 삭제이상: 테이블에 데이터를 삭제 시 다른 열들의 값들도 삭제되는 현상
- 갱신이상: 중복 저장되어 이쓴 값 중 하나만 갱신하고 나머지는 갱신하지 않아 데이터 불일치

 

3. 조인 (Join)

 

 

 

select 필드명1, 필드명2, ... from 테이블1 [inner, left, right] join 테이블2
on 테이블1.필드명 = 테이블2. 필드명

 

[ profile ] 테이블 생성

ㄴ두 테이블을 조인해봅시다.

 

 

 (1) inner 조인

 

  # 조인하는 테이블의 on 절의 조건이 일치하는 결과만 출력
  # 두 테이블의 교집합
  # join, inner join, cross join 모두 같은 의미로 사용됨

 

 

 (2) left / right 조인

 

 

 

 

'DataBase' 카테고리의 다른 글

3-2. 뷰(view), 다이어그램(Diagram)  (0) 2024.03.27
3-1. MySQL 문자열 함수, 유니온, 서브쿼리  (0) 2024.03.27
2-3. 집계함수  (0) 2024.03.27
2-2. 데이터 수정하기  (0) 2024.03.27
2-1. 테이블 수정  (0) 2024.03.26