Entity-Relationship Diagram (ERD)
데이터 모델링의 기본 도구 中 하나
DB의 구조를 시각적으로 나타내는 데 사용
개체(Entity), 속성(Attribute), 관계(Relationship) 등을 표현
==> DB 설계와 구조를 파악 & 이해하고 문서화하는 데 help
(1976년 Peter Chen, 엔터티 도출 -> 엔터티 배치 -> 관계 설정 -> 관계명 기술, 중요 좌상단 우선 배치)
사용법
DB 모델링
관계형 db에서 주로 사용
엔티티, 속성 to 테이블, 컬럼
테이블간 관계 시각화로 문제점 파악 용이
sw 엔지니어링
계획 단계 사용
서로 다른 요소 & 서로 간 관계 식별
data flow diagram 기초로 종종 사용
그리기
Entity (=테이블)
정의 가능한 사물/개념 (사람, 도서정보(무형)
Attribute (=컬럼)
개체가 가지고 있는 속성
ex) [학생] 학번, 이름, 주소, 전공 등 속성 존재
Domain (=속성의 범위)
속성의 값, 타입, 제약사항 (가독성 위해 생략 가능)
db지원 타입에 맞게 작성
분류
- 유형 엔티티 : 물리적 형태 (학생, 학과, 교수)
- 무형 엔티티 : 물리적 형태 없고, 개념적으로 존재 (학생별 취미, 인터넷 장바구니, 부서 조직)
- 문서 엔티티 : 업무 절차상 사용되는 문서나 장부, 전표에 대한 (거래명세서, 주문서)
- 이력 엔티티 : 업무상 반복적을로 이뤄지는 행위나 사건의 내용을 일자별, 시간별로 저장하기 위한 (입출고 이력, 구매 이력)
- 코드 엔티티 : 무형의 일종, 각종 코드 관리 위한 (국가코드, 분류코드)
ERD 엔티티 관계 표시법
식별자 관계 : 실선, 강한 연결. 자식 주식별자의 구성에 포함. 부모 먼저 소멸(조인 관계 최소화)
비식별자 관계 : 점선, 약한 연결. 자식 일반 속성에 포함. 자식 먼저 생성 가능
ERD Notation
1) One : 1:1, 1 : n ---> 주로 하나의 외래키 걸린 관계
2) Many: n:m ---> 중계 테이블 통해 여러개 데이터 바라보고 있을 때 사용
3) One (and only One) : 1:1이나, 하나의 row끼리만 연결
4) Zero or one : 1:1, 1:n but 필수 조건 X
5) One or many : 1:1, n:m ---> 관계 가지고 있으나 참조되는 row 값 불명확
6) Zero or many : 참조하는 테이블 관계 불명확 ---> row 생성값 없, 하나, 多 일수도 (장바구니 처럼)
ERD 관계 참여도
관계 양 끝에 기호로 표시
| : 필수적 존재 개체
0 : 없어도 되는 개체
ERD 관계 카디널리티
1) 1 대 1 대응(One to One)
2) 1 대 다 반응(One to Many)
3) 1 대 다 반응(Many to One)
4) 다 대 다 반응(Many to Many)
카디널리티 따라 무질서하게 선 긋는다면, 가독성 저하
=> ERD에서는 선 끝 모양을 다르게 표시해 가독성 높임
정규화
정규화 수행 == 입력/수정/삭제 이상 현상 제거, 성능 향상 (단, 조회 성능 향상 or 저하)
----> 데이터 결정 결정자 -> 일반 속성 (함수적 종속, A값 알면 B값 알 수 있다. A->B)
중복 최소화하고 데이터 구조화. => 일관성 유지 & 데이터 용량 최소화
유연성과 효율성 증가 (but 성능 감소 같은 단점도 존재, not always good..)
ERD 사용해 모델 정규화하고 정규화된 엔티티와 관계 표현 가능
장점 : 상호 종속성 강한 데이터 요소 분리, 독립 개념(엔티티, 테이블)로 정의함에 딸라 High Cohession & Loose Coupling 원칙 충실, 유연성 극대화
(High Cohesion & Loose Coupling : 응집도 높은 모듈(기능단위)은 프로그램 전체에서 담당하는 기능 수행에 있어 다른 모듈과의 상호작용 거의 없이도 단일 기능 수행 가능)
1NF : 도메인이 원자값 아닌 것 분해
"한 칸, 값 하나"
2NF : 부분 함수 종속 제거 (Partial Dependency)
"ALL 일반 속성, PK 전체에 must 종속"
현재 테이블 주제와 관련 없는 컬럼을 다른 테이블로 빼는 작업(현재 테이블의 핵심 주제와 상관없는 컬럼 다 제거),
하나의 Composite primary key(합치면 pk 가능)에 종속
ex) 상품 테이블 --- 배송코드 (빼서 new 테이블 Pk 가능)
3NF : 이행 종속 제거 (Transitive Dependency)
"일반 속성 간 서로 종속 X"
BCNF : 결정자가 후보키 아닌 것 제거
4NF : 다치 종속 제거
5NF : 조인 종속 이용
1. ERD 사용법 및 그리는 법:
- ERD를 그리는 데 사용되는 주요 요소는 개체(Entity), 속성(Attribute), 관계(Relationship)입니다.
- ERD를 그릴 때에는 먼저 엔티티를 식별하고, 각 엔티티의 속성을 정의합니다.
- 다음으로 엔티티 간의 관계를 결정하고, 관계의 유형을 지정합니다.
- 마지막으로 엔티티, 속성, 관계를 다이어그램에 그려서 데이터베이스의 구조를 시각적으로 표현합니다.
2. 분류:
- ERD는 크게 개체(Entity)와 관계(Relationship)로 구분됩니다.
- 개체는 데이터베이스 내에서 식별 가능한 무언가를 나타내며, 관계는 엔티티 간의 연결을 나타냅니다.
3. 관계:
- 관계는 엔티티 간의 연결을 나타내며, 주로 일대일(1:1), 일대다(1:N), 다대다(N:M)의 관계 유형이 있습니다.
- 관계는 각 엔티티 간의 연결 선으로 표현되며, 관계에는 관계명과 관계 유형이 포함됩니다.
4. 참여도:
- 참여도는 관계에 참여하는 엔티티 간의 관계에 대한 특성을 나타냅니다.
- 참여도에는 필수적인(Mandatory) 참여와 선택적인(Optional) 참여가 있습니다.
5. 정규화:
- 정규화는 데이터베이스의 설계를 최적화하여 중복을 최소화하고 데이터의 일관성을 유지하는 과정입니다.
- ERD를 사용하여 데이터 모델을 정규화하고 정규화된 엔티티와 관계를 표현할 수 있습니다.
요약: ERD는 데이터베이스 설계의 핵심 도구로서, 데이터 모델의 구조를 시각적으로 표현하고 문서화하는 데 사용됩니다. 엔티티, 속성, 관계를 이용하여 데이터베이스의 구조를 정의하고, 참여도와 정규화를 통해 데이터베이스의 일관성과 효율성을 유지할 수 있습니다. ERD를 통해 데이터베이스 설계의 개념과 관계를 명확하게 이해할 수 있습니다.
1. ERD란?
Entity-Relationship Diagram(ERD)은 데이터베이스 설계를 시각적으로 표현하는 도구입니다. 엔터티(개체), 속성(특성), 관계 등을 그래픽 형식으로 표현하여 데이터베이스의 구조와 관계를 이해할 수 있도록 돕습니다.
2. ERD 그리는 법
ERD를 그릴 때는 주로 엔터티, 속성, 관계를 표현하는 다이어그램을 사용합니다. 엔터티는 직사각형으로 표현하고, 속성은 타원으로 표현합니다. 관계는 다이어그램에 선으로 연결하여 표현하며, 관계의 유형에 따라 다이어그램에 다른 기호를 사용합니다.
3. ERD의 분류
ERD는 크게 개념적, 논리적, 물리적 세 가지로 분류됩니다. 개념적 ERD는 엔터티와 관계를 나타내고, 논리적 ERD는 테이블 간의 관계를 표현하며, 물리적 ERD는 실제 테이블과 속성을 나타냅니다.
4. 관계
관계는 엔터티 간의 연관성을 표현합니다. 일대일, 일대다, 다대다와 같은 관계 유형을 표현할 수 있으며, 외래키(Foreign Key)를 사용하여 관계를 구현합니다.
5. 참여도
참여도는 엔터티 간의 관계에서 한 엔터티가 다른 엔터티에 얼마나 참여하는지를 나타냅니다. 필수 참여(Mandatory Participation)와 선택적 참여(Optional Participation)로 구분됩니다.
6. 정규화
정규화는 데이터베이스 설계 과정에서 중복을 제거하고 데이터를 구조화하는 프로세스입니다. 1NF부터 5NF까지의 정규형이 있으며, 이를 통해 데이터베이스의 유연성과 효율성을 향상시킵니다.
이러한 기본 개념과 원리를 이해하면 ERD를 사용하여 데이터베이스를 효과적으로 설계하고 구현할 수 있습니다.
----------------------------------------------------------------------------------------------------------------------
다대다 --> table 관계 완성 X --> 풀어가는 과정!! => 중계 테이블
'CS' 카테고리의 다른 글
S)DB_03_트랜잭션3 (0) | 2024.03.14 |
---|---|
S)DB_03_트랜잭션2 (1) | 2024.03.14 |
S)DB_03_트랜잭션 (0) | 2024.03.12 |
S) 01_Feedback (2) | 2024.03.11 |
S) DB_1_key (0) | 2024.03.10 |