1. A method of modeling an arbitrarily complex environment, comprising: providing a system comprising a computer for defining a data model having a set of data structures comprising components and relationships and a database for storing a table for each type of data structure in the data model including a component table for storing components, the component table comprising a component type column, a component type table which defines a set of component types, wherein the component type column of the component table links a defined component to a component type, a relationship table for storing relationship, the relationship table comprising a relationship type column and at least one component ID column wherein the relationship is associated with at least one component in the component table through at least one component ID columns, and a relationship type table which defines a set of relationship types, wherein the relationship type column of the relationship table links a defined relationship to a relationship type; representing an environment using the data model, wherein representing the environment comprises instantiating components from the plurality of component types to represent a first set of entities in the environment and storing the instantiated components in the component table; instantiating relationships to represent relationships associated with the first set of entities and storing the instantiated relationships in the relationship table; and linking each relationship to at least one component in the component table using the at least one component ID column associated with that relationship.