У меня есть простая система сообщений: Пользователь отправляет сообщение группе.Хранение различных типов «сообщений» в приложении простого чата
Я пытаюсь нормализовать как можно больше и делать что-то правильно, поэтому схема может развиваться при необходимости.
Я решил иметь таблицу, в которой хранятся все сообщения, и 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)
Есть ли какие-либо негативы для этого?
У вас будет более одного изображения за сообщение и/или более одного сообщения на изображение? – WillardSolutions
@EatPeanutButter всего одно изображение за сообщение. И одно текстовое сообщение на сообщение. Это может быть тот или иной, а не тот и другой. – BugHunterUK
. Можете ли вы добавить ограничение внешнего ключа к 'message', которое ссылается на' message_image', а также ограничение внешнего ключа, которое в 'message', которое ссылается на' message_text'? Затем вы можете искать строки в 'message', где эти cols <> NULL, если вы действительно хотите отделить текст и изображение в разных таблицах – WillardSolutions