What are everyone's opinions on normalizing a database out across multiple databases. For instance, say you had a database that allowed different clients to sell products. You had abstracted the concept of an order, order item, etc., but each client wants a different field added here or there.
You could add the fields to the specific table, creating a wide table that had values in it that not all clients utilized, or you could create a tall table that listed a column-name and value so as to make it appear that you are appending on columns to a specific object (for instance, wanting a Home phone number on the order table when there only exists a Work phone number).
Or you could normalize out to a client specific database that has a table called CustomOrder that keeps the original order id from the generic database and then adds the columns necessary to accomodate the client.
Has anybody used a solution like this? I know referential integrity would be hard to control across databases, but it does keep the original generic database small and lean while allowing clients to customize to their hearts contents.
What are everyone's thoughts on this type of design?