[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)  (2) 2023.04.09
'CS/Database' 카테고리의 다른 글
  • [DataBase] 데이터베이스와 테이블 관리하기
  • [Database] 트랜잭션과 무결성
  • [Database] 데이터베이스의 기본 (2)
  • [Database] 데이터베이스의 기본 (1)
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (206) N
      • Apple (124) N
        • iOS (22)
        • visionOS (4)
        • Swift (67) N
        • UIKit (2)
        • SwiftUI (23) N
        • RxSwift (2)
        • Xcode (4)
      • 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바