У меня есть веб-приложение, которое тянет твиттер-каналы для учетных записей пользователей. Когда два человека следуют за одним и тем же человеком, твиты хранятся дважды в БД. Я хочу хранить каналы, показывая это только двум пользователям. Каково решение? Веб-приложение имеет PHP и MySQL.Два разных пользователя с разными учетными записями следуют за одним и тем же лицом в твиттере, а БД хранит те же каналы дважды. Как избежать?
ответ
Решение состоит в том, чтобы иметь две таблицы: одну, которая хранит твиты, и таблицу соединений, которая связывает пользователя и твиты, которые они имеют на своем канале.
Чтобы разбить ситуацию, вы хотите, чтобы один пользователь имел доступ ко многим твитам и один твит, который будет видно многим пользователям. Это называется many-to-many relationship в реляционных терминах, и типичным решением является использование таблицы соединений для подключения двух объектов (в данном случае, для пользователей и твитов)
В таблице твитов может быть указатель для хранения официальной информации твита ID, а затем вы можете проверить его, чтобы проверить, существует ли он в базе данных.
Очень примитивный пример:
Table user
user_id
Table user_tweet_stream
user_id
tweet_id
Table tweets
tweet_id
twitter_id
tweet_created
tweet
Таким образом, один пользователь может быть связан с имеющих несколько твитов на их потоке, и чириканье может быть связано с рассматриваться несколькими пользователями.
Однако, есть аргумент против этого. По сути, если, по большей части, у ваших пользователей не будет дублирующих твитов, вы по-прежнему будете добавлять одну строку в две таблицы за один полученный твит.
По сути, это здорово, если перекрытие будет происходить много, и, как правило, имеет смысл, если вы хотите сохранить целостность своей базы данных. Однако, если размер базы данных является предметом рассмотрения, вы можете захотеть изучить другое решение.
Какова структура данных базы данных, на которую вы ссылаетесь? –
Перед сохранением вашей системы следует проверить значение TweetId. Если у вас уже есть это в БД, нет никаких причин снова его сохранять. – DaImTo
Вы можете проверить, существует ли tweet_id и хранить/обновлять список пользователей? – Vishal