Я разрабатываю схему базы данных для приложения поддержки чата.Реализация будет в 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
модели, но приложение чата позволит гостевым пользователям, поэтому ядолжны войти в таблицу пользователей с пустым адресом электронной почты и паролем.Мне это не кажется правильным.