Skip to content
2hwayoung edited this page Apr 15, 2025 · 1 revision

📊 클래스 다이어그램


coing

📦 Entity 구조 정리


🧑‍💼 User (member)

필드명 타입 제약조건 설명
id UUID PK, NotNull, Updatable = false 사용자 고유 ID
name String NotNull 사용자 이름
email String NotNull, Unique 이메일
password String NotNull 비밀번호
authority Authority NotNull 권한
verified Boolean NotNull, default = false 이메일 인증 여부
provider Provider NotNull, Enum 가입 경로 (EMAIL 등)

💱 Market (market)

필드명 타입 제약조건 설명
code String PK 마켓 코드 (예: KRW-BTC)
koreanName String NotNull 마켓 이름 (한글)
englishName String NotNull 마켓 이름 (영문)

⭐ Bookmark (bookmark)

필드명 타입 제약조건 설명
id Long PK, Auto Increment 북마크 ID
user User FK(user_id), NotNull, Cascade 북마크한 사용자
market Market FK(market_id), NotNull 북마크 대상 마켓
unique user_id + market_id 조합으로 Unique 제약 동일 마켓 중복 북마크 방지

💬 ChatMessage (chat_messages)

필드명 타입 제약조건 설명
id Long PK, Auto Increment 메시지 ID
chatRoom ChatRoom FK(chat_room_id), NotNull, Cascade 해당 메시지가 속한 채팅방
sender User FK(user_id), NotNull, Cascade 메시지 보낸 사용자
content String NotNull, maxLength = 1000 메시지 내용
timestamp LocalDateTime - 메시지 전송 시간

🏠 ChatRoom (chat_rooms)

필드명 타입 제약조건 설명
id Long PK, Auto Increment 채팅방 ID
market Market FK(market_id), NotNull 채팅방이 연결된 마켓
name String NotNull 채팅방 이름 (마켓의 한글 이름 등)

🔗 클래스 간 관계 설명


User ↔ Bookmark

  • 하나의 사용자는 여러 개의 마켓을 북마크할 수 있음 (1:N)

  • Bookmark는 user_id를 통해 해당 사용자를 참조함

  • 사용자 삭제 시 연관된 Bookmark도 함께 삭제됨 (Cascade, @OnDelete)


Market ↔ Bookmark

  • 하나의 마켓은 여러 사용자에게 북마크될 수 있음 (1:N)

  • Bookmark는 market_id를 통해 마켓을 참조함


Market ↔ ChatRoom

  • 각 채팅방은 하나의 마켓에만 연결됨 (N:1)

  • 즉, 한 마켓당 여러 채팅방이 연결될 수 있음


ChatRoom ↔ ChatMessage

  • 하나의 채팅방에는 여러 메시지가 존재함 (1:N)

  • 메시지는 어떤 채팅방에 속해있는지 chat_room_id로 구분됨


User ↔ ChatMessage

  • 메시지는 하나의 사용자에 의해 작성됨 (N:1)

  • 사용자가 작성한 여러 메시지가 있을 수 있음

Clone this wiki locally