Модель данных
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 - отрицательный голос