1. A method for automatically generating an end-user interface for working with the data within any arbitrary relational database, regardless of the size or complexity of said database, wherein said database comprises a plurality of tables, constraints and relationships, comprising: (a) interrogating said database, and extracting therefrom information specifying its table structures, constraints and relationships; and (b) using said information to construct a corresponding client application.