ERD (Entity Relationship Diagram)

박영준·2023년 7월 1일
0

DB

목록 보기
31/41

ERD 그리는 사이트

1. 정의

  • 'Entity 개체'와 'Relationship 관계'를 중점적으로 표시하는 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램

2. 구성

1) 엔티티(Entity)

(학생 Entity)

  • 정의 가능한 사물 또는 개념

  • 데이터베이스의 테이블 = 엔티티

2) 엔티티 속성(Attribute)

(학생 엔티티는 학번, 이름, 주소, 전공 ...등 속성들을 가짐)

  • 엔티티는 개체가 갖고있는 속성(Attribute)을 포함

  • 데이터베이스의 테이블의 각 필드(컬럼)들 = 엔티티 속성

3) 엔티티 도메인(Domain)

  • 속성의 값, 타입, 제약사항 등에 대한 값의 범위를 표현하는 것
    • 단, 사용자 기호에 따라 속성 타입만 그릴수도 있고, 가독성을 위해서 생략할 수도 있다
  • 데이터 타입을 명시할 때, 데이터베이스가 지원하는 타입에 맞게 해야한다

4) 기본 키 (PK, 주 식별자) 🔑

  • ◆ 다이아몬드로 표현하기도 하고 아니면 열쇠로도 표현하기도 한다.

  • 주 식별자는 유일한 속성이므로 다른 속성과의 명확한 구분을 위해 구분선을 두기도 한다.

5) 외래 키 (FK, 외래 식별자) 🗝️

  • 외래 식별자를 표시할 때, 개체와의 관계를 따져서 선을 이어준다

6) NOT NULL

  • 해당 속성에 들어갈 값에
    • Null 을 비허용한다면 : N 혹은 NN 을 적는다
    • Null 을 허용한다면 : N 을 적지 않는다

3. 식별 vs 비식별 관계

1) 식별자 관계

(1) 정의

(자식 엔티티(학생별 취미)가 부모 엔티티(학생)의 학번을 '자신의 주 식별자(PK, 기본 키)로' 설정)

  • 실선으로 표현

    • 강한 연결관계 표현
  • 부모 자식 관계에서

    • 자식이 부모의 주 식별자를 외래 식별자로 참조해서 '자신의 주 식별자(PK, 기본 키)로' 설정

(2) 장단점

장점

  • 데이터의 정합성 유지를 DB에서 한번 더 할 수 있다.
    (정합성 : 어떤 데이터들이 값이 서로 일치하는 상태)

  • 자식 테이블에 데이터가 존재한다면, 부모 데이터도 반드시 존재한다고 보장할 수 있다.

단점

  • 요구사항이 변경되었을 경우, 구조 변경이 어렵다.

2) 비식별자 관계

(1) 정의

(자식 엔티티(사원정보)가 부모 엔티티(부서정보)의 부서코드를 '일반 속성으로' 사용)

  • 점선으로 표현

    • 약한 연결관계 표현
  • 부모 자식 관계에서

    • 자식이 부모의 주 식별자를 외래 식별자로 참조해서 '일반 속성으로' 사용

(2) 장단점

장점

  • 변경되는 요구사항을 유동적으로 수용할 수 있다.

  • 부모 데이터와 독립적인 자식 데이터를 생성할 수 있다.

단점

  • 데이터 정합성을 지키기 위해서는 별도의 비즈니스 로직이 필요

  • 자식 데이터가 존재해도, 부모 데이터가 존재하지 않을 수 있다.

  • 데이터 무결성을 보장하지 않는다. (무결성 : 데이터 값이 정확한 상태)

4. 연관관계에서

1) 일대일

2) 일대다

3) 다대다

5. 선택 vs 필수

'|' 표시

  • | 표시가 있는 곳은 반드시 있어야 하는 개체. (필수)

  • 학번 21003 학생의 취미가 낚시 라는 정보가 있다면, 21003학번의 학생의 정보가 학생 엔티티에 반드시 존재해야 한다.

'O' 표시

O 표시가 있다면 없어도 되는 개체. (선택)

  • 취미를 가진 학생이 있을수도 있고, 취미가 없는 학생이 있을 수도 있다.

예시

1 : 1 관계 : 부모(SHOP)는 하나의 자식(FOOD)이 있다.

1 : N 관계 : 부모(SHOP)는 하나 이상의 자식(FOOD)이 있다.

M : N 관계 : 하나 이상의 부모와 하나 이상의 자식이 있다.

1 : 1(o) 관계 : 부모는 하나의 자식이 있을 수도 있다. (없을 수도 있다)

1 : N(o) 관계 : 부모는 여러개의 자식이 있을 수도 있다. (없을 수도 있다)


참고: 데이터 모델링 개념 & ERD 다이어그램 작성 💯 총정리

profile
개발자로 거듭나기!

0개의 댓글