Как избежать полиморфных отношений в двух пользовательских моделях приложения Chat? - PullRequest
0 голосов
/ 21 сентября 2019

Я разрабатываю схему базы данных для приложения поддержки чата.Реализация будет в noSQL (mongodb).Я следую за чем-то похожим на этот вопрос SO

У меня есть четыре коллекции

Users
 |- id
 |- name
 |- email
 |- password

Consumers
 |- id
 |- name (default 'guest')
 |- email (optional, allowing guest chat)

Conversations
 |- id
 |- userId
 |- consumerId
 |- createdAt
 |- lastMessageId

Messages
 |- id
 |- body
 |- conversationId
 |- createdAt
 |- authorType (consumer or user)
 |- authorId (consumer or user id)

authorType & authorId, которые вместе определят одну сущность (модель)это полиморфное отношение .Я сделал это, прежде чем это может вызвать проблемы в будущем.Итак, я хочу избежать этого.

Вопрос в том, как я могу избежать этих типов отношений?

Я думал о объединении двух пользовательских моделей в одну, создании одной User модели, но приложение чата позволит гостевым пользователям, поэтому ядолжны войти в таблицу пользователей с пустым адресом электронной почты и паролем.Мне это не кажется правильным.

...