ERD(Entity-Relationship Diagram)를 작성해보다!

 

ERD(Entity-Relationship Diagram)는 데이터베이스의 구조를 시각적으로 나타내는 다이어그램

데이터베이스에서 서로 다른 엔티티(테이블)들 간의 관계를 보여주는 설계 도구다.

ERD의 주요 구성요소

1. 엔티티(Entity)

  • 데이터베이스에서 정보를 저장하는 테이블
  • 업무상 관리가 필요한 대상
  • 예시: 회원(Member), 상품(Product), 주문(Order) 등

2. 속성(Attribute)

  • 엔티티가 가지는 특성이나 성질
  • 테이블의 컬럼에 해당
  • 예시:
    • 회원 엔티티의 경우: 회원ID, 이름, 이메일, 전화번호
    • 상품 엔티티의 경우: 상품ID, 상품명, 가격, 설명

3. 관계(Relationship)

  • 엔티티 간의 연관성을 표현
  • 관계의 종류:
    • 1:1 관계
    • 1:N 관계 (일대다)
    • N:M 관계 (다대다)

ERD 관계 표기법

1. Chen 표기법

  • 가장 처음 제안된 표기법
  • 관계를 마름모로 표현
  • 엔티티는 사각형으로 표현
  • 속성은 타원으로 표현

2. IE (Information Engineering) 표기법

  • 까마귀발(Crow's Foot) 표기법이라고도 함
  • 현재 가장 널리 사용되는 표기법
  • 관계의 기수성을 선의 끝 모양으로 표현

3. Barker 표기법

  • Oracle CASE method에서 사용
  • 선택적 관계는 점선
  • 필수적 관계는 실선
  • 관계의 기수성을 숫자로 표현 (1:1, 1:M, M:N)

업계 실무에서는?

  1. 대부분 IE 표기법을 기본으로 사용
  2. 회사/팀의 상황에 맞게 변형하여 사용
  3. 툴에 따라 지원하는 표기법이 다름:
    • ERWin: IE 표기법
    • Oracle Designer: Barker 표기법
    • MySQL Workbench: IE 표기법 기반

중요한 점

  • 팀 내에서 일관된 표기법 사용이 중요
  • 문서화를 통해 사용하는 표기법 명시
  • 복잡한 관계는 추가 설명을 붙이는 것이 좋음

 


 

 

우리팀 ERD를 피그마로 그려보았다.

나름 IE표기법으로 그려보았다.

 

Conversation (대화) 테이블
id: Primary Key, 자동 증가하는 고유 식별자
session_id: 브라우저 세션을 구분하기 위한 문자열 값 (각 사용자의 대화를 구분)
created_at: 대화가 시작된 시간
updated_at: 마지막 메시지가 추가된 시간

Message (메시지) 테이블
id: Primary Key, 자동 증가하는 고유 식별자
conversation_id: Foreign Key, Conversation 테이블 참조 (어떤 대화에 속한 메시지인지)
role: 메시지 작성자 구분 ('user' 또는 'ai')
content: 실제 메시지 내용을 저장하는 텍스트 필드
created_at: 메시지가 생성된 시간

Recipe (레시피) 테이블
id: Primary Key, 자동 증가하는 고유 식별자
title: 레시피 제목
ingredients: 필요한 재료 목록 (텍스트)
instructions: 조리 방법 (텍스트)
cooking_time: 조리 시간 (분 단위)
difficulty: 난이도 (예: 쉬움, 보통, 어려움)
cuisine_type: 요리 종류 (예: 한식, 양식, 중식)
servings: 몇 인분
image_url: 레시피 이미지 URL
created_at: 레시피 정보가 저장된 시간

테이블 간의 관계:
Conversation -- Message: 하나의 대화는 여러 개의 메시지를 가질 수 있음 (일대다 관계)

 

 

 

'스몰프로젝트' 카테고리의 다른 글

SA문서 파트 분배 해보기  (0) 2025.02.12