ERD Design - programmers-kdt-full-stack-3rd/live-chat GitHub Wiki

ERD 설계

https://dbdiagram.io/

Table verifications {
    id integer [primary key, increment]
    code varchar(255) [not null]
    jti varchar(64) [not null]
    expired_at timestamp [not null]
    created_at timestamp [default: `CURRENT_TIMESTAMP`]
    updated_at timestamp [default: `CURRENT_TIMESTAMP`]
}

Table users {
    id integer [primary key, increment]
    email varchar(255) [unique, not null]
    name varchar(255) [unique, not null]
    password_hash varchar(255) [not null]
    salt varchar(40) [not null]
    created_at timestamp [default: `CURRENT_TIMESTAMP`]
    updated_at timestamp [default: `CURRENT_TIMESTAMP`]
}

Table user_sessions {
    id integer [primary key, increment]
    client_id varchar(255) [not null, unique]
    user_id integer [not null]
    user_agent varchar(255) [not null]
    ip_address varchar(40) [not null]
    refresh_token varchar(2048) [not null]
    revoked boolean [not null, default: false]
    expired_at timestamp [not null]
    created_at timestamp [not null, default: `CURRENT_TIMESTAMP`]
    updated_at timestamp [not null, default: `CURRENT_TIMESTAMP`]
    last_accessed_at timestamp [not null, default: `CURRENT_TIMESTAMP`]

  indexes {
    (user_id, ip_address, user_agent) [unique]
  }
}

Table chatrooms {
  id integer [primary key]
  title varchar(255) [not null]
  content text
  upadated_at timestamp [default: `CURRENT_TIMESTAMP`]
}

Table messages {
  id integer [primary key]
  user_id integer
  chat_room_id integer
  content text
  sent_at timestamp [default: `CURRENT_TIMESTAMP`]
}

Table user_chatroom {
  user_id integer [primary key]
  chat_room_id integer [primary key]
}


Ref: user_sessions.user_id > users.id [delete: cascade]

Ref: user_chatroom.user_id > users.id
Ref: user_chatroom.chat_room_id > chatrooms.id

Ref: messages.user_id > users.id
Ref: messages.chat_room_id > chatrooms.id