I'm seeking your advice and / or experience about why and how for the following:
Let says you're developing a software. That software has core features that can be augmented with additional "selectable" (a la carte), from a marketing perspective, options.
Core features are always active.
For instance you could have that scenario:
Customer #1: Core features + option A, B, D
Customer #2: Core features
Customer #3: Core features + option D
Which database approach / design would you use and why?
- All features always available inside the database (therefore each deployment has always everything, same schema everywhere, but options are enable or disable by the application somewhere else)
- Only usable options that the customer paid for are deployed in the database, therefore the database schema (tables, sp, views, indexes, name it) is different from installation having different option selected.
In the example above, all 3 customers will have distinct database schema.
Customer #4: Core features + option D will have the exact same schema as Customer #3
I tend to see the "all features available" with far less maintenance overhead but I'm seeking advices and experience on that topic in case of something I might overlook.