The concept of normalisation and the definition of third normal form occupy a central place in the relational model of database. Normalisation has been described as an analytic process in which an initially unconstrained collection of relations is successively decomposed into a collection of smaller relations satisfying the constraints of the three normal forms. Normalised relations constitute the basis on which data manipulation languages - relational algebra, relational calculus and others - have been defined. As yet, however, there is no generally recognised data definition language for the relational model. A pre-requisite for this would be a constructive definition of third normal form, that is, a definition in terms of rules for building normalised relations from simple domains. This paper considers how such a definition may be achieved by applying two ideas derived from the study of programming languages; the notion of data type, and the notion of a selector as used in formal language definition. The result is an abstract syntax of relations. This is compared with the standard definition of normalisation and its completeness is critically examined.