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.

  • 2
    Are you liable in any way of a customer imports rubbish and/or error causing rows? Does the import table have sufficient constraints, foreign keys, unique constraints, check constraints to stop people importing rubbish? For example if you have a report which joins on a field, and the field is incorrectly duplicated, it will duplicated all joined tables as well, causing incorrect data. – Nick.McDermaid Apr 24 '15 at 5:11
  • 2
    Keep your friends close, your enemies closer and your customers closer still! :-). If you are going to embark on this (perilous) route, then as @Nick.McDermaid hints, lock it down and lock it down tight. Plus, cover thine ass - make sure that any mistakes are theirs and theirs alone and that they and they alone take responsibility for their own mistakes. From a veteran in those particular trenches. – Vérace Apr 24 '15 at 5:21

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.