Kleindberg
@Kleindberg
Full stack

Создать несколько таблиц или попробовать унифицировать?

Подскажите, как бы вы поступили в такой ситуации.

Проектирую базу данных, нужно создать таблицу (или таблицы), которая будет хранить данные для подключения к различным API.

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

Попытаться унифицировать все и создать одну таблицу, но с максимальным количеством полей (ненужные проставить как NULL), либо разделить на несколько таблиц - для каждого поставщика API своя таблица?

Также возникла идея создать одну таблицу по типу settings и в ней хранить три поля: id, название параметра, значение параметра, а нужные данные извлекать по префиксу api_имя-провайдера_имя-параметра (но в таком случае, скорее всего, понадобиться таблица с именами провайдеров).

Буду благодарен за любые идеи и наставления :)
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
json поле.
Данные авторизации нужны только конкретному коду, работающему с этой авторизацией. Искать по токену авторизации, какому же сервису API принадлежит этот токен вы ведь не будете всё равно. (хотя и так можно будет при желании и достаточно современной СУБД)

но в таком случае, скорее всего, понадобиться таблица с именами провайдеров

А она у вас всё равно есть или будет.
Хоть вы сами работаете с API и к каждому сервису максимум один комплект данных авторизации (таблица, где будут ключи храниться и будет такой таблицей с именами провайдеров). Хоть вы даёте своим пользователям возможность добавить API себе - тогда у вас будет табличка user_id, api_provider_id, credentials
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы