I'm looking for tools to create a data dictionary for my project's data. We have a large database of many variables, and I would like to create a data dictionary that describes what each variable means so that I can share it with collaborators and other researchers (including on the Open Science Framework). I'd like other researchers to be able to use the data dictionary to understand the data we have, find the variables they need, etc. I'm not sure what tools/software/systems are available for this purpose, and whether I should just create a large spreadsheet to do this, or whether there are more specialized tools that people like for this purpose.

For a sense of what my data dictionary might include, here are suggested guidelines for what a data dictionary should include according to the Open Science Framework (https://help.osf.io/hc/en-us/articles/360019739054-How-to-Make-a-Data-Dictionary):

  • Variable name
  • Human-readable variable name
  • Variable type (string, numeric, integer, etc.)
  • Measurement unit
  • Allowed values
  • Definition and description of the variable
  • Note that "shopping questions" do not include recommendations for software solutions: academia.meta.stackexchange.com/a/3658/17886. As noted here (academia.meta.stackexchange.com/a/4679/17886), "Softwarerecs.se is a bad idea for specialized needs". I posted my question here rather than on Softwarerecs.se because my question deals with a specialized need. – itpetersen May 17 '20 at 18:11
  • 1
    How is this question different from "How do I make a database?" – Anonymous Physicist May 18 '20 at 6:55
  • A data dictionary is a specialized database in academic research. The needs will differ from other types of databases. – itpetersen May 18 '20 at 16:29

There are indeed some tools available for such 'metadata management'. You can find a list here: https://library.stanford.edu/research/data-management-services/data-best-practices/creating-metadata/metadata-tools


I would keep things simple and write a small script in Python (or your preferred language) to read and write entries with the desired fields to a JSON file. You could also do .csv, but JSON is nice a readable. Then place the script alongside the database in a shared repository so that you can grant access to anyone who needs to query or edit the database, and you have version control too :).

Even if you do not have any programming experience, I would be surprised if you didn't have a collaborator who could help you set up such a thing.

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