Один вопрос, на который я хотел бы получить ответ, - вам когда-нибудь нужно просматривать данные по всем пользователям для ваших собственных отчетов или использования? В этом случае вам нужно пойти с номером один, иначе у вас будет кошмар, чтобы получить хорошие репортажи.
Будете ли вы делать какие-либо настройки для клиента? Это указывало бы на то, что выделение может быть лучшим выбором. Если вы никогда не будете настраивать, не отделяйте.
Я работал с системами во всех этих вариантах, и первый, безусловно, лучший для долгосрочного обслуживания. Однако все это выполнимо, если вы организованы и планируете хорошо. Если вы выберете отдельный вариант, вы должны иметь возможность передавать изменения всем клиентам и, следовательно, вносить изменения в базу данных с помощью сценариев, которые хранятся в системе контроля версий. Возможно, вам даже потребуется сохранить контроль версий в зависимости от версии базы данных, чтобы клиенты могли выбирать, обновлять их или нет. В варианте 1, конечно, никто не имеет возможности остаться на старой версии. Если это лучше соответствует потребностям вашего бизнеса, это плюс для варианта 1.
Я полностью согласен с Олли Джонсом: если вы используете первый вариант, у вас должен быть хороший дизайн защиты базы данных, чтобы клиенты не могли видеть данные других клиентов. Однажды мы переместили клиента с сервера, где он был единственным клиентом, в общую базу данных, и только один процесс, который пропустил запрос client_ID (в старой системе это было не нужно, а разработчики получили небрежные данные), отправил по электронной почте всем торговые представители всех других клиентов с информацией о первом клиенте. Это стоило компании больших денег (как для решения проблемы, так и для рассылки извинений по электронной почте, в результате чего мы почти потеряли клиента и вынуждены были предоставить им несколько перерывов на их содержание), и многие извинялись за извинения, а разработчик - лишь в узких пределах. пропустил потерю работы. Пусть это будет уроком, который ты не выучишь трудным путем.