Таблица на клиента в базе данных
Мы разрабатываем сервис, где для каждого клиента пользователь может записаться на прием. Есть ли стратегия - таблица в базе данных (MS SQL SERVER) для каждого клиента будет правильной?
Мы считаем, что такая стратегия упрощает и исключает сложную блокировку таблиц.
1 ответ
Похоже, вы пытаетесь создать мультитенантное приложение. Я бы не рекомендовал одну таблицу для каждого клиента. Скорее, я бы рекомендовал одно из двух решений:
Объедините все данные клиента (арендаторов) в одни и те же таблицы и разделите их по идентификатору. Другими словами, каждая таблица верхнего уровня будет иметь внешний ключ с именем "ClientId" или "TenantId", который будет идентифицировать и разделять данные каждого клиента. Недостатком этого подхода является то, что база данных становится намного больше быстрее, а большие базы данных сложнее в управлении, чем меньшие. Кроме того, существует риск того, что разработчик создаст запрос, который забудет отфильтровать его по ClientId, и один клиент увидит данные другого клиента.
Одна база данных на клиента. Более экстремальное решение, но полезное, если клиенты будут размещать свои собственные приложения, если существует большая разница в размерах данных каждого клиента, или если клиент хочет абсолютной гарантии разделения данных.