Et spørgsmål, jeg gerne vil have svar på, er, har du nogensinde brug for at se data på tværs af kunder til din egen rapportering eller brug? I dette tilfælde skal du gå med nummer et, ellers vil du have et mareridt for at få god rapportering.
Vil du foretage nogen tilpasning af kunden? Dette tyder på, at det kan være et bedre valg at adskille tingene. Hvis du aldrig vil tilpasse, skal du ikke skille dig ud.
Jeg har arbejdet med systemer i alle disse muligheder, og den første er langt den bedste til langsigtet vedligeholdelse. Men alle er brugbare, hvis du er organiseret og planlægger godt. Hvis du går efter den separate mulighed, skal du være i stand til at skubbe ændringer til alle klienter og skal derfor foretage ændringer i databasen gennem scripts, der holdes i kildekontrol. Du skal måske endda beholde en kildekontrol efter databaseversion, så klienter kan vælge at opgradere eller ej. I mulighed 1 er der selvfølgelig ingen, der har mulighed for at blive på den gamle version. Hvis det passer bedre til din virksomheds behov, er det et plus for mulighed 1.
Jeg er meget enig med Ollie Jones, hvis du bruger mulighed 1, skal du have et godt databasesikkerhedsdesign for at forhindre klienter i at se andre klienters data. Vi flyttede engang en klient fra en server, hvor de var den eneste klient til en delt database, og kun en proc, der savnede at spørge efter client_ID (det var ikke nødvendigt i det gamle system, og udviklerne var blevet sjusket) endte med at sende en e-mail til alle de sælgere for alle de andre kunder med information om den første klient. Dette kostede virksomheden en masse penge (både for at løse problemet, for at sende undskyldninger via e-mail, og vi mistede næsten en klient som et resultat og måtte give dem nogle omkostningspauser for at beholde dem) og mange grublende undskyldninger og udvikleren bare snævert savnede at miste sit job. Lad dette være en lektie, du ikke lærer på den hårde måde.