таблица на клиента в базе данных - PullRequest
0 голосов
/ 20 апреля 2011

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

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

1 Ответ

0 голосов
/ 20 апреля 2011

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

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

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

...