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차 정규화 : 함수 종속 복수의 속성값을 갖는 속성을 분리, 속성의 원자성 확보
- 2차 정규화 : 함수 종속, 주식별자에 완젼 종속적이지 않은 속성의 분리, 부분 종속 속성을 분리
- 3차 정규화 : 함수 종속, 일반 속성에 종속적인 속성의 분리, 이전종속 속성의 분리
- 보이스-코드 정규화 : 함수 종속, 결정자 안에 함수종속을 가진 주식별자 분리
- 4차 정규화 : 다가 종속 속성을 분리
- 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 |