Both pieces are put together in one, large object, called a Model, which defines the entire database build procedure, both instantiating the database and populating it. Attributes: Attributes, define the columns of each database table. They have a name, a description, and a data type. Attributes in DBgen can be either "identifying" or "non-identifying." The information stored in the identifying columns are necessary and sufficient to identify exactly one row in a given table. DBgen disallows the existence of two rows in the same table with the same identifying data. For example, in a table of movies, one could decide to make the title and release date Attributes identifying. In DBgen, this would guarantee that a query for a specific title and release date would return no more than one row, and DBgen would also require a title and a release date to create a row in the table. There may be many other non-identifying Attributes, like duration and average critic rating. Although the back-end details are different, this concept is analogous to a composite primary key.