We have a product through which we provide a standard definition to customer's asset data. The problem currently lies in importing customer's data from different types of data sources to our data model. I am looking for an option of exposing our data model to customers so that they can populate it accordingly. What are the pros and cons of this approach ? What are the different ways through which I can achieve this ? Any inputs would be greatly appreciated.
One obvious disadvantage is that no matter how good your data model is, it better suit your needs for years to come because you will have just set it in concrete.
I try not to even give app developers access to the the underlying data model. There is a "wall of abstraction" between users and the physical data. That wall is build from a wide variety of views. Just about any format that best fits the user's need can be provided. View triggers do the conversion behind the scenes.
Give your customers whatever logical model best suits their requirement in getting their data to you. So you have to convert it to your current actual model. It sure beats not being able to fix flaws or implement new designs in your database.
In my opinion, this would vary depending on what your responsibility is for the database. I wouldn't want to expose my data structure to them as they might be able to take advantage through injection and the like. Additionally, it would allow them to form adhoc queries and reports which will most likely cause performance issues that you now need to support.
My thought for inputting user data is to allow them to import CSVs, this would allow for a standard format you can give them and most other programs can export them.