1. An abstraction layer for a database containing database records each including a plurality of fields stored in one or more tables, the fields being associated with the record by a key disposed in at least one key column of each of the one or more tables, the abstraction layer including: a key column identifier that identifies the at least one key column; and one or more metadata tables containing metadata relating to the database, the one or more metadata tables including at least: a controls table containing control records corresponding to fields of the database, the control record for each field including at least a control key associating the control record with the field and at least one metadatum corresponding to the field.