simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • null
  • 참조변수
  • 컨트롤러
  • JVM메모리구조
  • 참조타입
  • 자바메모리구조
  • 자바프로그램
  • 스프링
  • 자바프로그래밍
  • controllerTest
  • 404
  • scanner #next() #nextLine()
  • 자바

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

Language/SQL

[DATABASE] DB모델링, 정규화와 이상현상, 역정규화

2022. 4. 19. 20:20

■ DB모델링

- ERD란? Entity Relationship Diagram, 개체 관계도라 하며,

            개체들 간의 관계를 나타내는 다이어그램이다.

- DB 모델링에 대한 자세한 내용은 아래 포스팅 참조

https://mangkyu.tistory.com/27

 

[Database] 6. 데이터 모델링(Data Modeling)

[ 본 사진은 쉽게 배우는 오라클로 배우는 데이터베이스 개론과 실습 ppt에서 캡처했습니다. ] 이번 장에서는 데이터 모델링(Data Modeling), ER 모델(ER Model)에 대해 알아보겠습니다. 1. 데이터 모델링

mangkyu.tistory.com

- DB 모델링 툴 

- 윈도우용툴 : EXERD, ERWIN (erwin.com) *erwin이 가장 자주 쓰는 툴이라고 한다.
- 맥용툴 : 에이쿼리툴 https://zakkum.tistory.com/76

 

■ 정규화란?

  데이터 베이스의 불필요한 중복을 줄이고 설계를 더 탄탄하게 재구성하는 테크닉

>>

  제 1 정규화   도메인이 원자 값(하나의 값)을 갖도록 테이블을 분해하는 것
  제 2 정규화   제 1정규화를 마친 테이블에서 완전함수 종속*을 만족하도록 테이블을 분해
  * 기본키의 부분 집합이 결정자가 되어서는 안된다. 

  EX. 테이블 1 ) 기본키 : 학생번호/강좌이름, 데이터 : 강의실, 성적
     * 성적은 학생번호/강좌이름에 종속적이다.
     * 강의실은 강좌이름에 종속적이다.
     
     ---> 테이블 1, 2로 분해
            테이블 1 ) 기본키 : 학생번호, 데이터 : 강좌이름, 성적
            테이블 2 ) 기본키 : 강좌이름, 데이터 : 강의실
  제 3 정규화   제 2정규화를 마친 테이블에 대해 이행적 함수 종속*을 없애도록 테이블을 분해
  * A, B, C 데이터가 있을 때, A -> B -> C 관계만 가능하도록 해야한다.
  * A -> C (X)

  EX. 테이블 1 ) 기본키 : 학생번호, 데이터 : 강좌이름, 수강료
     * 강좌이름은 학생번호에 종속적이다.
     * 수강료는 강좌이름에 종속적이다.

     ---> 테이블 1,2로 분해
     테이블 1 ) 기본키 : 학생번호, 데이터 : 강좌이름
     테이블 2 ) 기본키 : 강좌이름, 데이터 : 수강료
     * 학생번호 -> 강좌이름 -> 수강료
     >> 학생번호로 수강료를 알 수 있으면 안 된다.

 

* 완전 함수 종속 : 기본키가 여러개일 때, 모든 기본키에 종속적이어야 한다는 것

* 이행적 함수 종속 : 순차적인 이행에 따른 종속 관계 

 

■ 정규화의 장단점 - 가장 큰 이점 : 이상현상의 제거

장점 단점
[1] 데이터베이스 변경 시 이상 현상 방지
[2] 데이터베이스 구조 확장 시 재 디자인 최소화
[3] 사용자에게 데이터 모델을 더욱 의미있게 제공
테이블의 분해로 인해 테이블간 연산(JOIN)이 많아진다.
이로인해 질의에 대한 응답시간이 늦어질 수도 있다.
(성능저하의 가능성)

 

■ 역정규화를 하는 이유

  정규화를 거치면 릴레이션 간의 연산(JOIN 연산)이 많아지는데, 이로인해 성능이 저하될 우려가 있습니다.
  역정규화를 하는 가장 큰 이유는 성능 문제가 있는(읽기작업이 많이 필요한) DB의 전반적인 성능을 향상시키기 위함입니다.

 

■ 이상현상(Anomaly)의 종류

 - 이상현상이란? 테이블을 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 생기는 논리적 오류

  삽입 이상    자료를 삽입할 때 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상
  갱신 이상    중복된 데이터 중 일부만 수정되어 데이터 모순이 일어나는 현상
  삭제 이상    어떤 정보를 삭제하면, 의도하지 않은 다른 정보까지 삭제되어버리는 현상

 

 

[참조]

- 정규화 참조

https://dev-coco.tistory.com/62
https://mr-dan.tistory.com/10

https://programming119.tistory.com/225

 

 

 

 

'Language > SQL' 카테고리의 다른 글

[DATABASE] JOIN  (0) 2022.04.21
[DATABASE] SEQUENCE, INDEX  (0) 2022.04.21
[DATABASE] 뷰 (VIEW), 인라인 뷰  (0) 2022.04.19
[DATABASE] DECODE, CASE~END 문  (0) 2022.04.18
[DATABASE] 정렬(ORDER NY) 및 그룹 통계(GROUP BY)  (0) 2022.04.18
    'Language/SQL' 카테고리의 다른 글
    • [DATABASE] JOIN
    • [DATABASE] SEQUENCE, INDEX
    • [DATABASE] 뷰 (VIEW), 인라인 뷰
    • [DATABASE] DECODE, CASE~END 문
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바