База данных, которую мы разрабатываем, позволяет пользователям проходить проверку подлинности с помощью нескольких сторонних сервисов , в основном в социальных сетях (Twitter, Facebook и т. Д.).Там будет неизвестное и растущее число этих услуг.Каждый сервис требует уникальный набор данных для аутентификации, который не является стандартным для других сервисов .
Один пользователь может аутентифицировать многие сервисы , но они могут аутентифицироваться только с один из каждого типа из сервис .
ВозможноРешения:
A) Самое прямое решение этой проблемы - просто добавить столбец для каждой службы в пользовательскую таблицу , которая содержит аутентификацию JSON для этой службы.Однако это нарушает нормализацию, оставляя большое количество нулей в базе данных.Например, что происходит, когда существует 50 таких интеграций?
B) Каждый сервис получает свою собственную таблицу в базе данных.JSON больше не нужен, так как каждое поле может быть правильно описано.Затем для каждого сервиса необходима таблица соответствия «user_has_service».Это таблица, которая содержит только два внешних ключа, один для пользователя и один для службы, связывающих их вместе.Этот вариант кажется наиболее правильным, но он очень неэффективен и потребует многих операций, чтобы определить, какие сервисы имеет пользователь, увеличиваясь с увеличением количества сервисов.Я полагаю также, что в этом случае поле идентификатора для таблицы поиска должно быть неким хэшем user и service вместе, чтобы дублирующие вставки были невозможны.
Совсем не эксперт по базам данных, и я уже давно борюсь с этим.Есть мысли?