2016-11-21 2 views
0

У меня есть простая система сообщений: Пользователь отправляет сообщение группе.Хранение различных типов «сообщений» в приложении простого чата

Я пытаюсь нормализовать как можно больше и делать что-то правильно, поэтому схема может развиваться при необходимости.

Я решил иметь таблицу, в которой хранятся все сообщения, и 2 таблицы для разных типов сообщений.

Но я нашел проблему с этим. Запросы до message бессмысленны, поскольку они не создают сообщение. Вы должны запросить message_image и message_text индивидуально. Что заставляет меня думать, что моя модель ошибочна.

message 
------- 
+ id (int) 
+ group_id (int) 
+ sender_id (int) 
+ created_at (timestamp) 

message_image 
------------- 
+ id (int) 
+ title (varchar) 
+ url (varchar) 
+ created_at (timestamp) 

message_text 
------------ 
+ id (int) 
+ message (varchar) 
+ created_at (timestamp) 

Есть ли какие-либо негативы для этого?

+0

У вас будет более одного изображения за сообщение и/или более одного сообщения на изображение? – WillardSolutions

+0

@EatPeanutButter всего одно изображение за сообщение. И одно текстовое сообщение на сообщение. Это может быть тот или иной, а не тот и другой. – BugHunterUK

+0

. Можете ли вы добавить ограничение внешнего ключа к 'message', которое ссылается на' message_image', а также ограничение внешнего ключа, которое в 'message', которое ссылается на' message_text'? Затем вы можете искать строки в 'message', где эти cols <> NULL, если вы действительно хотите отделить текст и изображение в разных таблицах – WillardSolutions

ответ

1

Добавить ограничение внешнего ключа для message, ссылающийся message_image, а также ограничение внешнего ключа, что в message, который ссылается на message_text. Затем вы можете искать строки в сообщении, где те столбцы <> NULL.

Смежные вопросы