Таблица на клиента в базе данных

Мы разрабатываем сервис, где для каждого клиента пользователь может записаться на прием. Есть ли стратегия - таблица в базе данных (MS SQL SERVER) для каждого клиента будет правильной?

Мы считаем, что такая стратегия упрощает и исключает сложную блокировку таблиц.

1 ответ

Похоже, вы пытаетесь создать мультитенантное приложение. Я бы не рекомендовал одну таблицу для каждого клиента. Скорее, я бы рекомендовал одно из двух решений:

  1. Объедините все данные клиента (арендаторов) в одни и те же таблицы и разделите их по идентификатору. Другими словами, каждая таблица верхнего уровня будет иметь внешний ключ с именем "ClientId" или "TenantId", который будет идентифицировать и разделять данные каждого клиента. Недостатком этого подхода является то, что база данных становится намного больше быстрее, а большие базы данных сложнее в управлении, чем меньшие. Кроме того, существует риск того, что разработчик создаст запрос, который забудет отфильтровать его по ClientId, и один клиент увидит данные другого клиента.

  2. Одна база данных на клиента. Более экстремальное решение, но полезное, если клиенты будут размещать свои собственные приложения, если существует большая разница в размерах данных каждого клиента, или если клиент хочет абсолютной гарантии разделения данных.

Другие вопросы по тегам