Перейти к содержанию

Модель данных

User (Пользователь)

  • id - идентификатор пользователя (IDENTITY)
  • name - имя пользователя

Связи:

  • Один ко многим с Post (как автор)
  • Один ко многим с Comment (как автор)
  • Один ко многим с Vote (как автор)
  • Один ко многим с PostSubscribe
  • Один ко многим с TagSubscribe

Post (Пост)

  • id - идентификатор поста (IDENTITY)
  • title - заголовок поста
  • body - текст поста
  • postType - тип поста (QUESTION, ANSWER) - enum
  • author_id - идентификатор автора (внешний ключ)
  • parent_id - идентификатор родительского поста (внешний ключ)
  • answer_id - идентификатор принятого ответа (внешний ключ)
  • created - дата и время создания
  • update - дата и время обновления

Связи:

  • Многие к одному с User (автор)
  • Многие к одному с Post (родительский пост)
  • Многие к одному с Post (принятый ответ)
  • Один ко многим с Comment
  • Один ко многим с Vote
  • Один ко многим с Tag
  • Один ко многим с PostSubscribe

Comment (Комментарий)

  • id - идентификатор комментария (IDENTITY)
  • body - текст комментария
  • author_id - идентификатор автора (внешний ключ)
  • post_id - идентификатор поста (внешний ключ)
  • created - дата и время создания
  • update - дата и время обновления

Связи:

  • Многие к одному с User (автор)
  • Многие к одному с Post
  • Один ко многим с Vote (связь через поле post в Vote)

Vote (Голос)

  • id - идентификатор голоса (IDENTITY)
  • author_id - идентификатор автора (внешний ключ)
  • post_id - идентификатор поста (внешний ключ)
  • created - дата и время создания
  • type - тип голоса (POSITIVE, NEGATIVE) - enum

Связи:

  • Многие к одному с User (автор)
  • Многие к одному с Post

Tag (Тег)

  • id - идентификатор тега (сгенерированный)
  • name - название тега
  • post_id - идентификатор поста (внешний ключ)

Связи:

  • Многие к одному с Post
  • Один ко многим с TagSubscribe

PostSubscribe (Подписка на пост)

Составной ключ через PostSubscribeId:

  • post_id - идентификатор поста
  • user_id - идентификатор пользователя

Связи:

  • Многие к одному с Post
  • Многие к одному с User

TagSubscribe (Подписка на тег)

Составной ключ через TagSubscribeId:

  • tag_id - идентификатор тега
  • user_id - идентификатор пользователя

Связи:

  • Многие к одному с Tag
  • Многие к одному с User

Role (Роль)

Enum с значениями:

  • BASIC - базовая роль
  • MODER - модератор
  • ADMIN - администратор

Примечание: В текущих Entity классах роль не используется в User


Типы данных

PostType (Тип поста)

  • QUESTION - вопрос
  • ANSWER - ответ

VoteType (Тип голоса)

  • POSITIVE - положительный голос
  • NEGATIVE - отрицательный голос
Модель данных
ER диаграмма