728x90
1. ERD의 의미
- Entity Relationship Diagram
- 요구 분석 사항에서 얻은 엔티티와 속성들의 관계를 그림으로 나타낸 개체-관계 모델
- 테이블과의 관계를 설명하는 다이어그램
- 이를 통해 프로젝트에서 사용하는 데이터베이스의 구조를 한눈에 파악할 수 있다.
- 데이터베이스를 구축 시 뼈대 역할을 하며, 서비스 구축 시 제일 먼저 신경써야 할 부분이다.
👉 API를 보다 효율적으로 뽑아낼 수 있다.
2. ERD 그리기
2-1. 엔티티 Entity
- 정의 가능한 사물 또는 개념
- 데이터베이스의 테이블이 엔티티로 표현된다.
2-2. 엔티티 속성 Entity Attribute
- 개체가 가지고 있는 속성
- 예) 학생 엔티티에는 학번, 이름, 주소, 전공 등 속성이 있다.
- 데이터베이스 테이블의 각 필드(컬럼)들
2-3. 엔티티 도메인 Enttiy Domain
- 도메인은 속성의 값, 타입, 제약사항 등에 대한 값의 범위를 표현하는 것이다.
- 사용자 기호에 따라 속성 타입만 그릴 수도 있고, 가독성을 위해 생략도 가능하다.
- 데이터 타입을 명시할 때, 데이터베이스가 지원하는 타입에 맞게 작성해야 한다.
3. 엔티티 분류
- 엔티티는 저장하는 데이터 정보 주제에 따라 종류가 나뉜다.
- 고객 정보 같은 물리적인 형태의 정보와 구매 이력 같은 무형적이고 개념적인 정보가 있다.
구분 | 내용 |
유형 엔티티 | 물리적인 형태 예) 고객, 상품, 거래처, 학생, 교수 등 |
무형 엔티티 | 물리적인 형태가 없고 개념적으로만 존재하는 엔티티 예) 인터넷 장바구니, 부서 조직 등 |
문서 엔티티 | 업무 절차상에서 사용되는 문서나 장부, 전표에 대한 엔티티 예) 거래명세서, 주문서 등 |
이력 엔티티 | 업무상 반복적으로 이루어지는 행위나 사건의 내용을 일자별, 시간별로 저장하기 위한 엔티티 예) 입고 이력, 출고 이력, 구매 이력 등 |
코드 엔티티 | 무형 엔티티의 일종으로 각종 코드를 관리하기 위한 엔티티 예) 국가코드, 각종 분류 코드 |
4. ERD 엔티티 관계 표시법
더보기
- 강한 개체 타입
- 독립적으로 식별할 수 있는 개체를 가지고 있는 개체 타입
- 강한 개체 타입은 각 개체를 식별할 수 있는 기본키를 가짐
- 약한 개체 타입
- 상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속된 개체 타입
- 약한 개체 타입은 자신의 기본키만으로 식별이 어려우므로 상위의 강한 개체 타입의 기본키를 받아 상속함
- 식별자 (부분키)
- 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성
- 강한 개체 간의 관계는 비식별자 관계로 표현함
- 약한 개체를 포함하는 관계는 식별자 관계로 표현함
4-1. 식별자 관계
- 실선으로 표현한다.
- 부모 자식 관계에서 자식이 부모의 주 식별자(PK)를 외래 식별자(FK)로 참조하여 자식의 주 식별자로 설정한다.
4-2. 비식별자 관계
- 점선으로 표현한다.
- 부모 자식 관계에서 자신이 부모의 주 식별자를 외래 식별자로 참조해서 일반 속성으로 사용한다.
4-3. 정리
항목 | 식별자 관계 | 비식별자 관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 | 자식 주식별자의 구성에 포함됨 | 자식 일반 속성에 포함됨 |
표기법 | 실선 표현 | 점선 표현 |
연결 고려사항 | - 반드시 부모 엔티티 종속 - 자식 주식별자 구성에 부모 주식별자 포함 필요 - 상속받은 주식별자 속성을 타 엔티티에 이전 필요 |
- 약한 종속관계 - 자식 주식별자 구성을 독립적으로 구성 - 자식 주식별자 구성에 부모 주식별자 구분 필요 - 상속받은 주식별자 속성을 타 엔티티에 차단 필요 - 부모 쪽의 관계 참여가 선택 관계 |
5. 정규화 과정
5-1. 정규화란?
- 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상현상을 제거하는 것
- 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
- 정규화된 테이블은 데이터를 처리할 때 속도가 빨라질 수도 혹은 느려질 수도 있는 특성을 가지고 있다.
- 정규화된 데이터 모델은 조회 시 처리 조건에 따라 성능이 향상 혹은 저하된다.
- 정규화된 데이터 모델은 입력/수정/삭제 시 무조건 성능이 향상된다.
- 함수적 종속성(FD: Functional Dependency)
: 테이블의 특정 컬럼 A의 값을 알면 다른 컬럼 B 값을 알 수 있을 때, 컬럼 B는 컬럼 A에 함수적 종속성이 있다고 한다. - 결정자(Determinant)
: 함수 종속 관계에서 특정 종속자를 결정짓는 요소. 위 설명에서 컬럼 A를 결정자라고 한다. - 종속자(Dependent)
: 위 설명에서 컬럼 B를 종속자라고 한다. - 다치종속(MVD: MultiValued Dependency)
: 결정자 컬럼 A에 의해 컬럼 B의 값을 다수 개 알 수 있을 때 컬럼 B는 컬럼 A에 다치종속 되었다고 한다.
5-2. 정규화 효과 및 장점
- 상호 종속성이 강한 데이터 요소들을 분리하여 독립된 개념(엔티티, 테이블)으로 정의하여 High Cohesion & Lose Coupling 원칙에 충실해지며 이로 인해 유연성이 극대화된다.
- High Cohesion & Lose Coupling
: 응집도가 높은 모듈(기능단위)은 프로그램 전체에서 담당하는 기능을 수행하는 것에 있어서는 다른 모듈과의 상호작용이 거의 없이도 단일 기능을 수행할 수 있게 된다.
6. 정규화 이론 : 두부 이걸 다줘?(도부이결다조)
6-1. 제1정규형
- 모든 속성은 원자 값(더이상 쪼개질 수 없는 단위)을 가져야 한다. 도메인이 원자값
- 다중 값을 가질 수 있는 속성은 분리되어야 한다.
6-2. 제2정규형
- 제1정규형을 만족하고 모든 Non-Key 컬럼은 기본 키(PK) 전체에 종속되어야 한다.
- 기본키에 종속적이지 않거나 기본키 일부 컬럼에만 종속적인 컬럼은 분리되어야 한다.
- 부분적 함수 종속 제거
6-3. 제3정규형
- 제2정규형을 만족하고 일반 속성들간에도 종속관계가 존재하지 않아야 한다.
- 일반 속성들 간 종속관계가 존재하는 것들은 분리되어야 한다.
- 이행적 함수 종속 제거
이행적 함수 종속이란?
A->B와 B->C가 존재하면 논리적으로 A->C가 성립하는데,
이때 집합C가 집합A에 이행적으로 함수 종속되었다고 한다.
6-4. 보이스-코드 정규화
- 결정자가 후보키가 아닌 것 제거
6-5. 제4정규형
- 다치 종속 제거
6-6. 제5정규형
- 조인 종속성 이용
'Computer Science > DB' 카테고리의 다른 글
[DB] 트랜잭션(3) - 격리 수준(Isolation level)과 이상 현상 (0) | 2024.03.14 |
---|---|
[DB] 트랜잭션(2) - 병행 수행과 병행 제어(Concurrency Control) (0) | 2024.03.14 |
[DB] 트랜잭션(1) - 정의, ACID, 상태, 문법, 예외 (0) | 2024.03.13 |
스터디 1회차 예상 질문 (0) | 2024.03.11 |
[DB] Key(기본키, 후보키, 슈퍼키, 대체키) (0) | 2024.03.10 |