Для части разработки db я бы рекомендовал использовать концепцию таблицы соединений / соединений , за исключением того, что в этом случае вы присоединяете таблицу к себе. Например, если ваша пользовательская таблица выглядит примерно так:
UserId UserName
------ --------
1 User Uno
2 User Dos
...
Тогда ваша таблица соединения будет выглядеть примерно так:
UserIdA UserIdB AffinityScore
------ -------- -------------
1 2 56
34 208 137
где UserIdA и UserIdB являются внешними ключами для UserId в первой таблице. (Вы должны проверить и убедиться, что после установки UidA и UidB, например, значений 1 и 2 соответственно, что связь не повторяется, если значения меняются местами, например, значения 2 и 1 соответственно для UidA и UidB, что может некоторые странности в приложении. Вы можете использовать ограничение CHECK, если используете Sql Server или MySql .)
Что касается концепции таблицы соединений, то выбор db не имеет значения. Это просто таблица с внешними ключами. А для выполнения фоновых обновлений это зависит от вашей платформы. Это может быть задание cron, инициирующее исполняемый файл или SSIS (Sql Server), на котором выполняется сценарий T-Sql, и многое другое.