DB 설계

No.8·2023년 5월 25일
0

SSAFY Youtube Live

목록 보기
3/5

DB 설계의 목적

  • 프로젝트, 명세서 등의 정보 요구사항에 대한 정확한 이해
  • 분석자, 개발자, 사용자간의 원활한 의사소통 수단
  • 데이터 중심의 분석 방법
  • 현행 시스템만이 아닌 신규 시스템 개발의 기초 제공
    → 설계를 “대충”하면 기능 한 개 추가 될 때마다 DB와 관련된 이미 개발된 프로그램도 함께 뜯어고쳐야 하는 경우가 있다. → 설계를 꼼꼼히 하자!

1. 설계를 위한 요구사항 분석

  • 요구사항 기능 명세서 작성
    - 데이터베이스에 대한 사용자의 요구사항을 수집하고 분석

2. 개념적 설계

  • ERD 생성
    - DB 구성하는데 필요한 개체, 속성, 개체 관의 관계 추출
    - 개체와 속성 추출 → 요구사항에서 개체는 대부분 명사로 이뤄져있지만, 속성과 구별하여 추출
    - 개체 간의 관계를 정의
    - 설계를 기반으로 ERD 생성 (ERD 표준기호 참고)

3. 논리적 설계

  • 모든 개체 및 N:M관계는 릴레이션으로 변환
    - 개체 → 테이블속성
  • 1:N 관계 및 1:1 관계는 외래키(FK)로 표현
    - 관계 : 릴레이션 이름, 관계속성 → 릴레이션 속성
  • 다중 값 속성은 별도의 독립 릴레이션(Table)로 변환

4. 물리적 스키마 및 구현

반정규화 개념

어떤 경우에 반정규화를 사용하는가?

1. DB 정규화?

  • 데이터 모델의 중복을 최소화하고 데이터의 일관성, 유연성을 확보하기 위한 목적으로 데이터를 분해하는 과정

2. 반정규화란?

  • 정규화된 엔티티타입, 속성, 관계를 시스템의 성능향상과, 개발과 운영의 단순화를 위해 모델을 통합하는 프로세스 = 조금 어긴다
  • 같은 데이터가 여러 테이블에 걸쳐 존재하므로 무결성이 깨질 우려가 있다. ⇒ 적당한 수준의 타협이 필요

3. 테이블 반정규화 방법

  • 1:1 관계 / 1:N 관계의 테이블병합
  • 수퍼/ 서브 타입 테이블 병합
  • 수직 / 수평분할
  • 테이블 추가

4. 대표적 반정규화 - 컬럼 반정규화

  • 중복컬럼 추가 (자주 조회하는 컬럼이 있는 경우)
  • 파생 컬럼추가 (미리 계산한 값)
  • PK에 의한 컬럼 추가
  • 응용시스템 오작동을 위한 컬럼추가(이전데이터 임시보관)

5. 대표적 반정규화 - 관계 반정규화

  • 중복관계추가 - 관계를 중복해서 조회경로를 단축

⇒ 정규화와 반정규화 둘 중에 뭐가 좋냐 : “케바케다”
⇒ 반정규화가 간단하게 무엇이냐? : 데이터 중복을 허용하고 조인을 줄이는 데이터베이스의 성능향상 방법입니다.
⇒ 반정규화도 DB튜닝의 한 방법이다.
⇒ 프로젝트 진행시 3정규화까지 진행하면 좋다.

핵심 : 설계를 꼼꼼히 하자. 반정규화는 데이터베이스의 성능향상 방법이다.

profile
88888888

0개의 댓글