1. A method of defining a business object model comprising: defining a plurality of named logical types, field-sets, business objects and sub-objects, structures and enumerations that are referenced in the model by their names, wherein defining the business objects further comprises listing the plurality of their fields, each field having a type attribute referencing a logical type defined in the model, and field-sets, each field-set referencing a corresponding field-set defined in the model and the plurality of business object operations and sub-objects; wherein defining business objects and sub-objects further comprises marking a single field or a field-set with a key attribute, which indicates that the key is serial (for fields only), or is user-supplied, or is a reference to another object's key attribute; and wherein no two objects can both have their key fields marked as serial or marked as user-supplied with the same logical types, and wherein no two objects can both have their key field-sets marked as user-supplied and as referencing the same field-set defined in the business object model.