Лента новостей схемы SQL

Я создаю приложение в стиле ленты новостей, которое создаст социальную сеть для компании.

Когда вы создаете статус, у вас есть возможность выбрать аудиторию, для которой статус будет виден, в этом случае это будут различные компании в этой компании.

Например, «Джон» из «Бизнес 1» хочет опубликовать статус о своих квартальных результатах, но хочет, чтобы его видели только люди из его бизнеса.

Однако «Джейн» из «Бизнеса 2» рожает ребенка и хочет, чтобы ее должность увидела вся компания (все компании).

Первоначально я планировал создать таблицу NewsFeed со столбцом аудитории, в котором содержался массив каждой компании, для которой будет виден пост. Например: [«Business 1», «Business 5», «Business 7»], и приложение проверит, содержится ли в массиве бизнес, в котором находится пользователь, если true, то будет показывать сообщение.

Я не уверен, что это самый эффективный способ сделать это и не выглядит особенно масштабируемым.

Я также рассмотрел возможность создания таблицы «NewsFeed» для каждого отдела, и в зависимости от выбранной опции аудитории при обновлении статуса он будет вставлен в эти таблицы. Однако, если у нас будет много предприятий, я думаю, это тоже может быть неэффективно?

Как лучше всего структурировать таблицы в базе данных, чтобы наиболее эффективно реализовать эту функцию?

Спасибо

-1

Решение

Создание 2/3 таблиц будет лучшим вариантом, чем наличие одной таблицы —
Таблица 1 >> Лента новостей с колонками NewsFeedId а также NewsFeedText
Таблица 2 >> NewsFeedPublish с колонками NewsFeedId а также BusinessID

Для экономичного дизайна лучше иметь таблицу Business с BuisnessId а также Наименование фирмы но если вы не хотите создавать эту таблицу, вы можете напрямую использовать Наименование фирмы вместо BuisnessId в таблице 2.

1

Другие решения

Отношения, которые вы определяете, это отношения 1: M. Каждый статус может быть виден 0 или более бизнесу.

Я бы создал таблицу NewsFeed и таблицу Business, а затем таблицу, которая находится между этими двумя таблицами — скажем, NewsFeedBusiness.

В таблице NewsFeedBusiness у вас есть NewsFeedID в качестве внешнего ключа, который ссылается на NewsFeed, и у вас есть BusinessID в качестве внешнего ключа для таблицы Business. Я также добавил бы уникальный ключ к NewsFeedID + BusinessID, чтобы предотвратить повторное попадание записи NewsFeed в один и тот же бизнес.

1

По вопросам рекламы [email protected]