Nimex
@Nimex
Junior Frontend

Как правильно организовать структуру Backend'а?

Есть проект, к примеру суши-бар, с филиалами во многих городах.

Вопрос: Как правильно сделать организацию баз(ы) данных
  1. В одной базе данных где у каждого клиента будет foreign key (branchId) который указывает на филиал (город)
  2. Для каждого филиала (города) создать отдельную базу данных и проверять на сервере с какого филиала запрос и далее сортировать. Если так, то из этого вопроса выходит следующие вопросы:
    • Как на бэкенде используя sequelize (или без него) проверять из какого города запрос? Как по мне самый правильный вариант с помощью cookies
    • Как отделить эти контексты для операций с разными базами данными (К примеру чтобы не перечислять города с помощью if else для определения города чтобы к примеру добавить товар именно в эту базу).




Вот на данный момент есть единственный контекст (база данных) с которой работаю:
const dbName = String(process.env.DB_NAME)
const dbUser = String(process.env.DB_USER)
const dbHost = String(process.env.DB_HOST)
const dbDriver = String(process.env.DB_DRIVER) as Dialect
const dbPassword = String(process.env.DB_PASSWORD)
const dbPort = Number(process.env.DB_PORT || 5432)

export default new Sequelize(
    dbName,
    dbUser,
    dbPassword,
    {
        dialect: dbDriver,
        host: dbHost,
        port: dbPort,
        timezone: '+00:00',
        define: {
            timestamps: false
        }
    },
);
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
@Jack444
Если монолитная архитектура, то третья нормальная форма по дефолту везде стандарт при проектировании, города в отдельную таблицу закинь, филиалы отдельно и через многие ко многим свяжи их с доп инфой какая понадобится, например ип адреса филиала можно хранить и по ним авторизовывать, все остальные данные какие идут от филиала связывай с этой строчкой.

Если микросервисы, то принцип примерно тот же, но на 1 сервис одна база, на одном сервере храним таблицу городов с инфой о имеющихся там филиалах, в джейсонах или масивах, на каждом филиале храним свой инстац базы со всей инфой которая там происходит и по необходимости через API запрашиваем выборку по филиалу с других сервисов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Daemon23RUS
@Daemon23RUS
Вопрос: Как правильно сделать организацию баз(ы) данных

В одной базе данных где у каждого клиента будет foreign key (branchId) который указывает на филиал (город)
Как на бэкенде используя sequelize (или без него) проверять из какого города запрос? Как по мне самый правильный вариант с помощью cookies

Сессия (cookies)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы