Самый эффективный способ обновить таблицу базы данных на основе предыдущих записей и внешних данных? - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть база данных mysql user_add, в которой записи означают пользователей, следующих друг за другом в социальной сети:

 id   | user_id | friend_id | time
 102  |  423    |   2A1     | 12:00
 103  |  2A1    |   423     | 12:01

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

У меня есть массив $ usergroup, в котором перечислены все идентификаторы user_id в этой группе.

Мой подход был бы к


$stmt = $pdo->prepare('INSERT INTO user_add (user_id, friend_id, time) VALUES (?,?,?));

foreach($usergroup as $user){
   foreach($usergroup as $friend){
      if($user != $friend){
         $stmt->execute(array($user,$friend,date('H:i')));
      }
   }
}

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

Как мне лучше всего иметь скрипт, который автоматически заставляет всех пользователей в группе следовать за всеми остальными и регулярно обновлять без повторяющихся записей?

У меня было бы несколько идей, как это сделать:

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

2: Создать логический столбец «автоматический» для записей, где автоматические записи помечены. С каждым обновлением все записи, помеченные автоматически, удаляются и создаются заново. Лучше, чем 1, но все же, безусловно, не лучший результат.

3: создавать новые записи только в том случае, если ранее не было записей. Но как мне это сделать?

Я настоящий нуб в PHP и SQL, и я уверен, что есть очевидные и очень эффективные способы сделать то, что я хочу, вы, ребята, можете мне помочь?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...