관계(Relationships)란
- 두 개 이상의 엔티티(Entity) 간에 존재하는 연관성
엔터티 간의 연관성
종속관계
- 부모엔터티가 없으면 자식 엔티티가 존재할 수 없는 관계
참조관계
- 단순히 참조 데이터를 관리하려는 관계
- 관계를 삭제하더라도 한 속성의 연관성을 모르게 될 뿐, 하위 엔티티가 존재할 수 없는 것은 아니다
Entity Relationship Diagram(ERD)
- Perter Chen에 의해 제안(1976)
- 서로 관계 되어있는 엔터티를 그림(Diagram)으로 표현한 것
ERD 기본 요소
Entiry
- 시스템화 하고자하는 사건, 사물
- E.g. 저자, 글, 댓글
Attiribute
- 엔티티, 관계성의 성질을 나타내는 더 이상 쪼갤수 없는 정보의 단위
- e.g. 저자 테이블의 column : id(PK), 이름, 생년월일, 주민번호 등등
Relationship
- 엔티티 또는 속성간의 연관성, 관계
- 관계성(카디널리티, Cadinality) : 1대1, 1대N, N대M
- e.g. 저자는 여러댓글을 작성할 수 있고, 댓글은 하나의 저자만 작성가능. 즉, 저자와 댓글은 1대N관계
ERD 표기법
ERD 표현 종류

Entiry
- 엔티티(사각형)

Attribute
- 속성(마름모)

Relationship
ERD 표기 순서
- 엔터티를 그린다.
- 엔터티를 적절하게 배치한다.
- 엔터티간 관계를 설정한다
- 기본 키로 속성이 상속되는 식별자 관계를 설정한다.
- 중복되는 관계가 있으면 안된다.
- Circle 관계가 발생하면 안된다.
- 관계명을 기술한다.
- 현재형을 사용한다.
- 지나치게 포괄적인 용어는 사용하지 않는다.
- IE/Crow's 표기법에서는 링크마다 각각의 관계를 기술한다.
- 관계의 참여도를 기술한다.
- 관계의 필수여부를 기술한다.
ERD 표기 예시

ERD 구현 과정
기획(업무파악)

다른표현(ex. 엑셀, 다이어그램 등등)

Entity(Table)

Attribute(Column)

- 저자 : 저자번호(id), 이름, 소개
- 글 : 글번호(id), 제목, 내용, 저자_아이디
- 댓글 : 댓글번호(id), 제목, 내용, 작성일, 저자_아이디
Relationship(PK, FK, JOIN)

- 저자는 여러글을 작성할 수 있다
- 글은 여러저자가 작성할 수 있다
- 저자는 여러댓글을 작성할 수 있다
- 댓글은 하나의 저자만 작성할 수 있다
- 글은 여러댓글을 작성할 수 있다
- 댓글은 한 글에 대해서 작성할 수 있다

Identifier(식별자)
- 여러개의 집합체를 담고 있는 하나의 엔티티 또는 테이블에서 각 행(row)를 구분할 수 있는 논리적인 이름의 구분자 또는 열(column)
- 하나의 엔티티에는 반드시 하나의 식별자가 존재해야 한다
Identifier(식별자) 예시

- Cadidate(후보키) : user_id, email, national_id
- Primary key(기본키) : user_id
- Alternamte Key(대체키) : email, national_id
1 대 1 표기

1 대 N 표기

N 대 M 표기

Optional

Mandatory

최종 ERD
