2014-02-05 2 views
0

У меня есть веб-приложение, которое тянет твиттер-каналы для учетных записей пользователей. Когда два человека следуют за одним и тем же человеком, твиты хранятся дважды в БД. Я хочу хранить каналы, показывая это только двум пользователям. Каково решение? Веб-приложение имеет PHP и MySQL.Два разных пользователя с разными учетными записями следуют за одним и тем же лицом в твиттере, а БД хранит те же каналы дважды. Как избежать?

+0

Какова структура данных базы данных, на которую вы ссылаетесь? –

+0

Перед сохранением вашей системы следует проверить значение TweetId. Если у вас уже есть это в БД, нет никаких причин снова его сохранять. – DaImTo

+0

Вы можете проверить, существует ли tweet_id и хранить/обновлять список пользователей? – Vishal

ответ

0

Решение состоит в том, чтобы иметь две таблицы: одну, которая хранит твиты, и таблицу соединений, которая связывает пользователя и твиты, которые они имеют на своем канале.

Чтобы разбить ситуацию, вы хотите, чтобы один пользователь имел доступ ко многим твитам и один твит, который будет видно многим пользователям. Это называется 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 

Таким образом, один пользователь может быть связан с имеющих несколько твитов на их потоке, и чириканье может быть связано с рассматриваться несколькими пользователями.

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

По сути, это здорово, если перекрытие будет происходить много, и, как правило, имеет смысл, если вы хотите сохранить целостность своей базы данных. Однако, если размер базы данных является предметом рассмотрения, вы можете захотеть изучить другое решение.

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