Существует два подхода к решению этой проблемы:
Вы разрабатываете свои таблицы таким образом, что у вас нет повторения информации.По сути, интересующая вас лента может быть построена из существующих таблиц качественным способом;или
Вы повторяете определенные данные, чтобы упростить реализацию вашего канала.
Лично я бы, наверное, выбрал (2) и получил бы новыйтаблица:
- Фид: id, person_id, store_id, action_id, Province_id, product_category_id
, причем последние два поля являются необязательными, в зависимости от действия (просмотр, редактирование,добавить и т. д.).
Пуристы будут утверждать, что повторяющиеся данные плохие (конечно, нормальная форма стремится их вычленить), но в реальных схемах базы данных делают это все время из соображений производительности.
Подумайте об этом так: на что вы тратите большую часть своего времени в своем приложении?
- Просмотр канала (чтение);или
- Выполнение действий (запись).
Если это (1), что, я подозреваю, так и есть, то таблица каналов имеет смысл.Как правило, вы хотите оптимизировать чтение, а не запись, поскольку записи происходят гораздо реже.