Do the customers have the same data in both tables? If so then partitioning the data into separate schemas is really a database design, not an architectural one. If the data is different then I'm curious how your app is going to make any of this overly usable. For example, supposed CustomerA has an Address field but CustomerB does not. Is your UX going to be coded to handle either set of data and then determine which to show based upon some indicators? That seems like a lot of work when you could just store the same data for both sets of customers and then just pull from the appropriate tables instead.
There are many different ways to go here and since we don't have insight into all your requirements then we would be guessing about what might or might not work. At a minimum I would recommend introducing an interface or base class Customer
that contains the shared set of data. Return this from anything in the system that needs a customer. Create derived types for each unique customer type that expands on the data to expose the specifics. This is pretty standard for normalizing data such as in authentication systems, database providers, etc.
If the data between both are similar then consider exposing all the data from your base Customer type and then just fill in what is available depending upon which customer you're dealing with. For example customer A might set the Address
property and the SupportsAddress
property but customer B would not since it doesn't support an address. This normalizes the data and tends to make it easier to build more generic UXs from but as the differences expand then it becomes harder to maintain.