Един въпрос, на който бих искал да отговоря, е дали някога трябва да виждате данни за потребители за собствено отчитане или използване? В този случай трябва да изберете номер едно или ще имате кошмар, за да получите добър отчет.
Ще правите ли някаква персонализация от клиента? Това би означавало, че отделянето на нещата може да е по-добър избор. Ако никога няма да персонализирате, тогава не се отделяйте.
Работил съм със системи във всички тези опции и първата е най-добрата за дългосрочна поддръжка. Всички обаче са изпълними, ако сте организирани и планирате добре. Ако изберете отделната опция, трябва да можете да изпращате промени към всички клиенти и по този начин трябва да правите промени в базата данни чрез скриптове, които се съхраняват в контрола на източника. Може дори да се наложи да запазите контрол на източника по версия на базата данни, така че клиентите да могат да избират да надстроят или не. При вариант 1, разбира се, никой няма възможност да остане на старата версия. Ако това отговаря по-добре на нуждите на вашия бизнес, това е плюс за опция 1.
Напълно съм съгласен с Оли Джоунс, ако използвате опция първа, трябва да имате добър дизайн за защита на базата данни, за да предотвратите клиентите да виждат данните на други клиенти. Веднъж преместихме клиент от сървър, където те бяха единственият клиент, към споделена база данни и само една процедура, която пропусна да поиска client_ID (той не беше необходим в старата система и разработчиците бяха небрежни) в крайна сметка изпрати всички имейли търговски представители на всички останали клиенти с информация за първия клиент. Това струваше на компанията много пари (и двете за отстраняване на проблема, за изпращане на извинения по имейл и в резултат почти загубихме клиент и трябваше да им дадем някои прекъсвания на разходите, за да ги задържи) и много тъжни извинения и разработчикът просто се намеси пропусна да загуби работата си. Нека това бъде урок, който не научавате по трудния начин.