DB

2. ERD & 정규화 과정

ggomjiu 2025. 7. 7. 03:28

ERD(Entity Relationship Diagram)

: 요구 분석 사항에서 얻은 엔티티와 속성들의 관계를 그림으로 나타낸 개체-관계 모델

- 테이블과의 관계를 설명하는 다이어그램이며, 이를 통해 프로젝트에서 사용하는 DB의 구조를 한눈에 파악할 수 있음

- DB를 구축할 때 뼈대 역할을 하며, 서비스 구축시 가장 먼저 신경써야 하는 부분

- 이를 통해 API를 보다 효율적으로 설계할 수 있음

 

ERD 사용법

1. DB 모델링

- 관계형 DB에서 주로 널리 사용됨

- 엔티티와 속성들을 테이블과 컬럼들로 변환할 수 있음

- 테이블과 관계들을 시각화할 수 있기 때문에 설계 문제점을 파악할 수 있음

 

2. SW엔지니어링

- SW 기획 단계에서 사용됨

- 서로 다른 시스템 요소와 서로 간의 관계를 식별하는 데 도움이 됨

- Data Flow Diagram의 기초로써 종종 사용됨

 

ERD 그리기

1. 엔티티(Entity)

: 정의 가능한 사물 또는 개념을 의미

- 사람, 프로필, 도서 정보와 같은 무형의 정보도 데이터화가 가능함

- DB의 테이블이 엔티티로 표현됨

 

2. 속성(Anttribute)

: 객체가 가지고 있는 속성

- DB의 테이블의 각 필드들이 엔티티 속성임

 

3. 엔티티 도메인(Entity Domain)

: 속성의 값, 타입, 제약 사항 등에 대한 값의 범위를 표현하는 것

- 사용자 기호에 따라 속성 타입만 그릴 수도 있고 가독성을 위해 생략도 가능함

- 데이터 타입을 명시할 때, DB가 지원하는 타입에 맞게 작성해야 함

 

엔티티 분류

- 엔티티는 저장하는 데이터 정보 주체에 따라 종류가 나뉨

  • 유형 엔티티
    • 물리적인 형태
    • EX) 고객, 상품, 거래처
  • 무형 엔티티
    • 물리적인 형태가 없고 개념적으로만 존재하는 엔티티
    • EX) 인터넷 장바구니, 부서 조직
  • 문서 엔티티
    • 업무 절차상에서 사용되는 문서나 장부, 전표에 대한 엔티티
    • EX) 거래명세서, 주문서
  • 이력 엔티티
    • 업무상 반복적으로 이루어지는 행위나 사건의 내용을 일자별, 시간별로 저장하기 위한 엔티티
    • EX) 입고 이력, 출고 이력
  • 코드 엔티티
    • 무형 엔티티의 일종으로 각종 코드를 관리하기 위한 엔티티
    • EX) 국가 코드, 각종 분류 코드

ERD 엔티티 관계 표시법

항목 식별자 관계 비식별자 관계
목적 강한 연결 관계 표현 약한 연결 관계 표현
자식주식별자 영향 자식 주식별자의 구성에 포함됨 자식 일반 속성에 포함됨
표기법 실선 표현 점선 표현
연결 고려사항 반드시 부모 엔티티 종속 자식 주식별자 구성에 부모 주식별자 포함 필요
상속받은 주식별자 속성을 타 엔티티 이전 필요
약한 종속 관계
자식 주식별자 구성을 독립적으로 구성
자식 주식별자 구성에 부모 주식별자 구분 필요
상속받은 주식별자 속성을 타 엔티티에 차단 필요
부모 쪽의 관계 참여가 선택 관계

 

1. 식별자 관계

- 실선으로 표현

- 부모 자식 관계에서 자식이 부모의 주식별자(PK)를 외래 식별자(FK)로 참조하여 자신의 주식별자로 설정

 

2. 비식별자 관계

- 점선으로 표현

- 부모 자식 관계에서 자신이 부모의 주식별자를 외래 식별자로 참조해서 일반 속성으로 사용

 

ERD 표현

 

1. One

- 일대일 혹은 일대다 관계

- 주로 하나의 외래키가 걸린 관계

 

2. Many

- 다대다 관계

- 중계 테이블을 통하여 여러개의 데이터를 바라보고 있을 때 사용

 

