1. A method comprising: receiving, by one or more computer processors from a computer readable storage medium, a denormalized dataset including a denormalized dataset primary key and one or more denormalized dataset secondary keys; identifying, by the one or more computer processors, one or more normalized datasets associated with each of the one or more denormalized dataset secondary keys; creating, by the one or more computer processors, a denormalized table, wherein a denormalized table primary key corresponds to the denormalized dataset primary key; receiving, by the one or more computer processors, a query for execution on data included in the denormalized table; for each of the one or more normalized datasets: identifying, by the one or more computer processors, a denormalized table secondary key in the denormalized table; creating, by the one or more computer processors, at least one normalized table, wherein a foreign key of the at least one normalized table corresponds to the primary key of a respective normalized dataset, and a primary key of the at least one normalized table corresponds to the denormalized table secondary key, whereby the at least one normalized table includes less redundant data than the denormalized table; delimiting, by the one or more computer processors, fields in the at least one normalized table using the foreign key of the at least one normalized table, wherein delimiting comprises using the secondary key in the denormalized table as the primary key in the normalized table; transforming, by the one or more computer processors, the received query for execution on data included in the at least one normalized table created for each of the one or more normalized datasets based on the delimited fields and removing duplicate entries from the fields in the at least one normalized table; executing, by the one or more computer processors, the transformed query; and returning, by the one or more computer processors, a result for the transformed query.