[Database] ERD와 정규화 과정

2023. 5. 18. 12:06·CS/Database
728x90
반응형

1. ERD

  • ERD(Entity Relationship Diagram)는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하고 릴레이션 간의 관계들을 정의한 것이다.
  • ERD는 시스템의 요구 사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축한다.
  • 데이터베이스를 구축한 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우에 설계도 역할을 담당하기도 한다.
  • ERD 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용하다는 장점을 가지고 있다.
  • 하지만 비정형 데이터를 충분히 표현할 수 없다는 단점을 가지고 있다.
*비정형 데이터란?
 비구조화 데이터를 말하며, 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보를 말한다.

2. 정규화 과정

  • 정규화 과정은 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나 저장공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정이다.
  • 정규화 과정은 정규형 원칙을 기반으로 정규형을 만들어가는 과정이다.
  • 정규화된 정도는 정규형으로 표현한다.

3. 정규형 원칙

  • 정규형의 원칙이란 데이터베이스 설계에서 데이터 중복을 최소화하고 일관성을 유지하기 위한 규칙들의 집합이다.
  • 주로 관계형 데이터베이스에서 사용되며, 데이터의 구조와 관계를 표현하기 위해 사용되는 정규화라는 프로세스의 결과물이다.

3.1 제1정규형

  • 릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되어야 한다.
  • 릴레이션의 속성 값 중에서 한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합이 있으면 안 된다.

3.2 제2정규형

  • 제2정규형은 릴레이션이 제1정규형이며 부분 함수의 종속성을 제거한 형태를 말한다.
  • 부분 함수의 종속성 제거란 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것을 말한다.
  • 릴레이션을 분해할 때 동등한 릴레이션으로 분해해야 한다.
  • 정보 손실이 발생하지 않는 무손실 분해로 분해되어야 한다.

3.3 제3정규형

  • 제2정규형이고 기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않는 상태를 말한다.

3.4 이행적 함수 종속

  • 데이터베이스의 테이블에서 어떤 속성들이 다른 속성들에 종속되는 관계를 나타내는 것을 의미한다. 
  • 이 종속 관계는 함수적 종속과 전이적 종속으로 나뉜다.
  •  예를 들어, 테이블에서 "학번"이라는 속성이 "학과"라는 속성에 전이적으로 종속되고, "학과"가 다시 "학과장"이라는 속성에 함수적으로 종속된다면, "학번"을 알면 "학과장"을 알 수 있다.

4. 함수적 종속

  • 함수적 종속은 한 속성이 다른 속성에 종속되는 관계를 말한다.
  • 예를 들어, 테이블에서 "학번"이라는 속성이 "이름"이라는 속성에 함수적으로 종속된다면, "학번"을 알면 "이름"을 알 수 있습니다.

5. 전이적 종속

  • 전이적 종속은 함수적 종속의 확장으로, 한 속성이 다른 속성에 종속되지만 중간에 다른 속성을 거쳐서 종속되는 관계를 말한다.
  • 예를 들어, 테이블에서 "학번"이라는 속성이 "학과"라는 속성에 전이적으로 종속되는 경우, "학번"을 알면 "학과"를 알 수 있지만, "학과"를 알아도 바로 "학번"을 알 수는 없고 중간에 다른 속성을 거쳐야 한다.

6. 보이스/코드 정규형

  • 보이스/코드 정규형(BCNF)은 제3정규형이다.
  • 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태를 말한다.
*결정자란?
 함수 종속 관계에서 특정 종속자(dependent)를 결정짓는 요소이다.

 

728x90
반응형

'CS > Database' 카테고리의 다른 글

[DataBase] 데이터베이스와 테이블 관리하기  (2) 2024.03.10
[Database] 트랜잭션과 무결성  (1) 2023.05.19
[Database] 데이터베이스의 기본 (2)  (1) 2023.04.12
[Database] 데이터베이스의 기본 (1)  (3) 2023.04.09
'CS/Database' 카테고리의 다른 글
  • [DataBase] 데이터베이스와 테이블 관리하기
  • [Database] 트랜잭션과 무결성
  • [Database] 데이터베이스의 기본 (2)
  • [Database] 데이터베이스의 기본 (1)
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (213) N
      • Apple (131) N
        • iOS (23) N
        • visionOS (4)
        • Swift (70)
        • UIKit (2)
        • SwiftUI (24)
        • RxSwift (2)
        • Xcode (5)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배열
    함수
    네트워크
    이니셜라이저
    비동기
    오블완
    운영체제
    클래스
    visionOS
    티스토리챌린지
    스위프트
    프로그래머스
    제어문
    연산자
    UIKit
    디자인패턴
    코딩테스트
    자바스크립트
    swiftUI
    combine
    ios
    변수
    Xcode
    옵셔널
    Apple
    SWIFT
    프로퍼티 래퍼
    Vision Pro
    Initializers
    프로세스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[Database] ERD와 정규화 과정
상단으로

티스토리툴바