3. One(and only One)

- 일대일 관계

- 하나의 row끼리만 연결된 관계

 

4. Zero or One

- 일대일 혹은 일대다 관계를 가지고 있으나 필수 조건이 아님

 

5. One or Many

- 일대일 혹은 다대다 관계를 가지고 있음

- 관계를 가지고 있으나, 참조되는 row값들이 불명확함을 의미

 

6. Zero or Many

- 참조하는 테이블과의 관계가 불명확한 경우

- row 생성값이 없을 수도, 하나일 수도, 여러 개일 수도 있는 경우

 

7. 관계 참여도

  • | : 필수적으로 존재해야 하는 개체
  • O : 없어도 되는 개체

8. ERD 관계 카디널리티

- Cardinality 

: 한 개체에서 발생할 수 있는 발생 횟수를 정의하며, 다른 개체에서 발생가능한 발생 횟수와 연관됨

  • 일대일 대응(One to One)
  • 일대다 대응(One to Many)
  • 다대일 대응(Many to One)
  • 다대다 대응(Many to Many)

정규화 과정

정규화를 수행

: 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 입력, 수정, 삭제 이상 현상을 제거하는 것

- 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있음

- 정규화된 테이블은 데이터를 처리할 때 속도가 빨라질 수도 혹은 느려질 수도 있는 특성을 가지고 있음

 

cf)

함수적 종속성(FD, Functional Dependency)

: 테이블의 특정 컬럼 A의 값을 알면 다른 컬럼 B값을 알 수 있을 때, 컬럼 B는 컬럼 A에 함수적 종속성이 있다고 함

 

결정자(Determinant)

: 함수적 종속성 설명에서 컬럼 A를 결정자라고 함

 

다치 종속(MVD, MultiValued Dependency)

: 결정자 컬럼 A에 의해 컬럼 B의 값을 다수 개 알 수 있을 때, 컬럼 B는 컬럼 A에 다치종속되었다고 함

 

 

- 정규화된 테이블 모델은 조회 시 처리 조건에 따라 성능이 향상 혹은 저하됨

- 정규화된 데이터 모델은 입력, 수정, 삭제 시 무조건 성능이 향상됨

- 상호 종속성이 강한 데이터 요소들을 분리, 독립된 개념으로 정의하게 됨에 따라 유연성이 극대화됨

=> High Cohesion & Loose Coupling

: 응집도가 높은 모듈은 프로그램 전체에서 담당하는 기능을 수행하는 것에 있어서는 다른 모듈과의 상호작용이 거의 없이도 단일 기능을 수행할 수 있게 됨

 

정규화 이론

  1. 1차 정규화 : 함수 종속 복수의 속성값을 갖는 속성을 분리, 속성의 원자성 확보
  2. 2차 정규화 : 함수 종속, 주식별자에 완젼 종속적이지 않은 속성의 분리, 부분 종속 속성을 분리
  3. 3차 정규화 : 함수 종속, 일반 속성에 종속적인 속성의 분리, 이전종속 속성의 분리
  4. 보이스-코드 정규화 : 함수 종속, 결정자 안에 함수종속을 가진 주식별자 분리
  5. 4차 정규화 : 다가 종속 속성을 분리
  6. 5차 정규화 : 결합 종속일 경우는 두 개 이상의 N개로 분리

1. 제 1정규형

- 모든 속성은 원자 값을 가져야 함

- 다중 값을 가질 수 있는 속성은 분리되어야 함

 

2. 제 2정규형

- 제 1정규형을 만족하고 모든 Non-Key 컬럼은 기본키 전체에 종속되어야 함

- 기본키에 종속적이지 않거나 기본 키 일부 컬럼에만 종속적인 컬럼은 분리되어야 함

 

3. 제 3정규형

- 제 2정규형을 만족하고 일반 속성들간에도 종속 관계가 존재하지 않아야 함

- 일반 속성들 간 종속 관계가 존재하는 것들은 분리되어야 함

 

'DB' 카테고리의 다른 글

6. RDBMS & NoSQL  (0) 2025.07.07
5. 격리 수준과 이상 현상  (0) 2025.07.07
4. Concurrency Control(Serializability, Recoverable)  (0) 2025.07.07
3. 트랜잭션 개념 & ACID 속성  (1) 2025.07.07
1. Key  (0) 2025.07.03