@DarkSir

Как правильно проектировать взаимосвязь API и БД?

Я заметил несколько проблем в приложение, и хотел бы понять как их решить:

1. Бэкенд обращается к БД и получает какие-то поля, после работает с ними как есть. То-есть если пришло поле и называется допусти sum, то оно далее в приложение будет везде использоваться как sum. Как мне кажется тут появляется зависимость от БД, и любые изменения требую изменения БД.

2. Из предыдущего вытекает то, что поля которые приходят при запросе на API называются также как и везде на бэкенде, которые зависят от названия в БД. То-есть получается сквозная зависимость API от БД.

3. Некоторые запросы на API это практически сходить в БД, потому что за этим запросом стоит SQL запрос в базу и получаем то, что от туда пришло.

Собственно на сколько всё это правильно? Возможно это вообще норм. И какие походы, инструменты и тд. можно и следует изучить для решения этих проблем?
  • Вопрос задан
  • 520 просмотров
Решения вопроса 2
@mikaakim
Веб-разработчик ПО
Предлагаю вам изучить паттерны проектирования корпоративных приложений Мартина Фаулера. В книге разбирают подходы для различных вариантов построения архитектуры. Лучше на английском.
Ответ написан
Комментировать
@stratosmi
Если вы ничего не делаете, если просто ставите на СУБД прокладку, которая сама генерирует API по структуре БД (автоматически) - тогда взаимосвязь есть.

Иначе - вовсе нет взаимосвязи. И не надо. См. Дядюшка Бо "Чистая архитектура". Там небольшой объем - осильте. Есть переводы на русский язык и адаптации под конкретные языки программирования.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
и любые изменения требую изменения БД.
нет
СУБД хранилище - валидных данных в 3 нормальной форме (3NF). Точка

Между БД и апи всегда есть прокладка в виде бекенда - там делайте что хотите (что проще сделать на ЯП, а не на сиквеле)

3. Ок. Ходите и не смущайтесь. Используйте ОРМ
Ответ написан
Комментировать
@kuftachev
Есть два подхода Code first и Database first, разные инструменты могут реализовывать один или оба. В первом структура БД определяется кодом, а во втором наоборот.

Имя поля/столбца можно подменить, но если в место sum будет что-то другое, что это для Вас поменяет?

А вообще, все зависит от задачи. Могут в БД хранится данные, а потом на уровне сервисов производится преобразования, которые дают данным новое качество. Поэтому учитесь думать не кодом, а задачей, которую Вы решаете.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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